您的位置:首页 > 其它

实验6、8254定时/计数器实验

2020-01-15 10:10 846 查看

实验内容
基础部分:
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
  • 点赞 1
  • 收藏
  • 分享
  • 文章举报
成长的菜鸟。。。 发布了15 篇原创文章 · 获赞 2 · 访问量 1159 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: