专用型单片机有哪些 有哪些单片机( 三 )


对于单片机的编程,其基本框架可以说是大体一致的 , 一般分为三个部分:初始化部分(这是单片机编程与PC最大的区别)、主程序循环体和中断处理程序,解释如下:
初始化:对于所有单片机程序的设计来说 , 外化是最基本也是最重要的一步,一般包括以下内容:
屏蔽所有中断 , 初始化堆栈指针:初始化部分一般不希望有任何中断 。
清空系统的RAM区域和显示内存:虽然有时候可能不完全需要,但是从可靠性和一致性的角度,特别是为了防止意外错误,建议养成良好的编程习惯 。
IO口初始化:根据项目的应用需求,设置相关IO口的输入输出模式 , 设置输入口的上拉或下拉电阻;对于输出端口,需要设置其原始电平输出,以防止不必要的错误 。
中断设置:打开项目需要的所有中断源,设置中断的触发条件 , 不使用的不必要中断必须关闭 。
其他功能模块的初始化:所有需要使用的MCU外围功能模块都必须根据项目的应用需求进行设置,如UART通信、波特率、数据长度、校验模式、停止位长度等 。,而对于编程器定时器,必须设置其时钟源、分频数和重载数据 。
参数外化:MCU的硬件和资源外化后,下一步就是初始化程序中用到的一些变量和数据 。这部分的初始化需要根据具体项目和程序的整体安排来设计 。对于一些使用EEPROM保存预设项目数的应用 , 建议在初始化时将相关数据复制到MCU的RAM中,以提高程序对数据的访问速度,降低系统功耗(原则上访问外部EEPROM会增加电源功耗) 。
主程序循环:大多数单片机都是长时间连续运行的,所以它的主程序基本上是以循环的方式设计的 。对于有多种工作模式的应用,可能会有多个循环体,通过状态标志进行转换 。对于主程序体,通常主要安排以下模块:
计算程序:计算程序一般比较耗时 , 所以坚决反对任何中断 , 尤其是乘除法 。
传输程序:主要用于带外置LED和LCD驱动器的应用 。
中断处理程序:中断程序主要用于处理实时性要求高的任务和事件,如外部突发信号检测、按键检测与处理、定时计数、LED显示屏扫描等 。
一般来说,中断程序应该保持代码尽可能的简洁 。对于不需要实时处理的功能,可以在中断中设置触发标志,然后由主程序执行具体的事务——这一点非常重要,尤其是对于低功耗低速的MCU,必须保证所有中断的及时响应 。
对于不同任务体的安排 , 不同MCU的处理方式也不同 。
比如对于低速低功耗MCU(Fosc=32768Hz)的应用,考虑到这些项目都是手持设备和普通的LCD显示器,对按键和显示器的响应要求实时性很高 。因此,一般采用定时中断来处理按键动作和数据显示 。对于高速MCU,如Fosc》1MHz的应用,由于此时MCU有足够的时间执行主程序循环,所以各种触发标志只能在相应的中断中设置,所有任务都可以在主程序中执行 。
在单片机的编程中,还需要特别注意防止在中断和主程序体中同时访问或设置同一个变量或数据 。有效的防范方法是将此类数据的处理安排在一个模块中 , 通过判断触发标志来决定是否执行数据的相关操作;在其他程序中(主要是中断),只对需要处理数据的地方设置触发标志 。――这可以确保数据的执行是可预测的和唯一的 。
全球主流MCU制造商
欧美地区
1.飞思卡尔恩智浦(Freescale NXP):荷兰,主要提供16位和32位MCU 。应用:汽车电子、LED和普通照明、医疗保健、多媒体融合、家用电器和电动工具、建筑自动化技术的电机控制、电源和功率转换器、能源和智能电网、自动化、计算机和通信基础设施 。
2.微芯片Atmel(微芯片技术爱特梅尔):美国,主要提供16位和32位MCU 。应用领域:汽车电子、工业应用、电机控制、汽车、楼宇自动化、家用电器、家庭娱乐、工业自动化、照明、物联网、智能能源、移动电子设备、计算机外设 。
3.Cypress Spansion:美国,主要提供8位、16位、32位MCU 。应用:汽车电子、家用电器、医疗、消费电子、通讯和电信、工业、无线 。
4.ADI(雅德诺半导体):美国,主要提供8位、16位、32位MCU 。应用:航空空航空航天和国防、汽车应用、建筑技术、通信、消费电子、能源、医疗保健、仪器仪表和测量、电机、工业自动化、安全 。
5.英飞凌(Infineon):德国,主要提供16位和32位MCU 。应用领域:汽车电子、消费电子、工程、商用车和农用车、数据处理、电动交通、工业应用、医疗设备、移动设备、电机控制和驱动、电源、电动自行车和摩托车用小型电动汽车、智能电网、照明、太阳能系统解决方案、风能系统解决方案 。

推荐阅读