【1602检测忙】貌似很多人的检测忙函数不成功,我自己加了个次数控制就成功了,有同学知道根本原因?

2019-07-21 01:51发布

void busy_check()
{
    u8 bc = 0, times = 0;
    delay_10ns( Tsp1 );
    do
    {
            RS = 0;
            RW = 1;
            delay_ms( 1 );
            EP = 1;
            bc = PORT_DATA->IDR & 0x80;
            delay_10ns( Tpw );
            EP = 0;
            delay_10ns( Tpw );
            delay_ms( 1 );
            times ++;
    }while( bc && (times <= 10) );
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-21 04:06
好久没用这个了,不过你这方法可以啊,多检测几次就是了.
东阳马苏
2楼-- · 2019-07-21 04:45
 精彩回答 2  元偷偷看……
张zhang
3楼-- · 2019-07-21 10:11
你好  我想问一下你是用min版 做的吗??到底有没有数据端口和控制端口上拉10k的电阻到5v电压,然后用开楼输出呢??还是直接连接端口的,,,我弄了好久了  还是不成功不知道为什么,求请教
张zhang
4楼-- · 2019-07-21 14:30
 精彩回答 2  元偷偷看……
东阳马苏
5楼-- · 2019-07-21 15:53
回复【4楼】张zhang:
---------------------------------
不好意思...好长一段时间去了搞别的,没上论坛...
我用推完输出,直接连接io。
不成功可能是时序问题。
我做时序有个习惯,就是一开始都用delay_1ms( 1 )来作为所有时间间隔,等能运行再看手册把时间调小。
镜华尘
6楼-- · 2019-07-21 16:06
东阳马苏 发表于 2014-6-22 16:16
回复【2楼】正点原子:
---------------------------------
啊哈哈,想不到第一次发帖原子哥就回复了。
我测 ...

大佬。我参考了你的读忙,经过主函数的多次验证(在主函数中用不忙作为条件点亮一个LED灯),发现确实是第一次读忙会死循环。但是我还算没用驱动1602成功。仍然是一片黑方格。

一周热门 更多>