8253计数器/定时器实验

实验题目一:完成计时功能(定时灯的亮灭)

题目:编程实现LED灯每隔5秒明暗交替(即LED亮5秒后暗5秒,往复交替)。

分析:

  1. 1. 由交替往复可得知使用工作方式3进行
  2. 2. 由方式3的OUT波形可知,要想实现5秒亮灭的转换,需要实现输出周期为10秒(OUT方波5秒为高电平,5秒为低电平)
  3. 3. 要实现输出周期为10秒(0.1Hz)的方波,需要计数5M Hz / 0.1Hz = 5*106 Hz / 0.1Hz = 5*107 = 50,000,000次。由于每个计数通道最多可以计数65,536次,因此必须采用计数通道级联使用。
  4. 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. 1. 使用工作方式3完成循环往复的灯亮灭操作
  2. 2. 由于接收到的是随机的单脉冲信号,不是有准确时间规律的信号,因此8053完成的是计数功能,而不是计时功能
  3. 3. 计数5次改变1次灯的亮灭,则设置计数初值为10次

代码:

猜你喜欢

转载自blog.csdn.net/weixin_45662399/article/details/124107587