专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
PIC单片机
我来说说对PIC的看法..其实是多余的.用过的都知道
2020-02-09 11:34
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
16480
84
84
我说说我的看法.
PIC的结构确实很落伍..
写起程序来非常的不灵活..
函数调用层数过多怎么死的都不知道.
内存要分bank.
所以指针也很不好用.而且效率低下.
可以说从C程序员的角度来说是垃圾中的垃圾..
可取之处可能就是大家常提到的抗干扰性能了吧.
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
83条回答
machunshui
1楼-- · 2020-02-13 17:01
精彩回答 2 元偷偷看……
加载中...
zhangjinxing
2楼-- · 2020-02-13 20:24
"总之,分bank和page是很恶心的...
感觉分bank的设计理念很好,以16fxx系列来说,其指令为14位,分bank时情况:
字节寻址文件寄存器:对于文件寄存器地址占用7位,d占1位,共占用8位,剩余6位做操作码,这样可以有64条指令空间。
位寻址文件寄存器: 文件寄存器地址占用7位,位地址占用3位,共10位,剩余4位做操作码,这样可以有16条指令空间。
不分bank情况如下:
字节寻址文件寄存器:文件寄存器地址占用9位(寻址全部ram), d占1位,共10位,剩余4位做操作码,这样有16条指令空间(紧啊)
位寻址文件寄存器: 文件寄存器地址占用9位,位地址占用3位,共12位,剩余2位做操作码,这样有个4条指令空间
不分bank时,访问每个ram单元要9位两个字节地址,分bank时只用8位,处理大块数据时将其放在一个bank中,处理时只需要设置一次bank选择,就可以用8位地址提高速度。
不分bank时估计指令不会是14位了吧,那会增加成本,而其有些指令要两个字了,所以这属于低档系列。
不分page的话,直接跳转要提供13位立即地址,啊,就剩1位指令空间,怎么用。
如 machunshui所说指令集决定的
加载中...
Friendz
3楼-- · 2020-02-14 01:18
哎呀,我昨天才设计出自己有知识产权的第一款单片机,和PIC16F877A完全兼容。
看了楼主的帖子,才知道,我是如此的笨啊。早知道就不用分BANK了。。楼主也设计一款吧。。
(呵呵,讲讲笑话,我一直是用PIC单片机的)
加载中...
machunshui
4楼-- · 2020-02-14 01:41
microchip的设计理念是紧扣成本这个主题,不追求绝对性能。
高计算性能这个事情,
不是8位机的任务。
16位,32位更用来做适合高运算性能的事情。
实际上,
PIC16这样的8位机,分页,分段也不是很麻烦,
何况用C语言基本上没什么影响。
就算用汇编,
microchip也提供了伪指令来解决这个问题,
有什么麻烦的?
说麻烦的人,可能PIC的体系结构根本就没入门
加载中...
snoopyzz
5楼-- · 2020-02-14 02:46
我用PIC16F57写程序的思路,LS你可能想都想不到...
麻烦就是麻烦,即使我会用了,我还是要说它麻烦
BTFSS f_xxx
LGOTO LABEL1
这种时候伪指令有P用....只会出问题,LCALL完了还得PAGESEL $....
====================
我说个例子,限定PIC16F57做,
要解码响应HT6221遥控指令,查表按时序(0.25秒级)做相关输出,解码时不能影响输出(时序误差<100us),
要还计时15min后,与线控计时的15min的误差<=1s
线控用PIC16F54做,动态12LED,动态扫描按键,(还有一款是PIC16F57做,多两个数码管扫描,显示倒计时,F54口线不够)
发送HT6221遥控指令(直接线连,所以不需要调制),发送要求精准
(每个560us误差<=10us,不是我做解码程序要求这么高,是配套别人产品时有要求,所以必须照做
发送完一个HT6221编码大约是100ms,要求连续发送3次保证可靠,就是300ms+(其实我的解码程序每个都能解出来,100%成功率,但别人的不是)
)
发送编码时,LED和数码管不能灭,也不能出现亮度不均匀,该有相应LED闪烁和流水动作的还得有....
别看功能好像挺简单,你用C写个看看,对于没有定时器中断的芯片,相信很多人束手无策吧...
F54倒是不用换page也不用换bank,因为没得换,
F57换来换去我说它麻烦有错吗?
这两个低端芯片没有中断,就一个8位无重载功能定时器...
用起来说它麻烦有错吗?
要说价格便宜,PIC16F57这点破功能
(20i/o(输入无内部上拉),8bit timer一个,无中断,无RAM,71个通用寄存器分了四个bank,2K Flash分了四个page
CALL只能访问每个page的前256字节,无读flash指令,于是表格长度只能<1K)
对得起它3RMB+(税后)价格吗?
加载中...
AWEN2000
6楼-- · 2020-02-14 05:45
精彩回答 2 元偷偷看……
加载中...
首页
上一页
4
5
6
7
8
9
10
11
下一页
最后一页
一周热门
更多
>
相关问题
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
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
感觉分bank的设计理念很好,以16fxx系列来说,其指令为14位,分bank时情况:
字节寻址文件寄存器:对于文件寄存器地址占用7位,d占1位,共占用8位,剩余6位做操作码,这样可以有64条指令空间。
位寻址文件寄存器: 文件寄存器地址占用7位,位地址占用3位,共10位,剩余4位做操作码,这样可以有16条指令空间。
不分bank情况如下:
字节寻址文件寄存器:文件寄存器地址占用9位(寻址全部ram), d占1位,共10位,剩余4位做操作码,这样有16条指令空间(紧啊)
位寻址文件寄存器: 文件寄存器地址占用9位,位地址占用3位,共12位,剩余2位做操作码,这样有个4条指令空间
不分bank时,访问每个ram单元要9位两个字节地址,分bank时只用8位,处理大块数据时将其放在一个bank中,处理时只需要设置一次bank选择,就可以用8位地址提高速度。
不分bank时估计指令不会是14位了吧,那会增加成本,而其有些指令要两个字了,所以这属于低档系列。
不分page的话,直接跳转要提供13位立即地址,啊,就剩1位指令空间,怎么用。
如 machunshui所说指令集决定的
看了楼主的帖子,才知道,我是如此的笨啊。早知道就不用分BANK了。。楼主也设计一款吧。。
(呵呵,讲讲笑话,我一直是用PIC单片机的)
高计算性能这个事情,
不是8位机的任务。
16位,32位更用来做适合高运算性能的事情。
实际上,
PIC16这样的8位机,分页,分段也不是很麻烦,
何况用C语言基本上没什么影响。
就算用汇编,
microchip也提供了伪指令来解决这个问题,
有什么麻烦的?
说麻烦的人,可能PIC的体系结构根本就没入门
麻烦就是麻烦,即使我会用了,我还是要说它麻烦
BTFSS f_xxx
LGOTO LABEL1
这种时候伪指令有P用....只会出问题,LCALL完了还得PAGESEL $....
====================
我说个例子,限定PIC16F57做,
要解码响应HT6221遥控指令,查表按时序(0.25秒级)做相关输出,解码时不能影响输出(时序误差<100us),
要还计时15min后,与线控计时的15min的误差<=1s
线控用PIC16F54做,动态12LED,动态扫描按键,(还有一款是PIC16F57做,多两个数码管扫描,显示倒计时,F54口线不够)
发送HT6221遥控指令(直接线连,所以不需要调制),发送要求精准
(每个560us误差<=10us,不是我做解码程序要求这么高,是配套别人产品时有要求,所以必须照做
发送完一个HT6221编码大约是100ms,要求连续发送3次保证可靠,就是300ms+(其实我的解码程序每个都能解出来,100%成功率,但别人的不是)
)
发送编码时,LED和数码管不能灭,也不能出现亮度不均匀,该有相应LED闪烁和流水动作的还得有....
别看功能好像挺简单,你用C写个看看,对于没有定时器中断的芯片,相信很多人束手无策吧...
F54倒是不用换page也不用换bank,因为没得换,
F57换来换去我说它麻烦有错吗?
这两个低端芯片没有中断,就一个8位无重载功能定时器...
用起来说它麻烦有错吗?
要说价格便宜,PIC16F57这点破功能
(20i/o(输入无内部上拉),8bit timer一个,无中断,无RAM,71个通用寄存器分了四个bank,2K Flash分了四个page
CALL只能访问每个page的前256字节,无读flash指令,于是表格长度只能<1K)
对得起它3RMB+(税后)价格吗?
一周热门 更多>