今天想试试PIC18的单片机,遂拿pic18f6722开个刀,结果发现悲剧的PICC18 V9.61竟然在循环语句中不能在设置断点,还有NOP()这条语句也不能设置断点,反汇编list里面这些循环语句都是空白,看不到了,但是下载到单片机里是能执行的。遂网上搜索之,找到这篇文章:
PICC18各版本使用心得
来源:http://www.365zhaosheng.com/html/2010/07/20100725125726218793.shtml
近来需要给一个大客户做培训,选择了最熟悉的PICC18编写了十几个程序,结果发现一些问题,出来和大家分享一下.如果有错,也请高手指点迷津。
1,V8.35PL3版本
指向特殊寄存器的指针有点问题,在9.61版本,此问题被修正掉了。具体表现。
static volatilenear BYTE *xp=&RXB0D0;//(18系列CAN总线功能MCU都有此寄存器)。
unsigned char lcd_buf[8];
unsigned char pt;
lcd_buf[pt]=*xp;//835版本无法得到正确值。961可以。
2,V950PL1/PL2/PL3
局部变量无法观察。其它版本无此问题。
3 PROV9.61
结构体,联合体无法正确显示,只能通过头地址推算进行观察。低版本无此问题。
DISASSEMBLE LISTING里面经常找不到一些源代码对应的反汇编代码,导致无法在源程序上直接设置断点,尝试了调整优化选项等方法后依然如此,8.35无此问题。
原因推断,8.35之所以OK,大概是因为在CRACK前,要先覆盖一个Z版的PICC18.EXE,其它版本,我们的CRACK估计只是在DEMO版的基础上解除了时间限制问题,DEMO板的一些功能限制实际上没有去除。
结语:最后我还是选择了PICC18V8.35培训客户,尽管如此,为了保证代码的兼容性,可移植性,PICC18依然是我今后开发的首选,毕竟限于国情,我不好奢求什么。
附带提一下,要用PICC开发676/630/675/629的朋友们请注意,只有805PL2才可以支持,高版本都有很严重的的问题,一旦使用中断,代码编译就不正常了。
有PIC18培训需求或者入门需求的,如果选择PICC18,建议从PICC18V835开始,如果可以忍受局部变量的问题,950PLX也是不错的选择,用全局调完挪成局部就可以了。
文章评论(0条评论)
登录后参与讨论