一段单片机c程序: void busy(void) { P1=0xff; RS=0; RW=1; E=1; while((P1&0x80)==0x80); E=0; } 求解

2024-12-03 16:19:50
推荐回答(4个)
回答1:

这段程序应该是用于检测LCD屏的“忙”信号的。工作原理:

  1. 首先要了解:当LCD“忙”时,LCD的DATA.7位输出为高电平信号,当LCD“不忙”时,LCD的DATA.7位输出为低电平信号。

  2. 当单片机向LCD写入RS=0; RW=1; E=1;这时单片机告诉LCD,将要检测“忙”信号

  3. P1=0xff; 是为了便于检测

  4. while((P1&0x80)==0x80),就是在等第一点所说的“不忙”信号。

供参考。

回答2:

这是1602液晶上用来判断液晶是否“忙碌”的程序,P1=0xFF是为了让单片机能读取1602输出的状态,然后反复读取判断最高位,如果最高位为0就表示液晶处于空闲状态,可以接受新的命令或数据。

回答3:

P1.7口接的是外部控制吧,比如说一个接地的按键? 有按键按下就会退出了。 或者是某个器件的输出脚,表示器件状态的变化,这个变化是发生在单片机外的,不由单片机控制,所以要死循环等待

回答4:

就是在P1_7端口为高电平时继续循环,变为低电平时跳出循环。