单片机C语言的位操作在标准C语言腮红是没有涉及到的,但是在单片机C编程中非常常用和重要。
如果要定义PORTB7为输入口,可以用总线方式定义,当然也可以位操作定义。如DDRB=0x00
(将B端口所有的都设置为了输入);也可以用DDRB|=(1<<PB7),后者虽然看似麻烦,但是避免了
整一个端口的定义,也就是说,这个定义只影响PB7这个端口,而不影响到其他的端口。这也是后者的
优势所在。
下面来看看iom64.h中的C编程头文件定义:
/* Port B Data Register - PORTB */
#define PB7 7
#define PB6 6
#define PB5 5
#define PB4 4
#define PB3 3
#define PB2 2
#define PB1 1
#define PB0 0
还有一段代码是这样的:#define PORTB _SFR_(0X02) //记不清楚了,可以自己查一下
这段代码的意思是定义了一个类似标识符的东西,让这个标识符和0x02这个硬件上的物理地址
对应起来。
可以看到:1<<PB7也就是1左移了7位,在头文件中的宏定义可以自己改变。当然最好不要改变,呵呵。
有一些标准还是要遵循的,比如说在标准C语言中i,j,k一般用来当做循环体中的循环变量。而a一般
用来当做数组的变量名(当然在单片机中很少用到这么简单的变量名),m,n一般用作整形变量的变
量名,当然世事无绝对,呵呵,形成一种规范,或者说一种风格比较好。
【每天进步一点点,让优秀成为一种习惯】
一家之言哈,欢迎拍砖!