[PIC®/AVR®/dsPIC®产品] XC8 C 移位操作

[复制链接]
576|5
 楼主| supernan 发表于 2022-11-11 23:54 | 显示全部楼层 |阅读模式

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'
happy_10 发表于 2022-11-11 23:55 | 显示全部楼层
加强制类型转换
dengdc 发表于 2022-11-11 23:58 | 显示全部楼层
先确定是哪行代码的警告。
 楼主| supernan 发表于 2022-11-12 09:27 | 显示全部楼层
unsigned char data  
data>>4;
8位无符号移位就会提示出错。原来用HI-TECH C 没问题,同样程序在XC8就是编译不过。
dingy 发表于 2022-11-12 09:30 | 显示全部楼层
强制转换就没有问题了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

730

主题

10412

帖子

6

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