图8按键电平复位电路 图9按键脉冲复位电路
3.2 软件设计
本设计软件部分包含三大部分: 主程序,紧急情况中断服务子程序,显示子程序。
1)设计思想
本设计采用了汇编语言编写,汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。
2)主程序设计
本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序和外部中断1服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用。协调各个子程序之间的联系。系统(上电)复位后,进入主程序,主程序流程图如图10所示,部分子程序流程图由图11、12、13、14、15、16给出。首先对系统进行初始化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0”、赋定时器初值,初始化完毕后,就进入数码管显示程序。在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启外部中断等操作,当定时时间到后就转去执行定时中断程序。当外部中断有请求则去执行外部中断服务。并在执行完后返回主程序。
5
开始 程序初始化 开各中断 P1.0=?1 否 是 关定时器0,1 调用显示子程序 P1.0=?0 否 是 P1.2=?1 否 是 关定时器0,1 P1.2=?0 否 是 图10 主程序流程图 R1=R1+1 否 R1=?#0ah是 R1=#00H R2=R2+1 R2=?#0ah 否 是 R2=#00H 14H=R1 结束 图11 加一子程序流程图
6
定时器T0入口地址 置初值 INT1入口地址 INT0入口地址 开定时器0 中断返回 12 INT0中断子程序14H=#00H 13H=#00H 调用显示子程序 R1=#00H R2=#00H 中断返回 13 INT1中断子程序7
R3-1=?0 否 调用加一子程序是 调用数码显示子程序 R3=#20H 重置循环次数 中断返回 图14定时器T0子程序
图
图
R7=#02H 置数码管个数 R0=14H 置首地址 R6=#08H 置数码管个数 A=@R0 A=@A+dptr A循环左移 P3.1清零 P3.0=C P3.1置位 R6-1=?0 否 是 R0=R0-1 否 R7-1=?0 是 返回 图15数码显示流程图
定时器T1入口地址 置初值 关定时器T0 开定时器T1 12H=R111H=R2 P1.0=?0 否 是 调用加一子程序 调用暂停键子程序 调用数码显示子程序 中断返回 图16定时器T1子程序
8
3.3仿真结果
9