搜索

[8/16位单片机] X IDE 5.20 + XC8 2.10 下编译错误

[复制链接]
882|5
 楼主 | 2020-2-1 16:21 | 显示全部楼层 |阅读模式
本帖最后由 majiahao 于 2020-2-1 16:23 编辑

用PIC16F18855,编写一段程序,从PIC16F1936移植过来,以前老版本X IDE+XC8和IDE8.92+PICC是没问题的,但X IDE 5.20+XC8 2.10提示错误,XC8是正版买过授权的,请各位帮忙看看这段寄存器定义问题出在哪里?还有编辑界面上面的换行符锤子标记以及空格圆点标记如何去掉,刚开始用IDE+XC8,不习惯,谢谢

jcq1.JPG
err.JPG

使用特权

评论回复
 楼主 | 2020-2-2 23:34 | 显示全部楼层
查了下,提示编译环境会出现无法解析标识符

请教下,如果要定义一个寄存器做标志位寄存器,里面8BIT作为8个标志位,用0x70-0x7F这15个寄存器效率最好,编译代码最少,减少了各BANK的跳转,但是就像我上面贴的图,如何写这段代码?  另外感觉X IDE 5.20 和X IDE 5.30 都有问题,5.30 下插件要下载才能安装,中文界面汉化不全,感觉就是个半成品, 5.20 是否也有和我一样出现 编译环境会出现无法解析标识符 问题  有个程序以前用老的IDE8.92+picc 和X IDE 5.01 都没有问题的

使用特权

评论回复
| 2020-2-3 15:11 | 显示全部楼层
项目属性--通用General,里的Encoding选GB18030,看是否能把空格的.和换行去掉

使用特权

评论回复
| 2020-2-4 13:44 | 显示全部楼层
majiahao 发表于 2020-2-2 23:34
查了下,提示编译环境会出现无法解析标识符

请教下,如果要定义一个寄存器做标志位寄存器,里面8BIT作为8 ...

这个是标识符问题,还有就是编译器不识别bit定义的,一般选择尾缀为5的IDE

使用特权

评论回复
| 2020-2-4 19:55 | 显示全部楼层
变通的方法可以用联合体union
union {
  unsigned char byte;
  // a structure with 8 single bit bit-field objects, overlapping the union member "byte"
  struct {
    unsigned b0:1;
    unsigned b1:1;
    unsigned b2:1;
    unsigned b3:1;
    unsigned b4:1;
    unsigned b5:1;
    unsigned b6:1;
    unsigned b7:1;
  };
} byte_u __at(0x72);

使用特权

评论回复
 楼主 | 2020-2-6 11:00 | 显示全部楼层
问题已经解决,关键还是XC8 2.10的设置问题,因为程序以前用老的X IDE和XC8都是没问题的,我又把microchip官网上的一些已经编译过的X IDE+XC8例程,AN2912,AN2912_S,EXP8SPIClick.X,EXP8I2CClick.X,C18H02_FRM2_LabMaterial拿来编译,无一例外都无法通过,又琢磨了一些时间,发现在C90和C99的C语言标准上,以前的PICC和XC8都是默认支持C90的,我们的编写习惯就以C90为准,但如果以C99为标准,就有不少被C90支持而C99不支持的标识符无法解析,比如bit,要在C99下被解析,就要采用5楼lcczg联合体union加结构体struct方法变通实现,我编译测试过。
    要和以前程序兼容,就要把XC8 2.10的默认C语言标准由C99改为C90,或完全以C99标准编写。在此也给其他人提个醒不要再犯我的错。
另外那个讨嫌的换行符和空格圆点等,只要在X IDE的视图菜单里把显示不可打印的字符(N)勾选去掉就可以了,因为要用PIC16F18855,所以从IDE8.92+PICC转到X IDE+XC8,还是不太熟悉

XC8_1.JPG
xc8_2.JPG

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

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