暑假大概看了一下单片机,走马观花式的,不过感觉对它的整理了解还可以 这两天仔细看了下单片机编程的程序,跳跃式的过来过去的翻着那本书,感觉有了点小感悟 单片机,最强大的还是她的位操作!
我们学生一般用的51单片机是八位的,而八位恰好一个字节,在寻址方式里按字节寻址我感触不大,因为比较常见吧 单片机的sfr,也就是特殊功能寄存器,在单片机设计之初的目的应该是方便控制所以大部分sfr可以直接位寻址 这里的位寻址其实也就是可以直接对某些sfr的位直接访问,这对于控制很方便
举几个例子,对于单片机的内部资源,定时器T0,T1和中断IE,中断优先IP 这些sfr的位都有特定的含义,参看单片机的书可以了解到有的位是选择工作方式的,有的是检测工作状态的,对于置位操作可以很快且高效地控制相关资源的使用
计算机只认0,1吧,单片机作为简单的计算机,麻雀虽小,五脏俱全哦 那么你与单片机交流最简单高效地方法就是01串了,不过处理2进制比较麻烦,所以单片机一般处理16进制数据 这样看起来比较简约
对于单片机的位定义,bit和sbit很自由,只要你定义的位在可位寻址的区域,那么就OK了 位定义和宏定义结合起来使用,可以大大增强程序的可读性
说个实际点的例子,比如我要选择T0的工作方式2 那么我可以写TMOD=0x02;二进制下就是00000010 看下TMOD的D0-D7的定义,自然你就知道了这个方式是怎么实现的 还有包括IE中的中断操作,用|或&很方便
在学习单片机之初,跑马灯的程序很经典,一般都会以<<实现灯轮流亮,这个便是位中的移位操作,通过<<或>>改变状态很是快捷~~
本来想要把一些实例写出来,后来想等时间多了再好好钻研下 计算机的位操作之美很是让人陶醉!
继续研究……