首页 > 编程语言 >1-5可编程定时器/计数器 8253 实验

1-5可编程定时器/计数器 8253 实验

时间:2023-08-27 21:33:00浏览次数:56  
标签:定时器 8253 Buffer MOV AL DX AX 可编程 OUT

EXTRN InitKeyDisplay:NEAR, Display8A:NEAR
IO8259_0 EQU 0250H
IO8259_1 EQU 0251H
COM_ADDR EQU 0263H
T2_ADDR EQU 0262H
_STACK SEGMENT STACK
DW 100 DUP(?)
_STACK ENDS
_DATA SEGMENT WORD PUBLIC 'DATA'
BUFFER DB 8 DUP(?)
Counter DB ?
ReDisplayFlag DB 0
_DATA ENDS
CODE SEGMENT
START PROC NEAR
ASSUME CS:CODE, DS:_DATA, SS:_STACK
MOV AX,_DATA
MOV DS,AX
MOV ES,AX
NOP
CALL InitKeyDisplay
CALL Init8259
CALL Init8253
CALL WriIntver
MOV Counter,0 							;中断次数
MOV ReDisplayFlag,1 				;需要显示
STI 												;开中断
START1: LEA SI,Buffer
CALL LedDisplay
CALL Display8A
STI
JMP START1
Init8259 PROC NEAR ;8259A 的初始化程序
MOV DX,IO8259_0
MOV AL,13H
OUT DX,AL
MOV DX,IO8259_1
MOV AL,08H
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,0FEH
OUT DX,AL
RET
Init8259 ENDP
Init8253 PROC NEAR 					;编写 8253 的初始化程序
MOV DX,COM_ADDR 						;计数器 T2 设置在模式 0 状态,BCD 码计数,初值
MOV AL,91H
OUT DX,AL
MOV DX,T2_ADDR
MOV AL,05H
OUT DX,AL
RET
Init8253 ENDP
WriIntver PROC NEAR
PUSH ES
MOV AX,0
MOV ES,AX
MOV DI,20H
LEA AX,INT_0
STOSW
MOV AX,CS
STOSW
POP ES
RET
WriIntver ENDP
LedDisplay PROC NEAR
MOV AL,Counter
AND AL,0FH
MOV Buffer,AL
MOV Buffer + 1,10H 					;高七位不需要显示
MOV Buffer + 2,10H
MOV Buffer + 3,10H
MOV Buffer + 4,10H
MOV Buffer + 5,10H
MOV Buffer + 6,10H
MOV Buffer + 7,10H
RET
LedDisplay ENDP
INT_0: PUSH DX
PUSH AX
MOV AL,Counter
ADD AL,1
DAA
MOV Counter,AL
MOV DX,IO8259_0
MOV AL,20H
OUT DX,AL
MOV DX,T2_ADDR
MOV AL,05H
OUT DX,AL
POP AX
POP DX
IRET
START ENDP
CODE ENDS
END START

实验原理图

1-5可编程定时器/计数器 8253 实验_原理图

标签:定时器,8253,Buffer,MOV,AL,DX,AX,可编程,OUT
From: https://blog.51cto.com/u_16147979/7254694

相关文章

  • 【STM32】4_1 通用定时器
    通用定时器概述定时器分类表如下图所示通用TIMx定时器具有以下特性:●16位(TIM3和TIM4)或32位(TIM2和TIM5)递增、递减和递增/递减自动重载计数器。●16位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于1到65536之间。●多达4个独立......
  • 【STM32】4_0 基础定时器
    基础定时器TIME6和TIME7基本定时器•16位计数器(Counter):基础定时器内部有一个16位的自动增减计数器。计数器可以通过软件或外部触发递增。•时钟源(ClockSource):基础定时器可以使用不同的时钟源作为计数器的输入时钟。通常,它可以选择使用内部时钟(如系统时钟)或外部时钟(如外部......
  • 【STM32】4_0 基础定时器
    基础定时器TIME6和TIME7基本定时器•16位计数器(Counter):基础定时器内部有一个16位的自动增减计数器。计数器可以通过软件或外部触发递增。•时钟源(ClockSource):基础定时器可以使用不同的时钟源作为计数器的输入时钟。通常,它可以选择使用内部时钟(如系统时钟)或外部时钟(如外部......
  • STM23学习记录2:外部中断,串口通信,定时器
    外部中断:向量表:异常+中断所有端口的PIN0对应着EXTI0中短线,PIN1对应EXTI1中断线,依次类推16个外部中断线,对应7个外部中断入口地址配置中断优先级的4位要同时完成抢占优先级和响应优先级(子优先级或副优先级)的配置:两组优先级2+2,2^2抢占,2^2响应比较常用使用NVIC_PriorityGroupCon......
  • 定时器之编码器接口
    实现对正交(相位相差90°)编码器自动计次 这个编码器接口。其实就相当于是一个带有方向控制的外部时钟它同时控制着CNT的计数时钟和计数方向每隔一段事件计数并清零,就可以得到其速度正交信号精度高,可以抗噪声(一个引脚不变,另外引脚毛刺的话,计数的值会+1-1循环,而保持不变) ......
  • 定时器之输入捕获
    同一个定时器,输入捕获和输出比较只能使用一个 检测到电平跳变,执行后面的动作。当前CNT的值,锁存到CCR寄存器中   高频使用测频法,低频使用测周法,分界值呢?使用中界频率区分 测频法实现逻辑:每来一个上升沿记一次X+=1,  使用定时器定时1S,到时间统计这个X值,就是频率,同......
  • 定时器
      基本定时器,只能使用内部时钟 时基单元包括:PSC预分频器、CNT计数器、自动重装寄存器 当PSC=0时不分频,还是72MHz;当PSC=1时就是2分频,等于72/2=36MHz   16位 CNT计数器对分频后的脉冲计数,通过上升沿+1   16位,//当值增加到65535后再增加就清零,触发中断,运......
  • 10 JavaScrit定时器
    10JavaScrit定时器在JS中,有两种设置定时器的方案://语法规则t=setTimeout(函数,时间) //经过xxx时间后,执行xxx函数//5秒后打印我爱你t=setTimeout(function(){console.log("我爱你")},5);window.clearTimeout(t)//停止一个定时器//语法规则t=se......
  • 立式门禁软件定时器问题
    论坛文章:文章1文章2注意:rttgpio驱动有问题,使用时注意啦......
  • CH32V003的系统定时器SysTick
    在CH32V003内部有一个特殊的定时器——系统定时器(SysTick),它位于青稞V2微处理内核里面,是RISC-V内核的一个组成部分,主要用来给操作系统提供时间片轮转的定时,一般固定为10ms的定时,所以中文也称它为“嘀嗒”定时器(也称“心跳”定时器)。在不跑操作系统时,可以把它当作普通定时器来使用,一......