天天看点

实验5 8254定时/计数器应用实验【微机原理】【实验】

实验5 8254定时/计数器应用实验【微机原理】【实验】

  • ​​前言​​
  • ​​推荐​​
  • ​​3.1 8254定时/计数器应用实验​​
  • ​​3.1.1实验目的​​
  • ​​3.1.2实验内容​​
  • ​​3.1.3实验原理​​
  • ​​3.1.4实验说明及步骤​​
  • ​​3.1.5实验提示​​
  • ​​最后​​

前言

以下内容源自微机原理实验指导书

仅供学习交流使用

3.1 8254定时/计数器应用实验

3.1.1实验目的

1、掌报8254的工作方式及应用编程;

2、掌据8254的典型应用电路接法;

3、学习8254在PC系统中的典型应用方法。

3.1.2实验内容

1、通讨定验简担很的单次脉冲单元,按动微动开关向计数器依次发出单脉冲,观察每来一个脉冲时计新当前计数值的变化情况。

2、定时应用定验。编写程序,应用8254的定时功能,产生一个1s的方波,并用本装置的示波器功能观察。

3.1.3实验原理

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:硬件触发选通方式。

实验5 8254定时/计数器应用实验【微机原理】【实验】

图3-1-18254的内部接口和引脚

8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。方式控制字格式如表3-1-1所示。读回控制字格式如表3-1-2所示。当读回控制字的D4位为0时,由该读回控制字D1-D2位指定的计数器的状态寄存器内容将锁存到状态寄存器中。状态字格式如表3-1-3所示。

实验5 8254定时/计数器应用实验【微机原理】【实验】

8254实验电路原理图如下图所示。

实验5 8254定时/计数器应用实验【微机原理】【实验】

3.1.4实验说明及步骤

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      

-------------理论知识------------

-------------具体实践------------

​​8254定时/计数器应用实验​​

;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灯的变化

实验5 8254定时/计数器应用实验【微机原理】【实验】

2、定时应用实验

将8254的计数器0和计数器1都设置为方式3,用信号源1MHz作为CLKO时钟,OUTO为被形输出 1ms方波,再通过CLK1输入,OUT1输出1s方波。

实验5 8254定时/计数器应用实验【微机原理】【实验】

实验步骤:

(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      

-------------理论知识------------

-------------具体实践------------

​​8254定时/计数器应用实验​​

;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所示,

3.1.5实验提示

继续阅读