实验三、可编程定时器计数器
1、编程提示
编程将计数器0设置为方式0,计数器初值为N(N<0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,可以用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)
2.编程将计数器0、计数器1分别设置为方式3,计数器初值为1000, 用逻辑笔观察OUT1输出电平变化(频率1HZ)
8253控制寄存器地址 283H 计数器0地址 280H 计数器1地址 281H CLK0连接时钟 1MHZ
1.
CODE SEGMENT
ASSUME CS:CODE STATRT: MOV AL,00010001B ;设置8253通道0为工作方式0,BCD码
MOV DX,283H
OUT DX,AL
MOV AL,09H
MOV DX,280H ;送计数初值09h
MOV DX,AL
L1: IN AL.DX ;读计数初值
CALL DISP ;调用显示子程序 PUSH DX
MOV AH,06H ;检查是否有键按下 MOV DL,0FFH INT 21H POP DX
JZ L1
MOV AH,4CH ;退出DOS INT 21H
DISP PROC NEAR PUSH DX
AND AL,0FH MOV DL,AL
CMP DL,9 JLE NUM ADD DL,7 NUM: ADD DL,30H
MOV AH,02H INT 21H
MOV DL,0DH INT 21H
MOV DL,0AH INT 21H POP DX RET
DISP ENDP
CODE ENDS
END START
2.
CODE SEGMENT ASSUME CS:CODE
START: MOV AL,00110111B MOV DX,283H
OUT DX,AL
MOV AL,00H MOV DX,280H
OUT DX,AL MOV AL,10H
MOV AL,01110111B MOV DX,283H
;显示子程序
;首先取低四位
;判断是否<=9
;若是则为“0—9”ASCII加30H ;否则为A-F,ASCII加37H ;显示 ;加回车符 ;加换行符 ;向8253写控制字,使通道0为工作方式3 ;先写低字节00H再写高字节10H ;向8253写控制字,使通道1为工作方式3 OUT DX,AL
MOV AL,00H ;先写低字节00H再写高字节10H
MOV DX,281H OUT DX,AL MOV AL,10H
MOV AH,4CH ;退出DOS INT 21H
CODE ENDS
END START
相关推荐: