我来说说对PIC的看法..其实是多余的.用过的都知道

2020-02-09 11:34发布

我说说我的看法.
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  元偷偷看……

一周热门 更多>