430怎么像51那样对I/O口自由的进行位操作
以前用的51,现在要改用430。51中1602液晶屏显示我对I/O口的定义都在头文件中#define LCD_DATA P0 //LCD的数据口
sbit LCD_BUSY=LCD_DATA^7;//LCD忙信号位
sbit LCD_RW=P2^0; //LCD读写控制
sbit LCD_RS=P2^1; //LCD寄存器选择
sbit LCD_EN=P2^2; //LCD使能信号
现在要移植到430中请问这些宏怎么去定义? P0^7作为忙检测口,在430中如何定义宏?
#define LCD_BUSY P0DIR;P0IN|=BIT7是不是只能这样设置?那设置后在.C文件又该怎么判断是否忙呢?
if(!LCD_BUSY) 51中可以这样判断430中要如何改? 430中宏设置错了#define LCD_BUSY P0DIR设置为输入方向 这个还算简单 请教---------怎么在.C中判断忙检测 才转的430 什么都不懂啊 选设置IO端口为输入模式,然后读取Value=PORT;
if(!(Value&0x80)) 430没有位定义,只能用楼上 与 或的方式。或者还可以用位域,好像效率也不高,我也没有试过。 有点懂了,我再看看,谢谢热心牛人们 &,与
|,或
^,异或
是标准C的位操作实现方式。 P1OUT |=BIT0; 相当于 P1.0=1
P1OUT &=~BIT0; 相当于 P1.0=0
以此类推 回复【楼主位】cumtgao
-----------------------------------------------------------------------
#define set_LCD_RW P2OUT |=BIT0;
#define clear_LCD_RW P2OUT &=~BIT0; #define RS_HIGH P1OUT|=BIT0 //指令数据选择信号
#define RS_LOW P1OUT&=~BIT0
#define RW_HIGH P1OUT|=BIT1 //读写信号
#define RW_LOW P1OUT&=~BIT1
#define E_HIGH P1OUT|=BIT2 //使能信号
#define E_LOW P1OUT&=~BIT2
页:
[1]