XC8 C 移位操作

[复制链接]
1269|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就是编译不过。
单片小菜 发表于 2021-5-26 22:49 | 显示全部楼层
强制转换就没有问题了。
 楼主| yingnin 发表于 2021-6-1 13:57 | 显示全部楼层
好的,谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

37

帖子

1

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