热带鱼工作室 发表于 2013-6-17 17:12:46

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

void wfree(void)
{
        DDRA=0X00;
        RS0;
        RW1;
        EN0;
        EN1;
        uchar i;
        while(1)
        {
               
                i= PINA&0X80;
                if(0x00==i)      //全为0则BF为低,跳出函数
                {
                        DDRA=0XFF;
                        return;
                }
        }
}

绿茶山人 发表于 2013-6-17 17:56:22

我用的时候都是延时,没读过BF。

hyghyg1234 发表于 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;
}

绿茶山人 发表于 2013-6-17 17:59:49

我看到很多人都是这样写的
/************ 位变量定义 *********/
sbit RS=P3^6;
sbit RW=P3^5;
sbitE=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();
};
}

CHENG2010 发表于 2013-6-17 18:01:23

还是用延时吧,0802 ,1602的忙都不好判。

kyughanum 发表于 2013-6-17 18:08:09

话说0x00 == i;这个是不是有问题?
我的印象里好像linux下这样写会报错,因为我一直写i == 0x00{:smile:}

hyghyg1234 发表于 2013-6-17 18:23:46

kyughanum 发表于 2013-6-17 18:08 static/image/common/back.gif
话说0x00 == i;这个是不是有问题?
我的印象里好像linux下这样写会报错,因为我一直写i == 0x00 ...

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

kyughanum 发表于 2013-6-17 18:46:15

hyghyg1234 发表于 2013-6-17 18:23 static/image/common/back.gif
应该没有问题,但是看起来怪怪的

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

weifengcheng 发表于 2013-6-17 18:49:59

你用几M的主频?在使能信号之间加点延时试试。
void lcd_mbm()
{   
      P0=0xff;
      rs=0;
      rw=1;          
      e=1;
      _nop_();   
      while(P0&0x80);
          e=0;
}

Myauto123 发表于 2013-6-19 16:41:52

hyghyg1234 发表于 2013-6-17 18:23
应该没有问题,但是看起来怪怪的

这样写是为了避免漏掉一个等号,但编译器却不会报错的情况。。
页: [1]
查看完整版本: 1602读忙信号一直都是忙呀,有没有人帮我看一下