![](https://csdnimg.cn/release/download_crawler_static/87508063/bg4.jpg)
二, 键盘扫描程序模块。此模块的功能是判断是否有键按下,无键按下则循环等待,
有键按下则求取键号并将键号送累加器 A 返回。程序中的去抖延时和循环等待延时都用
显示子程序来代替,从而保证随时刷新显示。键盘扫描程序在前面已有详细叙述,在此
不再累述。
三,显示程序模块。将显示缓冲区中的 5 位 BCD 码用动态扫描方式扫描显示,为此必
须首先将 3 字节计时缓冲区中的分、秒、毫秒,压缩 BCD 码拆分为 5 字节。
四,拆字程序与合字程序,如前所述,拆字程序的功能是将 3 字节计时缓冲中的分、秒、
毫秒压缩 BCD 码拆分为 5 字节,BCD 码并刷新显示缓冲区,合字程序的功能是将键盘
设置缓冲区中的 5 位 BCD 码合并为 3 位压缩 BCD 码,送入计时缓冲区或计时值寄存区。
下面分别对各程序模块进行介绍。
1)主程序。主程序流程图如图 9-2 所示。
2)LED 数码管扫描显示程序模块(流程图略)。
3)键盘扫描程序模块
4)键值处理程序模块
5)倒计时程序模块流程图见图 9-3。
主程序:
主程序的设计一般包括:主程序的起始地址,中断服务程序的起始地址,有关内存
单元及相关部件的初始化和一些子程序调用等等。
程序的起始地址
MCS-51 系列单片机复位后,(PC)=0000H,而 0003H~002BH 分别为个中断源的
入口地址。所以,编程池应在 0000H 处写一跳转指令。
当 CPU 接受到中断请求信号并予以响应后,CPU 把当前的 PC 内容压入栈中进行
保护,然后转入响应的中断服务程序入口处执行。一般在响应的中断服务程序入口处写
一条跳转指令,并以跳转指令的目标地址作为中断服务程序的其始地址进行编程。
主程序的初始化内容
所谓初始化,是对用到的单片机内部部件或拓展芯片进行初始工作状态设定。
本次设计中,使用了两个中断,即 T0、T1。其中:
1.T0 中断:采用 T0 定时中断工作方式,完成倒计时。
2.T1 中断:采用 T1 定时中断工作方式,完成蜂鸣器报警。
对于时钟而言,显示显然是另一个重要环节。如前所述,通常有两种显示方式:动态
显示和静态显示。
方案一:串口扩展,LED 静态显示。
该方案占用资源少,采用串口传输实现静态显示,显示亮度有保证,但硬件开销大、
电路复杂、信息刷新速度慢,比较适用于并行口资源较少的场合。
方案二:直接利用 AT89C51 单片机的 P0 和 P2 口,LED 动态显示。
该方案硬件连接简单,但动态扫描的显示方式需占用 CPU 较多时间,在单片机没有