目录
8254-计时器应用实验
要求:将计数器0设为方式0,设定计数器初值为5,GATE接开关。
程序开始运行后,按如下要求操作:
将开关置高电平,观察Led灯的亮灭,然后按动单次脉冲,数一数到底经过多少个单次脉冲后,Led灯的亮灭发生变化。
实验代码
IO8254_MODE EQU 283H ;8254 控制寄存器端口地址
IO8254_COUNT0 EQU 280H ;8254 计数器 0 端口地址
IO8254_COUNT1 EQU 281H ;8254 计数器 1 端口地址
IO8254_COUNT2 EQU 282H ;8254 计数器 2 端口地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX, IO8254_MODE ;初始化 8254 工作方式
MOV AL,11H ;计数器 0,方式 0,十进制编码
;依据8254的方式控制字格式,计数器0对应D7D6位00,读写格式选择读写低 8位即D6D5位01,工作方式0对应D3D2D1位000,十进制数对应D0位1,即00010001,十六进制即11H
OUT DX, AL
MOV DX, IO8254_COUNT0;装入计数初值
MOV AL, 05H
OUT DX,AL
MOV AX,4C00H ;返回到 DOS
INT 21
CODE ENDS
END STAR
8254-对比实验
要求:参考实验一的程序,使用计数器0和计数器1,计数器0设方式2,计数器1设方式3,修改代码和接线图,观察不同工作方式下,GATE信号变化,实验运行现象的不同,对比分析8254不同工作方式的差别。
接线说明
GATE接到同一个开关上(利用扩展区),Led灯分别接到两个灯上,CLK0和CLK1同时接到上升沿单次脉冲上。
实验代码
IO8254_MODE EQU 283H ;8254控制寄存器端口地址
IO8254_COUNT0 EQU 280H ;8254计数器0端口地址
IO8254_COUNT1 EQU 281H ;8254计数器1端口地址
IO8254_COUNT2 EQU 282H ;8254计数器2端口地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX, IO8254_MODE ;初始化8254工作方式
MOV AL,15H ;计数器0,方式2, 10进制 0001 0101
OUT DX, AL
MOV DX, IO8254_COUNT0 ;装入计数初值到计数器0
MOV AL,05H
OUT DX,AL
MOV DX, IO8254_MODE ;初始化8254工作方式
MOV AL,57H ;计数器1,方式3, 10进制 0101 0111
OUT DX, AL
MOV DX, IO8254_COUNT1 ;装入计数初值到计数器1
MOV AL,05H ;计数初值为5
OUT DX,AL
MOV AX,4C00H ;返回到DOS
INT 21H
CODE ENDS
END START
8255-验证实验
要求:在设计接线以及填写代码时,选择用B口输入、A口输出,实现基本输入输出实验。
编写程序,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。
实验代码
IO8255_MODE EQU 28BH
IO8255_A EQU 288H
IO8255_B