以下内容源自微机原理实验指导书
仅供学习交流使用
请您阅读文章声明,默认同意该声明
1、掌报8254的工作方式及应用编程;
2、掌据8254的典型应用电路接法;
3、学习8254在PC系统中的典型应用方法。
1、通讨定验简担很的单次脉冲单元,按动微动开关向计数器依次发出单脉冲,观察每来一个脉冲时计新当前计数值的变化情况。
2、定时应用定验。编写程序,应用8254的定时功能,产生一个1s的方波,并用本装置的示波器功能观察。
8254是Intel公司生产的可编程间隔定时器。是8253的改进型,比8253具有更优良的性能。
8254具有以下基本功能:
(1)有3个独立的16位计数器;
(2)每个计数器可按二进制或十进制(BCD)计数;
(3)每个计数器可编程工作于6种不同工作方式;
(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz);
(5)8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的 容。
(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。
计数初值公式为n=fCLKi / fOUTi其中fCLKi是输入时钟脉冲的频率, fOUTi是输出波形的频率。
图3-1-1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。8255的工作方式如下述:
(1)方式0:计数到0结束输出正跃变信号方式
(2)方式1:硬件可重触发单稳方式。
(3)方式2:频率发生器方式,
(4)方式3:方波发生器
(5)方式4:软件触发选通方式
(6)方式5:硬件触发选通方式。
图3-1-18254的内部接口和引脚
8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。方式控制字格式如表3-1-1所示。读回控制字格式如表3-1-2所示。当读回控制字的D4位为0时,由该读回控制字D1-D2位指定的计数器的状态寄存器内容将锁存到状态寄存器中。状态字格式如表3-1-3所示。
8254实验电路原理图如下图所示。
1、计数应用实验
图3-1-2为参考连线图。OUT0可以连接到一个LED,以观察其输出的高低电平值。将计数器0设置为方式0,计数初值N可自行决定,按动单次脉冲单形(位于实验台底都中间)的微动开关产生单次脉冲送CLK。编写程序在屏幕上显示计数器0的当前计数值。
实验步骤如下所述:
(1)按实验内容编写程序,实现8254对KK1+按键次数的响应
-------------理论知识------------
1、确认端口地址
IO基地址0600H
XR1---A0
XR2---A1
地址范围600H~603H
0#计数器端口地址:0600H
1#计数器端口地址:0602H
2#计数器端口地址:0604H
控制寄存器端口地址:0606H
2、确定工作方式与计数初值
计数器0工作于方式0,计数结束产生中断方式
读
写
3、确定控制字
写
00 11 000 0
读
00 00 000 0
4、初始化程序
A EQU 0600H
B EQU 0602H
C EQU 0604H
S EQU 0606H
;N=9;计数初值
CODE SEGMENT
ASSUME CS:CODE
START:
;初始化计数器0程序
MOV AL,00110000B
MOV DX,S
OUT DX,AL ;送控制字
MOV DX,A
MOV AL,09H ;9 =0000 1001
OUT DX,AL ;送低8位
MOV AL,00H ;9 =0000 0000
OUT DX,AL ;送高8位
;读取计数器0当前的计数值到CX中
MOV AL,00000000B
MOV DX,S
OUT DX,AL ;送控制字
MOV DX,A
IN AL,DX ;读低8位
MOV CL,AL
IN AL,DX ;送高8位
MOV CH,AL
CODE ENDS
END START
-------------理论知识------------
-------------具体实践------------
;IOY0 EQU 0A000H ;片选IOY0对应的端口始地址
IOY0 EQU 0600H ;片选IOY0对应的端口始地址
;T8254-1.asm
;查看端口资源分配情况,记录实验系统I/O端口始地址
INTR_IVADD EQU 003CH ;INTR对应的中断矢量地址
IOY0 EQU 0600H ;片选IOY0对应的端口始地址
MY8254_COUNT0 EQU IOY0+00H*2 ;8254计数器0端口地址
MY8254_COUNT1 EQU IOY0+01H*2 ;8254计数器1端口地址
MY8254_COUNT2 EQU IOY0+02H*2 ;8254计数器2端口地址
MY8254_MODE EQU IOY0+03H*2 ;8254控制寄存器端口地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT
CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量
IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量
IM_BAK DB ? ;保存INTR原中断屏蔽字的变量
STR1 DB 'COUNT: $' ;显示的字符串
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
CLI
MOV AX,0000H ;替换INTR的中断矢量
MOV ES,AX
MOV DI,INTR_IVADD
MOV AX,ES:[DI]
MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址
MOV AX,OFFSET MYISR
MOV ES:[DI],AX ;设置当前中断处理程序入口偏移地址
ADD DI,2
MOV AX,ES:[DI]
MOV CS_BAK,AX ;保存INTR原中断处理程序入口段地址
MOV AX,SEG MYISR
MOV ES:[DI],AX ;设置当前中断处理程序入口段地址
IN AL,21H
MOV IM_BAK,AL ;保存INTR原中断屏蔽字
AND AL,7FH
OUT 21H,AL
STI
MOV DX,OFFSET STR1 ;显示字符串
MOV AH,9
INT 21H
MOV DX,MY8254_MODE ;初始化8254工作方式
MOV AL,10H ;计数器0,方式0
OUT DX,AL
MOV DX,MY8254_COUNT0 ;装入计数初值
MOV AL,4
OUT DX,AL
WAIT1: MOV AH,1 ;判断是否有按键按下
INT 16H
JZ WAIT1 ;无按键则跳回继续等待,有则退出
QUIT: CLI
MOV AX,0000H ;恢复INTR原中断矢量
MOV ES,AX
MOV DI,INTR_IVADD
MOV AX,IP_BAK ;恢复INTR原中断处理程序入口偏移地址
MOV ES:[DI],AX
ADD DI,2
MOV AX,CS_BAK ;恢复INTR原中断处理程序入口段地址
MOV ES:[DI],AX
MOV AL,IM_BAK ;恢复INTR原中断屏蔽寄存器的屏蔽字
OUT 21H,AL
STI
MOV AX,4C00H ;返回到DOS
INT 21H
MYISR PROC NEAR ;中断处理程序MYISR
PUSH AX
MOV AL,35H
MOV AH,0EH
INT 10H
MOV AL,20H
INT 10H
MOV DX,MY8254_COUNT0 ;重装计数初值
MOV AL,4
OUT DX,AL
OVER: MOV AL,20H ;向PC机内部8259发送中断结束命令
OUT 20H,AL
POP AX
IRET
MYISR ENDP
CODE ENDS
END START
-------------具体实践------------
(2)设计实验线路图,完成线路连接。
(3)打开实验箱电板,运行程序,按动KK1+微动开关,观察开关按动后屏幕显示的计数值和LED灯的变化
2、定时应用实验
将8254的计数器0和计数器1都设置为方式3,用信号源1MHz作为CLKO时钟,OUTO为被形输出 1ms方波,再通过CLK1输入,OUT1输出1s方波。
实验步骤:
(1)接线图如图3-1-3所示,
(2)根据实验内容,编写实验程序,经编译、链接无提后装入系统
-------------理论知识------------
1、确认端口地址
IO基地址0600H
XR1---A0
XR2---A1
地址范围600H~603H
0#计数器端口地址:6C0H
1#计数器端口地址:6C2H
2#计数器端口地址:6C4H
控制寄存器端口地址:6C6H
2、确定工作方式与计数初值
计数器0工作于方式3,方波发生器
计数初值=输入频率/输出频率
1000=1M /1000
计数器1设置为方式3,方波发生器
计数初值=输入频率/输出频率
1 =1000 /1000
3、确定控制字
00 11 011 0
01 11 011 0
4、初始化程序
A EQU 06C0H
B EQU 06C2H
C EQU 06C4H
S EQU 06C6H
CODE SEGMENT
ASSUME CS:CODE
START:
;初始化计数器0
MOV AL,00110110B
MOV DX,S
OUT DX,AL ;送控制字
MOV DX,A
MOV AL,03E8H ;1000 =0000 03e8
OUT DX,AL ;送低8位
MOV AL,0H ;1000 =0000 0000
OUT DX,AL ;送高8位
;初始化计数器1
MOV AL,01110110B
MOV DX,S
OUT DX,AL ;送控制字
MOV DX,B
MOV AL,03E8H ;1000 =0000 03e8
OUT DX,AL ;送低8位
MOV AL,0H ;1000 =0000 0000
OUT DX,AL ;送高8位
CODE ENDS
END START
-------------理论知识------------
-------------具体实践------------
;IOY0 EQU 0A000H ;片选IOY0对应的端口始地址
IOY0 EQU 0600H ;片选IOY0对应的端口始地址
;T8254-2.asm
;8254定时应用实验 输出1Hz
;查看端口资源分配情况,记录实验系统I/O端口始地址
;****************根据查看端口资源修改下列符号值*******************
IOY0 EQU 0600H ;片选IOY0对应的端口始地址
;*****************************************************************
MY8254_COUNT0 EQU IOY0+00H*2 ;8254计数器0端口地址
MY8254_COUNT1 EQU IOY0+01H*2 ;8254计数器1端口地址
MY8254_COUNT2 EQU IOY0+02H*2 ;8254计数器2端口地址
MY8254_MODE EQU IOY0+03H*2 ;8254控制寄存器端口地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,MY8254_MODE ;初始化8254工作方式
MOV AL,76H ;计数器1,方式3
OUT DX,AL
MOV DX,MY8254_COUNT1 ;装入计数初值
MOV AL,64H ;100分频
OUT DX,AL
MOV AL,00H
OUT DX,AL
MOV DX,MY8254_MODE ;初始化8254工作方式
MOV AL,36H ;计数器0,方式3
OUT DX,AL
MOV DX,MY8254_COUNT0 ;装入计数初值
MOV AL,00H ;18432分频
OUT DX,AL
MOV AL,48H
OUT DX,AL
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
CODE ENDS
END START
-------------具体实践------------
(3)单击【RUN】按钮,运行实验程序,8254的OUTI会输出1的方波,可用软件自带的示被器功能进行观察。
(4)用示波器观察波形的方法:单击虚拟仪器菜单中的【示波器】按钮或直接单击工具栏的按【】钮,在新弹出的示波器界而上单击【】按钮运行示波器,就可以观测出OUT1输出的波形。
本实验现象结果如图3-1-4所示,
1.实验箱上我们的I/0基地址为0600H,CS接IOY0信号线。
2.在实验1计数应用实验中,初值不易过大(<10)。
3.将OUT0接LED灯,可观察计数运行情况。LED灯低电平有效,所以计数应用实验计数期间灯灭,计数结束灯亮。
请您阅读文章声明,默认同意该声明
打赏通道