8位微控制器实践(0) - 绪论

2022/09/09

微控制器 (MCU) 也叫单片机,指把处理器、内存、各种外设集成在一块芯片内的计算机。现在的个人计算机的数据总线宽度已经达到64位,而微控制器一般还停留在8/16/32位。可见,微控制器的功能相对有限,但对于一些简单的控制系统来说已经足够。由于微控制器价格低廉、简单易用,它也常常被用在一些业余硬件项目中。

这个系列将要讨论的是8位微控制器,属于微控制器中的底层。常见的8位微控制器有:

随着半导体技术的发展,功能强大很多的基于ARM架构的32位微控制器已经越来越廉价,逐渐流行并取代8位微控制器。8位微控制器因为有比较简单的封装(例如:8/14/20/28脚双列直插),在简单的项目中仍然有一定用处。

我将使用8位微控制器做一些简单的硬件项目,体会一下开发流程。我使用的是PIC的基于Enhanced Mid-range架构的微处理器,芯片代码是PIC16F1XXXXX。这些芯片非常便宜,而且双列直插的封装很适合基于面包板的项目。

在一个我使用的微控制器中,集成了如下各种组件:

相对现代个人计算机来说,性能参数落后了很多个时代,但是“麻雀虽小,五脏俱全”,在微控制器的应用场合里往往已经够用。

8位PIC有一些架构上的缺陷:

另外,Microchip提供的工具链也常为人诟病:

这看起来是Microchip推销付费版XC8 PRO(需要支付 $43.95/月)的商业策略:汇编比较难写,而C程序的性能有待改善。

相对而言,AVR微控制器的架构更加合理,并且有完全开放的工具链。这也许是开放硬件平台Arduino采用AVR系列微控制器的原因。

当然,编译器的优化不够好未必是问题。即使是不够优化的程序,只要足够实际使用即可。

网络上的现有资料往往使用MPASM对8位PIC进行编程。我曾经用MPASM在PIC12F675上写过几个简单的程序。这一次,我将使用最新版本的开发环境,MPLAB X 6.0和XC8 v2.40,看一看有哪些新的坑可以踩。