在了解PIC单片机的过程中,学习到很多RISC指令集的知识。如:内存的分页,软中断管理。由于PIC的指令为固定长度,所以一条指令中就不能包含很多的寻址位。这就限制了指令可以访问的内存地址范围。想要访问更大的地址空间有两条路:一、使用间接寻址的方式;二、使用内存分页(或分段);所以PIC单片机中就有了一个奇怪的分页寄存器。一条同样的指令有可能会操作不同的内存地址。PIC中没有矢量中断和优先级管理机制。系统中只有一个中断,要在中断中写上一堆SWITCH代码,来区分中断源和管理优先级。再有就是PIC单片机的引脚设置也是比51复杂,什么输出、输入类型、上拉、下拉电阻、数字输入、模拟输入、比较器输入等等,这些都要在编程器中进行设置,不能在程序中随意的改变。对于从51转到pic单片机的工程师们真是不适应。因为PIC单片机的复杂性,很多做复杂控制的工程师们大多不会使用。虽然PIC单片机的电器抗干扰性能要比51单片机稳定。PIC 8位单片机不适合逻辑复杂的控制类应用。我需要强调一下:是PIC 8位机。目前很多的仪表行业,PIC单片机应用仍然还是很多的,就是因为PIC单片机工作稳定!不过现在单片机都到32位时代了,我想8位机用的地方也有限了。再次感谢Microchip公司设计出这么结构精巧的单片机。除了钻研PIC单片机技术。还在努力了解USB接口技术。当时认为USB接口可能会成为一种广泛的接口技术。甚至有可能取代UART接口。但是由于这种以时分多址为基础的共享总线技术复杂性变态的高,导致了实际应用中工作不稳定!我在了解USB以前可以写一些简单的Windows驱动和Linux/Unix驱动。但直到了解到USB技术才真的“开眼了”,才知道驱动技术真是复杂的让人精神崩溃。甚至怀疑人生!那时候我申请了一片PIC18F4455 DIP40封装的单片机。还用万能板焊了一块开发板。那时USB的资料很少,手头的资料都是零零散散的,有一本“USB标准”的资料。经过很长时间的钻研,Windows开发机蓝屏了无数次,也没有把USB驱动彻底弄通!!只知道USB驱动是“二层驱动”就是工作在一级驱动(主驱动,USB总线驱动)下面的驱动。USB设备是“接口”型设备,它的端点连接的设备有可能是其它类型的另一类设备,如:U盘、鼠标、网卡、打印机等等设备。也可以说USB是一种“桥接设备”,这种“两头堵”的设备管理起来很是复杂。Windows的即插即用的设备管理机制很多不是很透明,也是一种障碍。Linux虽然是开源的但是因为其体系结构简单,又造成了设备管理复杂的问题。Linux的驱动比windows驱动实际上更难编写。直到后来使用USB转串口或是标准HID设备才在自己的设计中使用。
顶一个!
顶一个