众所周知,51单片机可以进行位寻址,例如P1^2=0;
在430单片机的IO不可进行位寻址,则常用
#define DIN0 P4OUT&=~BIT5; 输出低电平
#define DIN1 P4OUT|= BIT5; 输出高电平
#define DOUT P4IN&BIT6; 定义为输入端口
来定义,由于头文件#include <msp430x16x.h> 中已经包含了定义
#define BIT0 (0x0001),因此常用上述定义来位寻址。
当然,也可以不用BIT符号来定义例如,
#define LCD_CS0 P4OUT&=~(1<<2)
#define LCD_CS1 P4OUT|=(1<<2)
#define LCD_DATA0 P4OUT&=~(1<<1)
#define LCD_DATA1 P4OUT|=(1<<1)
与430单片机类似,AVR单片机的IO也不具备位寻址的能力,常用
#define DIN0 P4OUT&=~BIT(5); 输出低电平
#define DIN1 P4OUT|= BIT(5); 输出高电平
来定义,这是由于其头文件 #include <macros.h> 中已定义
#define BIT(x) (1 << (x)),当然我们也可以不用这个定义,就如同430中提到的直接定义
#define LCD_DATA0P4OUT&=~(1<<1)
#define LCD_DATA1 P4OUT|=(1<<1)
以上就是这三种单片机一般IO操作时定义的基本方法和区别。