实验十、 微机接口综合实验
1、实验目的
本实验集成了前面几个实验的内容,是一次综合的复习和提高。
2、实验内容
编写程序实现一个以秒为单位的计时器。
要求:计时时间显示在数码管上;用8254、8259和系统时钟产生周期为1秒的计时中断;将键盘进行编号,记作 0 ~ F ,用来输入计时初值,并控制计时器工作。具体功能如下:
- 初始状态:无显示,此时通过数字键0~9输入计时初值,范围为1~99分钟,显示在数码管1和2上。
- A键(启动/取消):初值设置完成后按A键,从计时初值开始倒计时,数码管1和2显示分,数码管3和4显示秒;计时过程中按A键,停止倒计时,回到初始状态。
- B键(暂停/继续):计时过程中按B键,暂停倒计时,显示停止时间;再次按B键,从停止时间继续倒计时。
- 计时结束:倒计时至“0000”时,闪烁三次后回到初始状态。
- C键(退出):任何时刻按C键,熄灭数码管,程序退出。
3、实验记录
1、按键控制:基于键盘扫描实验的代码,增加 if - else 分支结构实现 ABC 键的不同功能操作。
2、定时器中断:本次实验采用了 8254 的计数器0,将 8254 的 OUT0 端口接到 MIR6 中断,使用方式3产生周期性方波来定时触发中断。
3、状态变量:本次实验要求的计时器有3种状态:初始无显示状态、正在倒计时状态、暂停倒计时状态。另外的退出程序状态和计时结束状态不用考虑(计时结束状态与初始无显示状态可以合并)。
4、代码记录:代码量过多,不会在每个地方都作详解。
A8254 EQU 0600H ;8254的计数器0地址
M8254 EQU 0606H ;8254的控制寄存器地址
A8255 EQU 0640H ;8255相关地址
B8255 EQU 0642H
C8255 EQU 0644H
M8255 EQU 0646H
DATA SEGMENT
TAB:
DB 3FH,06H,5BH,4FH
DB 66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH
DB 39H,5EH,79H,71H,00H
TAB2:
T6 DB 10H
T5 DB 10H
T4