搜索
bottom↓
回复: 9

1602读忙信号一直都是忙呀,有没有人帮我看一下

[复制链接]

出0入0汤圆

发表于 2013-6-17 17:12:46 | 显示全部楼层 |阅读模式
void wfree(void)
{
        DDRA=0X00;
        RS0;
        RW1;
        EN0;
        EN1;
        uchar i;
        while(1)
        {
               
                i= PINA&0X80;
                if(0x00==i)      //全为0则BF为低,跳出函数
                {
                        DDRA=0XFF;
                        return;
                }
        }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出70入0汤圆

发表于 2013-6-17 17:56:22 | 显示全部楼层
我用的时候都是延时,没读过BF。

出0入0汤圆

发表于 2013-6-17 17:58:58 | 显示全部楼层
完全看不懂啊,0x00==i为啥这样写,又来了个return是啥?
我给你一个可以用的吧
#define DATA_1206      PORTB             //数据口
#define DATA_DIRECT    DDRB         //IO口方向
#define BUSY_DATA      PINB         //忙检查
#define Busy 0x80

#define RS0 CLR(PORTC,0)
#define RS1 SET(PORTC,0)
#define RW0 CLR(PORTC,1)
#define RW1 SET(PORTC,1)
#define EN0 CLR(PORTC,7)
#define EN1 SET(PORTC,7)
void waitfor(void)
{
  u8 val;
  DATA_DIRECT=0XFF;
  DATA_1206=0xFF;
  RS0;
  RW1;
  EN1;
  DATA_DIRECT=0x00;
  val=BUSY_DATA;
  while(val&Busy)
  {val=BUSY_DATA;  }
  EN0;
  DATA_DIRECT=0xff;
}

出70入0汤圆

发表于 2013-6-17 17:59:49 | 显示全部楼层
我看到很多人都是这样写的
/************ 位变量定义 *********/
sbit RS=P3^6;
sbit RW=P3^5;
sbit  E=P3^4 ;
sbit BF=P1^7;

/************ 检查忙 *************/
bit busy_check()
{
bit bf;
LCD=0xff;
RS=0;
RW=1;
E=0;
E=1;
bf=BF;
return (bf);
}


/************ 等待空闲 *************/
void busy_wait()
{
while (busy_check())
{
busy_check();
};
}

出0入0汤圆

发表于 2013-6-17 18:01:23 | 显示全部楼层
还是用延时吧,0802 ,1602的忙都不好判。

出0入0汤圆

发表于 2013-6-17 18:08:09 | 显示全部楼层
话说0x00 == i;这个是不是有问题?
我的印象里好像linux下这样写会报错,因为我一直写i == 0x00

出0入0汤圆

发表于 2013-6-17 18:23:46 | 显示全部楼层
kyughanum 发表于 2013-6-17 18:08
话说0x00 == i;这个是不是有问题?
我的印象里好像linux下这样写会报错,因为我一直写i == 0x00 ...

应该没有问题,但是看起来怪怪的

出0入0汤圆

发表于 2013-6-17 18:46:15 | 显示全部楼层
hyghyg1234 发表于 2013-6-17 18:23
应该没有问题,但是看起来怪怪的

原来我真是记错了,果然是可以的!只是一般人的思维看这个等式比较怪吧,哈

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-6-17 18:49:59 | 显示全部楼层
你用几M的主频?在使能信号之间加点延时试试。
void lcd_mbm()
{   
      P0=0xff;
      rs=0;
      rw=1;          
      e=1;  
      _nop_();     
      while(P0&0x80);
          e=0;
}

出0入0汤圆

发表于 2013-6-19 16:41:52 来自手机 | 显示全部楼层
hyghyg1234 发表于 2013-6-17 18:23
应该没有问题,但是看起来怪怪的

这样写是为了避免漏掉一个等号,但编译器却不会报错的情况。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 23:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表