专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
PIC单片机
STD 9.60PL2 vs PRO PICC V9.60
2020-02-10 08:44
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
8603
6
6
STD 9.60PL2 vs PRO PICC V9.60 听说 PRO PICC V9.60 代码要高效许多,哪位有没有PRO PICC V9.60 的破**解-版啊
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
cyberjok
1楼-- · 2020-02-10 09:31
原来没有人在用啊?~~~~~~~~
加载中...
phone
2楼-- · 2020-02-10 09:52
没发现高效多少,用了一下PRO,现在又退回STD了。
加载中...
tsb0574
3楼-- · 2020-02-10 14:44
精彩回答 2 元偷偷看……
加载中...
snoopyzz
4楼-- · 2020-02-10 17:06
我随便写了一小段C代码,PRO9.60PL5比STD9.60PL2省了8个代码空间,一个寄存器占用
一开始挺高兴,但仔细查了list文件后发现实际上STD9.60PL2比PRO9.60PL5的代码优化效果要好,
只是函数调用上PRO9.60PL5用了call,而STD9.60PL2占用了寄存器保存入口号直接用goto跳来跳去,
如果当函数多级调用时,(极端些,比如PIC16F57/54),显然call是不行的,
pro版的所谓的智能感知优化可能是查觉堆栈没问题,就用了call
-------------------------------------------------------------------
但是某些语句,pro比std却要浪费了代码
比如
switch(n)
{
case 0:PORTB=0;break;
case 1:PORTB=1;break;
case 2:PORTB=2;break;
case 3:PORTB=3;break;
case 4:PORTB=4;break;
case 5:PORTB=5;break;
case 6:PORTB=6;break;
case 7:PORTB=7;break;
}
std版编译出来有如下代码
(变量名等我用了字母,实际lst文件中很多是数字,看的烦,有些类似1^0也是我自己加上的^0,比数字方便理解)
MOVF n,W
BTFSC STATUS,Z
GOTO L12
XORLW 1^0
BTFSC STATUS,Z
GOTO L13
XORLW 2^1
BTFSC STATUS,Z
GOTO L14
....
而pro版编译出来多了一条废语句,如下
MOVF n,W
XORLW 0 ;这条是废的
BTFSC STATUS,Z
GOTO L12
XORLW 1^0
BTFSC STATUS,Z
GOTO L13
XORLW 2^1
BTFSC STATUS,Z
GOTO L14
....
=============================
同样,还有其它一些语句也会多些类似的废语句,比如
if((u8)(a-b)>=2)
{
a = 5;
}
具体我就不写了
-------------------------------------------------------
所以表面上看来pro的代码和寄存器占用要比std少,
但是通过其它一些手段换来了,而不是纯粹的语句优化,
相比之下std的语句优化要好一些...
加载中...
wangjckj
5楼-- · 2020-02-10 18:51
STD版本是标准版本,PRO版本是专业版本,PRO是在STD基础上嵌入了OCG技术。
加载中...
一周热门
更多
>
相关问题
PIC单片机不同的IO口驱动74HC573驱动共阴极的数码管,有的段不亮
1 个回答
一种简单精确的pic延时方法
21 个回答
谁熟悉PIC的产品发布时间的,帮看看PIC18F47K40啥版本IDE能开发
12 个回答
求AN1078对应的源代码下载地址
5 个回答
PIC单片机应用技巧
4 个回答
串口无法连续接收数据
2 个回答
求助:dsPIC33F串口通信,如何发送字符串
4 个回答
PIC45K40 IOC(interrupt-on-change)功能
2 个回答
相关文章
一种用PIC单片机主时钟驱动的老式挂钟
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
PIC单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一开始挺高兴,但仔细查了list文件后发现实际上STD9.60PL2比PRO9.60PL5的代码优化效果要好,
只是函数调用上PRO9.60PL5用了call,而STD9.60PL2占用了寄存器保存入口号直接用goto跳来跳去,
如果当函数多级调用时,(极端些,比如PIC16F57/54),显然call是不行的,
pro版的所谓的智能感知优化可能是查觉堆栈没问题,就用了call
-------------------------------------------------------------------
但是某些语句,pro比std却要浪费了代码
比如
switch(n)
{
case 0:PORTB=0;break;
case 1:PORTB=1;break;
case 2:PORTB=2;break;
case 3:PORTB=3;break;
case 4:PORTB=4;break;
case 5:PORTB=5;break;
case 6:PORTB=6;break;
case 7:PORTB=7;break;
}
std版编译出来有如下代码
(变量名等我用了字母,实际lst文件中很多是数字,看的烦,有些类似1^0也是我自己加上的^0,比数字方便理解)
MOVF n,W
BTFSC STATUS,Z
GOTO L12
XORLW 1^0
BTFSC STATUS,Z
GOTO L13
XORLW 2^1
BTFSC STATUS,Z
GOTO L14
....
而pro版编译出来多了一条废语句,如下
MOVF n,W
XORLW 0 ;这条是废的
BTFSC STATUS,Z
GOTO L12
XORLW 1^0
BTFSC STATUS,Z
GOTO L13
XORLW 2^1
BTFSC STATUS,Z
GOTO L14
....
=============================
同样,还有其它一些语句也会多些类似的废语句,比如
if((u8)(a-b)>=2)
{
a = 5;
}
具体我就不写了
-------------------------------------------------------
所以表面上看来pro的代码和寄存器占用要比std少,
但是通过其它一些手段换来了,而不是纯粹的语句优化,
相比之下std的语句优化要好一些...
一周热门 更多>