0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

PIC16系列用的人还多吗?

看到fangfei036还在用PIC16系列单片机,记得大学刚毕业时进的一家实习公司,用的确的是PIC。但最近这十几年,单片机不旦整个市场被ARM挤压,而且单片机本身也添加了很多新的成员。PIC16作为一款老的单片机,对C语言又没有天生的支持。到现在,还在大最使用吗?
如果是,它有什么优点让大家对它恋恋不忘了呢?
提问者:广陵云峰 地点:- 浏览次数:1022 提问时间:05-11 16:19
我有更好的答案
提 交
12条回答
晶瑞德电子 05-19 12:04
除特殊或习惯因素,长远趋势肯定是ARM系列。
60user194 05-14 00:06
PIC16的出货量在这今年增长了多少,这个你知道吗?

呵呵,只要你知道,就必定知道用PIC16的人还在不断增长中。

PIC16很多年前就已经存在,但这么多年来,也在持续不断的推出大量新品,PIC16有自己的专用C编译器,非常简单易用,不知道你评价其‘对C语言又没有天生的支持’是从什么出发点做出的结论?

PIC16和ARM不具备可比性,从CPU核来说,其速度上肯定远远不如,PIC16对位在高可靠、高集成、低功耗的商业或者工业控制上,和ARM虽略有交集,但并没有严重的竞争关系。

用战争武器来形容,如果ARM是导弹的话,飞机、大炮也一样大量需要,而PIC16只不过是个大炮而已。
cnkjw 05-16 01:25
ARM系列的优势在于其“谱系”很广,这不仅在于其性能分布上,还在于其制造商上。
lwddd2100 05-20 11:57
请版主给一个解释,好像C编译不是很好,BUG太多,免费的基本没有。
没有其它C编译器用的爽快。
Abby0127 05-14 02:45
一代人,一代产品的惯性作用下PIC16仍然能够发挥余热,但ARM仍然是趋势
就像.net 比JAVA先进,但已经有大部分人和大部分系统已经采用JAVA架构,仍需要采用原来的技术方案。
60user60 05-14 17:56


“PIC16的出货量在这今年增长了多少,这个你知道吗?”
真的不知道也,没玩单片机很多年了。yewuyi,能不能详细说说,我们现在的公司用的是NEC的。听他们说,便宜。

“PIC16很多年前就已经存在,但这么多年来,也在持续不断的推出大量新品,PIC16有自己的专用C编译器,非常简单易用,不知道你评价其‘对C语言又没有天生的支持’是从什么出发点做出的结论?”
PIC16的这系列刚出来时,单片机不是用C语言去开发,因此,那时的CALL指令用得不多,想想都知道,CALL来CALL去很容易乱,而PIC16的指地址宽度和数据宽度又不一样,因为PIC的做法是针对CALL指令,设定专用的硬件PC堆栈,最初PC专用堆栈才两级(PIC12时)到了PIC16F676也只有8级,整个PIC16系统最高也就是16级,而大家知道,C语言函数嵌套调用是很平常的,C的函数调用就是用CALL指令来实现的,那是否说,PIC16的函数调用,最高只能嵌套16级?这点也是我想问问用过PIC16的各位。
现在C语言普及以后,现在的单片机一般会采用如下的架构如最大限度的支持C。
1. CALL指令,原地址压到内存,只要内存够,多少级调用都没有问题。
2. 采用寄存器文件(也就是说:1.有很多寄存器用,给C语言放局部变量,2.取消累加器,因为寄存器堆是多端口的,可以在一个周期内实现两个操作的读取,并同时存结果。以适应C语言的语法)。
符合这类结构,典型的就是AVR和MSP430.
当然,我只从体系结构去分析,这里没有考虑到不同芯片的成本。

我没有打算拿ARM来比,我只是用来证明,单片机的市场受到冲击。

呵呵,问这一些,是因为我想模仿当前比较流行的一款单片机,如51,PIC,MSP,AVR。用现成的简单逻辑芯片去实现,只用大家的逻辑电路知识。为了最接近大学的教学体系,没有采用FPGA的系统级编程,又为了点小小的挑战自我,也不打算在FPGA上进行门级编程。而且全部用现成的逻辑芯片。

前一段时间对不同单片机的体系结构研究过,因为是用现成的逻辑芯片,因此选定的模型不能太复杂。看好MSP、PIC、和AVR这三款,他们的架构都会好。MSP430,16位MCU,架构完美,指令集完美!AVR架构完美,但指令太多,到时候指令执行机构复杂。PIC性能差点,指令也很简单,但就是因为那个硬件PC堆栈,很是不爽。
之前对特偏向MSP,但弄了一会后发现,用简单逻辑电路去搭寄存器文件(相当于3出,2进的多端口RAM)大麻烦了(用FPGA实现简单,但不是我想要的),项目有点想放弃了。
但最近fangfei036又给我提起了PIC16,回头去想,PIC真的还在大量使用吗?PIC16开发C语言,函数调用级数的问题体现的不明显吗?PIC16,大家真很乐意用吗?
如果这真只是我的忧虑,那太好了,就选定PIC16做为我的目标MCU了。
clknsw 05-13 03:58
一直在用啊,性能很好很强大
chunchristy 05-18 15:22
技术帖,学习了。
Green_LJ 05-17 18:21


谢谢yewuyi的回答,其实我最想了解的就是第一二个问题,关于FPGA,我在这个项目中也不打算去用,因此不作讨论。
关于第二个问题,我想问的是,我知道,51也不能递归调用,毕竟内存就这么点。
我指的函数嵌套而不是指递归调用,举个例来说,对于只有8级堆栈的PIC16F676:
函数1 调用 函数2,函数2 又调用 函数3,函数3 又调用 函数4,函数4 又调用 函数5,函数5 又调用 函数6,函数6 又调用 函数7,函数7 又调用 函数8,函数8 能调用 函数9吗??
要说明的是,这里的函数都没有递归,包括直接递归和间接递归。
就像你说的那个,“这和51通常意义上在RAM开辟堆栈区有区别”,51在函数调用时,函数的返回指针是压到内存的,因为内存只要够,调用级数就可以比较大,我之前的51经验来说,调用个32级完全没有问题。而就PIC16F676而言,他的硬件栈只有8级,我想问的是,在真正的C使用环境当中,有没有函数嵌套不能超过8位的限制?

我知道PIC24在这些问题上已经处理得非常好,精确来说,从PIC18开始,microchip就已经很重视C语言了,这也在它的PIC18体系结构中得到体现,如下的wiki的的描述:
PIC18 high end core devices (16 bit)
Microchip introduced the PIC18 architecture in 2000. [4] Unlike the 17 series, it has proven to be very popular, with a large number of device variants presently in manufacture. In contrast to earlier devices, which were more often than not programmed in assembly, C has become the predominant development language [5].
The 18 series inherits most of the features and instructions of the 17 series, while adding a number of important new features:
call stack is 21 bits wide and much deeper (31 levels deep)
the call stack may be read and written (TOSU:TOSH:TOSL registers)
conditional branch instructions
indexed addressing mode (PLUSW)
extending the FSR registers to 12 bits, allowing them to linearly address the entire data address space
the addition of another FSR register (bringing the number up to 3)

但PIC18如果用74系列芯片去做,已经是太复杂了。所以,如果我选定PIC,那就会是PIC16。因此我特别关注的是PIC16的用户的意见。
tangxi123 05-12 12:09
自己的贴也得顶一顶,叶侠不回了?还有没有其实PIC16的用户回一回?
兆利光电 05-17 09:42
PIC16系列最大FLASH已达到16KW

ARM并没有想象那么普及,几乎所有的芯片厂家都有自己独有的32位机,如TI,ST等
wonick 05-16 09:46
个人认为,ARM只是市场推广的比较好,从性能上讲,未必有MIPS好,从和各种外设结合的角度来看,也未必有MIPS好。
撰写答案
提 交
1 / 3
1 / 3