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

[复制链接]
 楼主| f9168 发表于 2023-4-13 13:39 | 显示全部楼层 |阅读模式
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
这一段无法得到正常的数据
 楼主| f9168 发表于 2023-4-14 09:14 | 显示全部楼层
花了3天没解决,发现CARRY 在9.83 不正常,最后只能
                if( Dbyte&(0X80>>i))   //picc 9.83 不能用 CARRY
                {RW_SID =1;}
                else
                {RW_SID =0;}
 楼主| f9168 发表于 2023-4-14 09:16 | 显示全部楼层
                if( Dbyte&(0X80>>i))   //picc 9.83 不能用 CARRY
                {RW_SID =1;}
                else
                {RW_SID =0;}
 楼主| f9168 发表于 2023-4-14 13:51 | 显示全部楼层
发现 9.83 用不了CARRY, 最后用笨的办法,一位一位的判断取值,才搞定
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

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