打印

XC8 C 移位操作

[复制链接]
1025|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yingnin|  楼主 | 2021-5-21 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


void wrdat (unsigned char data)
{         unsigned char temp=0;
           while (read_ac() & 0x80);                        // test busy flag.
           lcd_rw = 0;NOP();                           //RW=0       
           lcd_rs = 1;NOP();                                        //RS=1
           temp = (data>>4) & 0X0F;                        //右移高4位到低4位,屏蔽高4位
           PORTC = temp | (PORTC & 0XF0);                //读RC高4位数据与数据低4位送入RC
           lcd_e = 1;NOP();                                         //E=1
           lcd_e = 0;NOP();                                        //E=0
           PORTC = (data & 0X0F) | (PORTC & 0XF0);        //送低4位数据到RC低4位
           lcd_e = 1;NOP();                                        //E=1
           lcd_e = 0;NOP();                                        //E=0
}


出现如下提示,请教坛友碰到吗?如何解决这个问题
warning: implicit conversion loses integer precision: 'int' to 'unsigned char'


使用特权

评论回复
沙发
dql2015| | 2021-5-23 09:56 | 只看该作者
加强制类型转换

使用特权

评论回复
板凳
lcczg| | 2021-5-24 14:56 | 只看该作者
先确定是哪行代码的警告。

使用特权

评论回复
地板
yingnin|  楼主 | 2021-5-26 20:46 | 只看该作者
lcczg 发表于 2021-5-24 14:56
先确定是哪行代码的警告。

unsigned char data  
data>>4;
8位无符号移位就会提示出错。原来用HI-TECH C 没问题,同样程序在XC8就是编译不过。

使用特权

评论回复
5
单片小菜| | 2021-5-26 22:49 | 只看该作者
强制转换就没有问题了。

使用特权

评论回复
6
yingnin|  楼主 | 2021-6-1 13:57 | 只看该作者
好的,谢谢。

使用特权

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

本版积分规则

6

主题

36

帖子

1

粉丝