“当RS=0,R/W=1是执行读取的操作,这时候,LCM的忙碌标志BF将放置在数据总线上的D7位,而LCM的地址计数器内容也将放置在数据总线上的D6~D0位,分别为A6 A5 A4 A3 A2 A1 A0。整个执行过程需要40us。”
下面是我的代码:
CHECK_BF: PUSH ACC
BUSY: CLR RS
SETB RW
SETB EN
NOP ;注意延时
MOV A,LCD
CLR EN
JB ACC.7,BUSY
CALL DELAY
POP ACC RET ;============================================================
问题是:为什么资料上说需要40us才能完成此过程,而我仅仅一个NOP,NOP不是一个机器周期吗,我用的是51,12MHZ,那就是1us了。这样就可以正常显示了。
我把这个NOP去掉就不可以正常显示。