打印
[PIC®/AVR®/dsPIC®产品]

PICC 9.83 编译后不正确

[复制链接]
995|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
f9168|  楼主 | 2023-4-13 11:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 f9168 于 2023-4-13 11:44 编辑

LCD 12864 的串行通讯程序 C语言
void SendByte(char Dbyte)
{
    unsigned char i,j;
    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));//低四位(先执行<<)
}
以上程序在PICC9 编译没问题, 在9.83 编译运行就不正常,
                Dbyte=Dbyte<<1;      //左移一位
                RW_SID = CARRY;            //移出的位给RW_SID

这一段无法得到正确的数据, 请问是哪里有问题,感觉Dbyte没有传到数据,或者CARRY有问题

使用特权

评论回复
沙发
玛尼玛尼哄| | 2023-4-13 22:16 | 只看该作者
CARRY是什么,你不如直接提取移除的那个位,在移位之前提取。。比如用if判断高位是1还是0,,

使用特权

评论回复
板凳
玛尼玛尼哄| | 2023-4-13 22:16 | 只看该作者
你是不是理解成51那种了

使用特权

评论回复
地板
f9168|  楼主 | 2023-4-14 08:31 | 只看该作者
本帖最后由 f9168 于 2023-4-14 09:15 编辑
玛尼玛尼哄 发表于 2023-4-13 22:16
CARRY是什么,你不如直接提取移除的那个位,在移位之前提取。。比如用if判断高位是1还是0,, ...
只能这样了
                if( Dbyte&(0X80>>i))   //picc 9.83 不能用 CARRY
                {RW_SID =1;}
                else
                {RW_SID =0;}

使用特权

评论回复
5
pzsh| | 2023-4-18 14:44 | 只看该作者
PICC没用过,是不是很早之前的编译器版本?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝