本帖最后由 Mindist 于 2009-10-15 22:31 编辑
如题~我用想读取lcd12864的并行口数据,发现有的程序把IO口拉高了,有的没有耶~
代码如下:
(BF=P0^7)
//************ 读忙信号 **************
bit busy()
{
bit isbusy;
P0 = 0xff;
LCD_RS = 0;
LCD_RW=1;
LCD_EN=0;
LCD_EN=1;
_nop_();
_nop_();
isbusy=BF;
LCD_EN=0;
return isbusy;
}
//************* 读数据 **************
//*** LCD_RS = 1,LCD_RW = 1,LCD_EN = 1 ***
uchar lcd_read()
{
uchar dat;
while(busy());
LCD_RS = 1;
LCD_RW = 1;
LCD_EN = 1;
_nop_();
_nop_();
dat = P0;
LCD_EN = 0;
return dat;
}
前一个读忙前是拉高了,后一个读数据前有读忙,但是读忙后那一位忙标志不就又被拉低了,这样不用再重新拉高吗?
还有一个问题,其实测忙是不是可以不用这么麻烦,直接while(BF==1)这样不就行了吗?(BF=P0^7)。。。请电友们赐教~ |