沈阳化工大学学士学位论文 第五章 软件系统设计
单片机开发中除必要的硬件外,同样离不开软件,汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法。机器汇编是通过汇编软件将源程序变为机器码,用于51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展。C语言是一种通用的计算机程序设计语言,既可以编写计算机的系统程序,也可以编写一般的应用程序。[2]Keil软件是目前最流行开发MCS-51系列单片机的软件。Keil提供了包括连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,开发环境(uVision)将这些部分组合在一起[7]。
5.2.2 Keil uVision4的组成
C51工具包的整体结构,其中uVision与Ishell分别是集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的试器dScope51或tScope51使用进行源代码级调试。
5.3 初始化
5.3.1 系统的始化
对各个引脚分别初始化,清空各个芯片的片选,对变量,系统时钟,定时器0、PWM,AD初始化,开启总中断。
5.4 主程序
主程序流程图见图5.1所示。
14
C编译器、宏汇编、通过一个集成C51 for Windows和for Dos的C51及A51编译器编译生成L51Hex文件,以供调7279芯片,沈阳化工大学学士学位论文 第五章 软件系统设计
开始 变量初始化 始终初始化 7279初始化 T0初始化 PWM初始化 延时子函数 PWM处理子函数 按键处理子函数 显示处理子函数 主函数 0 key_fla1 按键处理 显示处理 PWM处理
图5.1 主程序流程图
15
沈阳化工大学学士学位论文 第五章 软件系统设计
系统上电后,首先对单片机系统的各个控制引脚初始化,以确保各硬件功能块正常工作。系统初始化后,则对任务初始化,使各个任务处于正常状态。在While循环中则不停的查询任务标志的状态,取出处于就绪状态的任务标志。根据任务的标志调用相应的子函数,在子函数中使任务处于非就绪状态。当完成就绪的任务后,返回到主函数,继续查询任务状态。在主函数中,常量SYS_TIMER_TASK、PT2272PROCTASK、DETECTPROCTASK……的顺序是根据任务的紧急情况来排列的。即当两个以上的任务同时处于就绪状态时,则执行值小的(情况紧急的)事件,然后执行次级任务[8]。
5.5 子程序
5.5.1 系统时钟初始化子函数
STC12C5A60S2系列是1T的8051单片机,系统时钟兼容传统8051。 是1T的8051单片机,系统时钟兼容传统8051。
时钟分频见图5.2。
图5.2 时钟分频图
STC12C5A60S2系列单片机有两个时钟源:内部R/C振荡时钟和外部晶体时钟。现出厂标准配置是使用芯片内部的R/C振荡器,5V单片机常温下频率是 5V单片机常温下频率是 单片机常温下频率是11MHz - 17MHz,3V单片机常温下 单片机常温下频率是8MHz - 12MHz,因为??温度的变化,内部 因为??温度的变化,内部R/C振荡器的频率会有一些温飘,再?上制造误差,故内部R/C振荡器只适用于对时钟频率要
16
沈阳化工大学学士学位论文 第五章 软件系统设计
求不敏感的场合。
时钟结构见图5.3。
图5.3 始终结构图
本系统中采用的单片机是STC12C5A60S2,它比传统51单片机多了许多总要功能,其中一点就是它的速度是普通单片机的12倍,本系统未分频,外部晶振是12M的话,即可达到12M/s。
5.5.2 7279芯片初始化
时序图见图5.4。 (1)纯指令
(2)带数据指令
17
沈阳化工大学学士学位论文 第五章 软件系统设计
(3)读键盘指令
图5.4 7279时序图
使用7279芯片前,必须读懂时序图,这样才能写好程序,使所想功能得到实现,不然写出的程序不能和所想同步。
5.5.3 定时器0初始化子函数
定时器0的初始化是为了使输出的PWM频率可调,这是STC12C5A60S2单片机特有的功能,定时器0的初始化,使频率可调平滑、范围宽[9]。
STC12C5A60S2系列单片机有4个定时器,其中定时器0和定时器1两个16位定时器,与传 单片机有4个定时器,其中定时器0和定时器1两个16位定时器,与传统8051的定时器完全兼容,也可以设置为1T模式,当在定时器1做波特率发生器时,定时器0可以当两个8位定时器用(另外2路PCA/PWM可以再实现2个16位定时器)。
STC12C5A60S2系列单片机内部设置的两个16位定时器/计数器T0和T1都具有计数方式和 单片机内部设置的两个16位定时器/计数器T0和T1都具有计数方式和定时方式两种工作方式。对每个定时器/计数器(T0和T1),在特殊功能寄存器TMOD中都有一控制位— C/T来选择T0或T1为定时器还是计数器。定时器/计数器的核心部件是一个
18