实验内容
基础部分:
1、编写程序,是8254的计数器1分别工作在方式0、1、2、3下,在示波器上观察各工作方式下OUT1的输出波形。
拓展部分:
2、使用单脉冲开关手动生成8254的输入时钟,观察方式0的输出波形。
3、编写程序,在示波器上显示周期为1s的方波。
4、利用8254方式2或方式3精确定时,控制LED等D7~D0的点亮:
- 初始时,D7~D0全部熄灭;
- 1秒钟之后点亮D0,再经过1秒D1D0点亮,…,8秒钟之后D7~D0全部点亮。
代码
1
CONUTER0 EQU 0600H
CONUTER1 EQU 0602H
CONUTER2 EQU 0604H
CON8254 EQU 0606H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX, CON8254
;MOV AL,70H ;计数器1工作在方式0
;MOV AL,72H ;方式1
MOV AL,74H ;方式2
;MOV AL, 76H ;方式3
OUT DX, AL
MOV DX, CONUTER1
MOV AL, 00H
OUT DX, AL
MOV AL, 48H
OUT DX, AL
AA1:
JMP AA1
;将GATE1置为高电平,运行程序,在示波器中可以看到OUT1输出一段高电平后会输出一个宽度为一个周期的负脉冲。
CODE ENDS
END START
2
A8254 EQU 0600H
B8254 EQU 0602H
C8254 EQU 0604H
CON8254 EQU 0606H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX, CON8254
MOV AL, 70H ;8254计数器1工作在方式0,计数时输出低电平,到0时输出高电平
OUT DX, AL
MOV DX, B8254
MOV AL, 00H
OUT DX, AL
MOV AL, 48H ;写入计数初值4800H,接18.432KHZ时钟源,这样可到达计时1s后输出正跃变信号
OUT DX, AL
AA1:
JMP AA1
;将GATE1置为低电平,运行程序。
;将GATE1置为高电平,在示波器中可以观察到OUT1输出低电平,待过一段时间后(计数器减至0)输出高电平。
CODE ENDS
END START
3
A8254 EQU 0600H
B8254 EQU 0602H
C8254 EQU 0604H
CON8254 EQU 0606H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX, CON8254
MOV AL, 76H ;8254计数器1工作在方式3,产生方波信号
OUT DX, AL
MOV DX, B8254
MOV AL, 00H
OUT DX, AL
MOV AL, 48H ;写入计数初值4800H,接18.432KHZ时钟源,这样方波周期则为1s
OUT DX, AL
AA1:
JMP AA1
CODE ENDS
END START
4
COUNTER0 EQU 0600H
COUNTER1 EQU 0602H
COUNTER2 EQU 0604H
CON8254 EQU 0606H
A8255 EQU 0640H
B8255 EQU 0642H
C8255 EQU 0644H
CON8255 EQU 0646H
DATA SEGMENT
LASTNUMBER DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,CON8255
MOV AL,80H ;A--OUT,B--OUT
OUT DX,AL
;设置中断向量 MIR6
MOV AX,OFFSET MIR6 ;存偏移量
MOV SI,38H
MOV [SI],AX
MOV AX,CS ;存段地址
MOV SI,3AH
MOV [SI],AX
CLI ;关闭中断
;设置ICW1~ICW4和OCW1
MOV AL,11H
OUT 20H,AL
MOV AL,08H ;中断源选择IR0
OUT 21H,AL
MOV AL,04H ;S2为1表示有内部从片被级联到主片的IR2上
OUT 21H,AL
MOV AL,07H ;D2为1表示其为主片,D1为1表示为自动中断,D0为1表示为8086~Pentinum的CPU
OUT 21H,AL
MOV AL,2FH ;M7和M6为0表示IR7和IR6,IR4(用于复位)三个个中断未被屏蔽,其它中断均被屏蔽
OUT 21H,AL
STI ;打开中断
MOV DX,CON8254
MOV AL,76H ;计数器1工作在方式3
OUT DX,AL
MOV DX,COUNTER1
MOV AL,00H
OUT DX,AL
MOV AL,48H
OUT DX,AL ;计数初值4800H,选用时钟18.432KHZ
MOV AL,00H
MOV DX,B8255
MAIN:
OUT DX,AL
JMP MAIN
MIR6:
CMP AL,0FFH
JZ I1
ROL AL,1
INC AL
JMP I2
I1:
MOV AL,00H
I2:
IRET
CODE ENDS
END START