找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1155|回复: 7
收起左侧

请问PIC单片机整数判别是不是不能大于255?

[复制链接]
ID:769545 发表于 2022-6-25 11:34 | 显示全部楼层 |阅读模式
unsigned char sbstatus @ 0x23;
bit volatile ADCY@((unsigned)&sbstatus*8+0;

unsigned short  YEAR;
ADCY=0;

for(;;)
{

  SEC=SEC+1;
   if(SEC>=2020)
   ADCY=1;

}



请教一下大神们:unsigned short  YEAR;改为unsigned char  YEAR;就可以编译通过,是不是比较的数据只能用一个8位数据?用16位的数据是不可以直接比较的。我用PICC9.86编译
回复

使用道具 举报

ID:301191 发表于 2022-6-25 23:57 | 显示全部楼层
顶一下
回复

使用道具 举报

ID:883242 发表于 2022-6-26 00:11 | 显示全部楼层
这就不是单片机的问题,而是编译器的问题,只能查编译器手册。

另外,PIC16系列单片机在设计之初就没想到过用什么高级语言,而是用最少的晶体管数量实现全部功能。所以这种单片机c语言编译器生成的机器码惨不忍睹,比51这种过时结构还要烂。反正规模都不大,还不如直接上汇编。
回复

使用道具 举报

ID:401564 发表于 2022-6-26 17:09 | 显示全部楼层
没看出YEAR跟比较有什么关系呀
个人感觉是你自己的问题,代码不全看不出什么问题
毕竟,一个再垃圾的编译器,它也不至于比较大小都干不了的吧
回复

使用道具 举报

ID:962286 发表于 2022-6-27 10:58 | 显示全部楼层
PIC的任何系列和对应任何C编译器,都支持16bit(unsigned short)的加减乘除和逻辑判断。另外,如果是PIC10F/PIC12F/PIC16F的C编译器,HI-TECH PICC最后一个版本是9.83(9.84有个bate版),而后面已经改名成XC8了(PIC收购HI-TECH蛮鸡贼的)。
PS:HI-TECH PICC或者XC8的PRO版(收费)编译出来的机器码效率相当高,Lite版就效率低得多了,不过好像一直有把PRO版弄出来。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:130230 发表于 2022-6-28 14:59 | 显示全部楼层
你倒是把编译报错的内容贴出来啊。。
回复

使用道具 举报

ID:195496 发表于 2022-6-28 17:53 | 显示全部楼层
数据类型有关系,你还没有搞明白?
回复

使用道具 举报

ID:769545 发表于 2022-6-30 12:45 | 显示全部楼层
Y_G_G 发表于 2022-6-26 17:09
没看出YEAR跟比较有什么关系呀
个人感觉是你自己的问题,代码不全看不出什么问题
毕竟,一个再垃圾的编译器 ...


unsigned char sbstatus @ 0x23;
bit volatile ADCY@((unsigned)&sbstatus*8+0;

unsigned short  YEAR;
ADCY=0;

for(;;)
{

  YERA=YEAR+1;
   if(YEAR>=2020)
   ADCY=1;

}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表