实验题目一:完成计时功能(定时灯的亮灭)
题目:编程实现LED灯每隔5秒明暗交替(即LED亮5秒后暗5秒,往复交替)。
分析:
- 1. 由交替往复可得知使用工作方式3进行
- 2. 由方式3的OUT波形可知,要想实现5秒亮灭的转换,需要实现输出周期为10秒(OUT方波5秒为高电平,5秒为低电平)
- 3. 要实现输出周期为10秒(0.1Hz)的方波,需要计数5M Hz / 0.1Hz = 5*106 Hz / 0.1Hz = 5*107 = 50,000,000次。由于每个计数通道最多可以计数65,536次,因此必须采用计数通道级联使用。
- 4. 级联即使用通道一先计算5000次,再使用通道2计算1000次,相当于双重for循环,则可实现50000次的计数操作
代码:
CODE SEGMENT
ASSUME CS : CODE
; 通道1初始化,先高后低,方式3,二进制计数
START: MOV AL , 01110110B
MOV DX , 323h
OUT DX , AL
; 通道2初始化,先高后低,方式3,二进制计数
MOV AL , 10110110B
MOV DX , 323h
OUT DX , AL
AGAIN: MOV AX , 50000 ;通道1初值50000,OUT1输出信号周期为0.01秒
MOV DX , 321H
OUT DX , AL
MOV AL , AH
OUT DX , AL
MOV AX , 1000 ; 通道2送初值1000,OUT2输出方波周期为10秒
MOV DX , 322H ; 10秒方波=5秒高电平+5秒低电平
OUT DX , AL
MOV AL , AH
OUT DX , AL
JMP AGAIN
CODE ENDS
END START
实验题目二:完成计数器功能(输入固定个数的单脉冲信号实现灯的亮灭)
题目:
8253 的端口地址范围为300H—303H,计数通道1的GATE1引脚连接 +5V电源, CLK1引脚连接单脉冲按钮,每按下一次按钮就输入一个单脉冲信号,OUT1引脚连接发光二极管 L0。要求:编写完整汇编语言程序,实现每按5次单脉冲按钮,改变1次发光二极管的亮灭。
分析:
- 1. 使用工作方式3完成循环往复的灯亮灭操作
- 2. 由于接收到的是随机的单脉冲信号,不是有准确时间规律的信号,因此8053完成的是计数功能,而不是计时功能
- 3. 计数5次改变1次灯的亮灭,则设置计数初值为10次
代码: