我曾经做过两年的单片机产品,在对单片机编程的过程中逐渐形成了一个大体固定的整体框架,也可以说是编程思路。现提出来供大家参考。
首先,对外围芯片进行分类,属同一功能或同一芯片的程序采用模块化的形式,用固定的几个函数实现,一般不同芯片之间的函数功能尽量不重叠,也不要使用一个函数覆盖几个芯片,以便于后期的调试,如果涉及到芯片之间通讯的,可以单独列出,使用专门的函数进行处理;
其次,将单片机中需要完成的工作按轻重缓急进行分类,一般我会设置两个定时中断,其中一个定时时间大致在20mS左右,用来处理一些按钮防抖处理、时间日期计算、对输入处理后产生对应标志位、器件刷新等一些实时性要求不是很高,但必须有时间要求的事物处理,另外设立一个定时中断大概在1mS以下,主要用来实现时钟基准和做一些实时性要求很高的操作,一般需要将实时性要求较高的定时中断设置为高优先级,否则不能实现正常运行,如果还有串行中断需要处理,则需要严格控制实时中断中的代码长度,以免耽误串行中断的处理,还有就是如果使用软件实现串口及无线通讯软解码的场合,也要合理分配各部分的代码长度;
最后,将普通的事件检测和处理以及响应放在主程序体中实现,该部分一般只需要几个并行的函数就可以了,主程序体可以以简单的几行代码实现。
本人采用以上结构开发了若干个单片机产品,包括包含无线软解码的无线防盗报警主机、RS485中继器(一拖100)、带中文显示的报警接收机等,都实现了稳定有效的运行。
希望本人的一些体会会能给大家有所帮助!
关键字:高手 单片机 编程思路
引用地址:
高手谈谈单片机编程思路
推荐阅读最新更新时间:2024-03-16 16:18
基于51单片机的无线识别装置系统设计
1 引言
射频识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据。射频识别工作无须人工干预,非接触,阅读速度快,无磨损,不受环境影响,寿命长,便于使用。目前,射频识别技术在国外发展非常迅速,射频识别产品种类繁多,已广泛用于工业自动化、商业自动化、交通运输控制管理等众多领域,如汽车、火车等交通监控;高速公路自动收费系统;停车场管理系统;物品管理;仓储管理;车辆防盗等。由于我国射频识别技术起步较晚,除用于中国铁路的车号自动识别系统外,仅限于射频公交卡的应用。
在此,给出一种实现简单射频识别系统的方式。阅读器和应答器均包含在单片机控制系统中,利用2ASK调制与解调电路以及匹配网络电路,使整
[网络通信]
基于单片机的汽车尾灯控制器设计
随着现代社会的不断进步,人们愈来愈离不开汽车。然而,随着汽车数量的急剧增加,道路安全就愈发引起人们的关注。现在认识到,仅仅依靠汽车本身的结构因素保证行车安全,已经是不现实的事情,因而必须强化对车辆上涉及安全的主要部位,进行定期的检查,并按一定的技术标准对它们的技术状况加以考核,通过具有一定精度的各种检验台测试取得的数据,科学而又定量地判断车辆安全装置的技术状况,给出恰当的评价。而汽车车灯故障率在汽车行驶过程中是比较高的,车灯故障时,不能正确反应汽车驾驶员的行车意识而给安全行车埋下事故隐患。 而随着电子系统能够在汽车产品中的广泛应用,大大保证了控制系统的自动化,而且汽车造型日趋流线型,汽车尾灯对于汽车整体造型的完美体现有着
[单片机]
STM8单片机学习总结04
所做的“功率LED板”,通过使用STM8完成手机、电脑通过蓝牙控制功率器件的有效动作,自己编写“代码”已经完全调通,其中也遇到不少问题,列举如下: --------------------------制作方面----------------------- 01)、首先就是MCU的选择; 考虑的主要要素为:价格低、资源够,后来又添加了“封装小”;实际中,但以“功能实现”而言,“51单片机”、“stm32”、“MSP430”、“AVR”全部可以满足需求,但综合考虑后,可能得仔细斟酌,新闻上面报道过现在已经有“小封装”、“功能足”的“51单片机”,价格在“1.0RMB”左右,但未具体查询过,后续有需求时,再更新; 02)、然后,“原
[单片机]
基于单片机的交通灯系统设计
#include stcreg.h #define uchar unsigned char #define uint unsigned int sbit FMQ=P3^4; sbit QR=P2^7; sbit QY=P2^6; sbit QG=P2^5; sbit HR=P2^7; sbit HY=P2^6; sbit HG=P2^5; sbit ZR=P2^4; sbit ZY=P2^3; sbit ZG=P2^2; sbit YR=P2^4; sbit YY=P2^3; sbit YG=P2^2; sbit SWITCH1=P1^0; sbit SWITCH2=P1^1; sbit SWITCH3=P1^2; sbit
[单片机]
怎样去设计一种基于STM32单片机的智能手环脉搏心率计步器
一:功能 基于STM32单片机智能手环心率计步器体温显示设计 本设计由STM32F103C8T6单片机核心板电路+ADXL345传感器电路+心率传感器电路+温度传感器+lcd1602电路组成。 1、通过重力加速度传感器ADXL345检测人的状态,计算出走步数、走路距离和平均速度。 2、通过心率传感器实时检测心率,通过温度传感器检测温度。 3、lcd1602实时显示步数、距离和平均速度、心率以及温度值。 二:电路图 三:源代码 #include led.h #include delay.h #include sys.h #include usart.h #include #include t
[单片机]
单片机ATMEGA16键盘及显示电路
输入及显示电路采用4个按键,和用功能切换完成对输出电压的设定及显示切换。显示部分采用共阳极数码管动态显示,如图所示。单片机ATMEGA16采用内部8 MHz晶振。 图 键盘及显示电路
[电源管理]
自制单片机之五(1)……LCD1602的驱动
LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,定义如下表所示: 字符型LCD的引脚定义 HD44780内置了DDRAM、CGROM和CGRAM。 DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表: 也就是说想要在LCD1602屏
[单片机]
8位MCU TM56F1552在电陶炉的应用方案,集成低噪声OPA
随着人们生活水平的不断提高,消费者对厨房电器的要求越来越高,对电器的环保节能特性,安全性,灵活性等都有很高的需求,电陶炉由于其加热效率高且可以持续加热,无辐射,适用性高等特点很好的满足了目前消费者的需要。 为了满足市场上对于电陶炉产品的需求,本文介绍一种成熟的电陶炉产品整体解决方案,方案由AC-DC电源芯片与8位MCU主控两部分组成,MCU内置触摸模块,LED/LCD显示驱动模块,多路PWM输出,带基准电压源的ADC以及EEPROM存储器等模块。其中主控TM56F1552芯片内集成了低噪声OPA,CMP,LDO,CTK,可以减少产品零件数目及降低成本。 方案中TM56F1552是一款8位内置OPA,外围电路简单,可以节省B
[嵌入式]