单片机控制12864液晶的状态函数(检查busy位)怎么写

void checkbusy()
{
unsigned char dat;
d_i=0;
r_w=1;
do
{
P0=0x00;
e=1;
dat=P0;
e=0;
dat=0x80 & dat;
}
while(!(dat==0x00));
}
有人这么写,P0为什么赋予0x00呢?麻烦高人帮我写一个check_busy()函数吧 谢谢啦
不要复制别人的好吧,我只想要个检查busy位的 读状态函数 就行了 谢谢各路高人麻烦指导一下我把

第1个回答  2010-10-14
/**********************************************************************
* 名称 : WriteCom()
* 功能 : 写命令函数
* 输入 : 无
* 输出 : 无
* 说明 : _nop_指令起延时作用,晶振为12MHz时候,延时时长的计算公式如下
T=1/(12M/12分频)
************************************************-***********************/
void WriteCom(uchar Com)
{
uchar LCDtemp=0x00; /*设置初值为0,全部为低,方便后面的判忙*/
RS=0; /*根据时序图拉低,选择写指令*/
RW=1; /*根据时序图拉低,选择写模式*/
do
{
EN=1; /*使能,使液晶输出信号,检查是否忙*/
_nop_();_nop_();_nop_();_nop_();/*延时4US*/
LCDtemp=P1; /*把P1口的状态值读回来给temp*/
EN=0; /*使能端跳变*/;
}
while(LCDtemp&0x80); /*结果的高位保留,如果高位DB7为一,则表示忙*/
RS=0; /*指令模式*/
RW=0; /*写模式*/
EN=0; /*使能*/
_nop_();_nop_(); /*延时2US*/
P1=Com; /*注意数据方向,写时IO口位置在前,读时IO口位置在后*/
_nop_();_nop_();_nop_();_nop_();/*延时4US*/
EN=1; /*使能拉高*/
_nop_();_nop_();_nop_();_nop_();/*延时4US*/
EN=0; /*使能拉低*/
}
/**********************************************************************
* 名称 : WriteData()
* 功能 : 写数据函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void WriteData(uchar Data)
{
uchar LCDtemp=0x00; /*设置初值为0,全部为低,方便后面的判忙*/
RS=0; /*根据时序图拉低,选择写指令*/
RW=1; /*根据时序图拉低,选择写模式*/
do
{
EN=1; /*使能拉高*/
_nop_();_nop_();_nop_();_nop_();/*延时4US*/
LCDtemp=P1; /*把P2口的状态值读回来给temp*/
EN=0; /*使能拉低*/
}
while(LCDtemp&0x80); /*结果的高位保留,如果高位DB7为一,则表示忙*/
RS=1; /*选择数据模式*/
RW=0; /*选择写模式*/
EN=0; /*使能拉低*/
_nop_();_nop_(); /*延时2US*/
P1=Data; /*注意数据方向,写时IO口位置在前,读时IO口位置在后*/
_nop_();_nop_();_nop_();_nop_();/*延时4US*/
EN=1; /*使能拉高*/
_nop_();_nop_();_nop_();_nop_();/*延时4US*/
EN=0; /*使能拉低*/
}本回答被提问者采纳