本帖最后由 mhjerry 于 2011-7-8 20:43 编辑
为什么资料上说需要40us才能完成此过程,而我仅仅一个NOP,NOP不是一个机器周期吗,我用的是51,12MHZ,那就是1us了,就解决问题了,纠结中~~~
判断液晶是否处于忙状态,即判断BF的值。根据资料:
“当RS=0,R/W=1是执行读取的操作,这时候,LCM的忙碌标志BF将放置在数据总线上的D7位。。。整个执行过程需要40us。”
下面是我的代码:
CHECK_BF:
PUSH ACC
BUSY: CLR RS ;RS清零
SETB RW ;RW置为1
SETB EN ;使能EN
NOP ;注意延时(去掉就不可以正常工作,我纳闷为什么这里延时1US就OK了?)
MOV A,LCD ;LCD代表液晶的8位值(前有语句LCD EQU P2)
CLR EN
JB ACC.7,BUSY
CALL DELAY
POP ACC
RET
;============================================================
电路图: |