请教1602液晶的读“忙”

[复制链接]
6205|9
 楼主| 182006 发表于 2007-10-22 21:05 | 显示全部楼层 |阅读模式
很多资料里有介绍1602在送指令或数据之前需要检测“忙”状态,资料上是这样讲的:

BF为忙碌信号(Busy Flag,简称BF),当BF为1时,不接收微机送来的数据或指令;当BR为0时,接收外部数据或指令,所以,在写数据或指令到LCD之前,必须查看BF是否为0;

请教大侠们:这个检测“忙”状态要掌握怎样的时序啊?下面的这种写法对吗?
DELAY:  MOV P1,#0FFH        ;P1为D0-D7数据端口。
        CLR RS
        SETB RW
        CLR E
        NOP
        SETB E 
        MOV A,P1
        JZ  DELAY
        RET               
经调试,这种方式调不过。
我看过一些别人的程序,有些根本就不去检测“忙”,直接用个记数延时,请问真正的读“忙”是怎么样检测的呢?请给个子程序或完整的程序参考,谢谢!
一级菜鸟 发表于 2007-10-22 21:08 | 显示全部楼层

先SETB E,然后读,然后CLR E

 楼主| 182006 发表于 2007-10-22 21:25 | 显示全部楼层

是这样的吗?

DELAY:  MOV P1,#0FFH 
        SETB E
        CLR RS
        SETB RW
        MOV A,P1
        CLR E
        JZ  DELAY
        RET     

请问是这样的吗?   
rightnow51 发表于 2007-10-22 23:16 | 显示全部楼层

这样

DELAY:  MOV P1,#0FFH 
        SETB E
        CLR RS
        SETB RW
        SETB E
        MOV A,P1
        CLR E
        JZ  DELAY
        RET     
wtfshxkj 发表于 2007-10-23 07:46 | 显示全部楼层

Datasheet

Lz其Datasheet上有具体的时序要求,照猫画虎就Okay了。
ayb_ice 发表于 2007-10-23 07:55 | 显示全部楼层

这个并口的时序很简单的。。。

用延时程序代替也可以。。。
要习惯看DATASHEET,那才是最正确的。。。
pannu 发表于 2007-10-23 13:03 | 显示全部楼层

试试这个程序

       DELAY:  MOV P1,#0FFH        ;P1为D0-D7数据端口。
        CLR E
        CLR RS
        SETB RW
        SETB E        
        MOV A,P1
        CLR E
        JB ACC.7,  DELAY
        RET           
keer_zu 发表于 2007-10-23 13:25 | 显示全部楼层

对了,看看数据手册

 楼主| 182006 发表于 2007-10-23 14:02 | 显示全部楼层

可以了!


嘿嘿,调出来了,十分感谢各位大侠的指点!
我用的读“忙”子程序是:
BUZY:   MOV P1,#0FFH      
        CLR RS
        SETB RW
        SETB E
        CLR E
        JB P1.7,BUZY
        SETB RS
        CLR RW
        RET
总结:
        MOV A,P1
        CLR E
        JZ  DELAY
调的时候,用A 来判断P1.7状态不是太好,因为在P1.7为0的时候,有可能存在P1.1-6为非0状态,那么就会造成误判而形成死循环,所以我还是采用了位式判断:
         JB P1.7,BUZY
        SETB RS
        CLR RW
在此封贴!谢谢各位!


 
ayb_ice 发表于 2007-10-23 14:07 | 显示全部楼层

即使用A也只能用位测试指令。。。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

127

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部