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

XC8 C 移位操作

[复制链接]
438|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就是编译不过。

使用特权

评论回复
5
dingy| | 2022-11-12 09:30 | 只看该作者
强制转换就没有问题了。

使用特权

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

本版积分规则

730

主题

10412

帖子

6

粉丝