打印

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

[复制链接]
1013|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝