问答

汇集网友智慧,解决技术难题

21ic问答首页 - LCD 12864串行,在9.83 编译通过,不正常, pic16f877a

PIC16F877A

LCD 12864串行,在9.83 编译通过,不正常, pic16f877a

f91682023-04-13
LCD 12864串行 通讯,在PICC9.0 编译没问题,在9.83 编译通过,但是运行不正常, pic16f877a
void SendByte(char Dbyte)
{
    unsigned char i;
    for(i=0;i<8;i++)
    {
                E_CLK = 0;
                Dbyte=Dbyte<<1;      //左移一位
                RW_SID = CARRY;            //移出的位给RW_SID
                E_CLK = 1;
                E_CLK = 0;
                }
    }
//* 函数名称    :ReceiveByte 串口接收一个字节
void WriteCommand(char Cbyte )
{
        delay_ms(1);
        SendByte(0xf8);            //11111,RW(0),RS(0),0
        SendByte(0xf0&Cbyte);      //高四位
        SendByte(0xf0&(Cbyte<<4));//低四位(先执行<<)
}
void WriteData(char Dbyte )
{
        delay_ms(1);
        SendByte(0xfa);            //11111,RW(0),RS(1),0
        SendByte(0xf0&Dbyte);      //高四位
        SendByte(0xf0&(Dbyte<<4));//低四位(先执行<<)
}
LCD 12864串行 通讯,在PICC9.0 编译没问题,在9.83 编译通过,但是运行不正常,
                Dbyte=Dbyte<<1;      //左移一位
                RW_SID = CARRY;            //移出的位给RW_SID
这一段无法得到正常的数据
回答 +关注 15
979人浏览 3人回答问题 分享 举报
3 个回答
  • 发现 9.83 用不了CARRY, 最后用笨的办法,一位一位的判断取值,才搞定
  •                 if( Dbyte&(0X80>>i))   //picc 9.83 不能用 CARRY
                    {RW_SID =1;}
                    else
                    {RW_SID =0;}
  • 花了3天没解决,发现CARRY 在9.83 不正常,最后只能
                    if( Dbyte&(0X80>>i))   //picc 9.83 不能用 CARRY
                    {RW_SID =1;}
                    else
                    {RW_SID =0;}

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