8254定时/计数器应用

Google 三大论文之——MapReduce
2018年4月21日
8259中断控制
2018年5月24日

 8254定时/计数器应用实验

1  实验目的

1. 掌握8254的工作方式及应用编程。

2. 掌握8254典型应用电路的接法。

2  实验设备

PC机一台,TD-PITE实验装置一套。

3  实验内容

1. 计数应用实验。编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1‘5次后,产生一次计数中断,并在屏幕上显示一个字符‘M’

2. 定时应用实验。编写程序,应用8254的定时功能,产生一个1s的方波。

4  实验原理

8254Intel公司生产的可编程间隔定时器。是8253的改进型,比8253具有更优良的性能。8254具有以下基本功能:

1)有3个独立的16位计数器。

2)每个计数器可按二进制或十进制(BCD)计数。

3)每个计数器可编程工作于6种不同工作方式。

48254每个计数器允许的最高计数频率为10MHz82532MHz)。

58254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。

6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为:

n=fCLKi÷fOUTi其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。

4.278254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。8254的工作方式如下述:

1)方式0:计数到0结束输出正跃变信号方式。

2)方式1:硬件可重触发单稳方式。

3)方式2:频率发生器方式。

4)方式3:方波发生器。

5)方式4:软件触发选通方式。

6)方式5:硬件触发选通方式。


4.27  8254的内部接口和引脚

8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表4.3—4.5所示。

4.3  8254的方式控制字格式

D7 D6 D5 D4 D3 D2 D1 D0
计数器选择 /写格式选择 工作方式选择 计数码制选择
00-计数器0
01-计数器1
10-计数器2
11-读出控制

字标志

00-锁存计数值
01-读/写低8
10-读/写高8
11-先读/写低8

    再读/写高8

000-方式0
001-方式1
010-方式2
011-方式3

100-方式4

101-方式5

0-二进制数
1-十进制数

4.4  8254读出控制字格式

D7 D6 D5 D4 D3 D2 D1 D0
1 1 0-锁存计数值 0-锁存状态信息 计数器选择(同方式控制字) 0

4.5  8254状态字格式

D7 D6 D5 D4 D3 D2 D1 D0
OUT引脚现行状态
1-高电平
0-低电平
计数初值是否装入
1-无效计数
0-计数有效
计数器方式(同方式控制字)

8254实验单元电路图如下图所示:


4.28  8254实验电路原理图

5  实验步骤

1.  计数应用实验

编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符“M”

实验步骤:

1)实验接线如图4.29所示。

2)编写实验程序,经编译、链接无误后装入系统。

3)运行程序,按动KK1+产生单次脉冲,观察实验现象。

4)改变计数值,验证8254的计数功能。

 

4.29  8254计数应用实验接线图

实验程序清单(A82541.ASM

  1. A8254    EQU  06C0H   ;8254计数器0端口地址
    
  2. B8254    EQU  06C2H   ;8254计数器1端口地址
    
  3. C8254    EQU  06C4H   ;8254计数器2端口地址
    
  4. CON8254  EQU  06C6H   ;8254 控制寄存器端口地址
    
  5. SSTACK    SEGMENT STACK
    
  6.         DW 32 DUP(?)
    
  7. SSTACK    ENDS
    
  8. CODE        SEGMENT
    
  9.         ASSUME CS:CODE, SS:SSTACK
    
  10. START:    PUSH DS
    
  11.         MOV AX, 0000H
    
  12.         MOV DS, AX
    
  13.         MOV AX, OFFSET IRQ7        ;取中断入口地址
    
  14.         MOV SI, 003CH                ;中断矢量地址
    
  15.         MOV [SI], AX                ;填IRQ7的偏移矢量
    
  16.         MOV AX, CS                ;段地址
    
  17.         MOV SI, 003EH
    
  18.         MOV [SI], AX                ;填IRQ7的段地址矢量
    
  19.         CLI                         ;中断屏蔽clear interrupt
    
  20.         POP DS
    
  21.         ;初始化主片8259
    								
  22.         MOV AL, 11H                ;0001
    											0001 级联,边沿触发,要ICW4
    
  23.         OUT 20H, AL                ;ICW1
    
  24.         MOV AL, 08H                ;0000
    											1000 中断类型号从8开始
    
  25.         OUT 21H, AL                ;ICW2
    
  26.         MOV AL, 04H                ;0000
    											0100
    												
  27.         OUT 21H, AL                ;ICW3
    
  28.         MOV AL, 01H                ;0000
    											0001 非缓冲方式,8086/8088配置
    
  29.         OUT 21H, AL                ;ICW4
    
  30.         MOV AL, 6FH                ;OCW1 0110
    											1111 IR7,IR4引脚的中断开放
    
  31.         OUT 21H, AL
    
  32.         ;8254
    								
  33.         MOV DX, CON8254
    
  34.         MOV AL, 10H                ;0001
    											0000计数器0,方式0
    																
  35.         OUT DX, AL
    
  36.         MOV DX, A8254
    
  37.         MOV AL, 04H
    
  38.         OUT DX, AL
    
  39.         STI                         ;开中断
    
  40. AA1:        JMP AA1                    ;无限循环
    
  41. IRQ7:    MOV DX, A8254
    
  42.         MOV AL, 04H                ;0000
    											0100
    												
  43.         OUT DX, AL
    
  44.         MOV AH, 02H                ;M 4DH
    
  45.         MOV DL, 4DH
    
  46.         INT 21H                        
    
  47.         MOV AH, 02H
    
  48.         MOV DL, 20H            
    
  49.         INT 21H            
    
  50.         MOV AL, 20H
    
  51.         OUT 20H, AL                ;中断结束命令
    
  52.         IRET
    
  53. CODE        ENDS
    
  54.         END  START
    

    2.  定时应用实验

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

    实验步骤:

    1)接线图如图4.30所示。

    2)根据实验内容,编写实验程序,经编译、链接无误后装入系统。

    3)单击按钮,运行实验程序,8254OUT1会输出1s的方波。

    4)用示波器观察波形的方法:单击虚拟仪器菜单中的按钮或直接单击工具栏的按钮,在新弹出的示波器界面上单击按钮运行示波器,就可以观测出OUT1输出的波形。

    实验程序清单(A82542.ASM

  55. A8254    EQU  06C0H   ;8254计数器0端口地址
    
  56. B8254    EQU  06C2H   ;8254计数器1端口地址
    
  57. C8254    EQU  06C4H   ;8254计数器2端口地址
    
  58. CON8254  EQU  06C6H   ;8254 控制寄存器端口地址
    
  59. SSTACK    SEGMENT STACK
    
  60.         DW 32 DUP(?)
    
  61. SSTACK    ENDS
    
  62. CODE        SEGMENT
    
  63.         ASSUME CS:CODE
    
  64. START:    MOV DX, CON8254            ;8254
    								
  65.         MOV AL, 36H                ;0011
    											0110计数器0,方式3
    																
  66.         OUT DX, AL
    
  67.         MOV DX, A8254
    
  68.         MOV AL, 0E8H                ;03E8H  --> 1000
    												
  69.         OUT DX, AL
    
  70.         MOV AL, 03H
    
  71.         OUT DX, AL
    
  72.         MOV DX, CON8254            ;8254
    								
  73.         MOV AL, 76H                ;0111
    											0110计数器1,方式3
    																
  74.         OUT DX, AL
    
  75.         MOV DX, B8254
    
  76.         MOV AL, 0E8H                ;03E8H  --> 1000
    												
  77.         OUT DX, AL
    
  78.         MOV AL, 03H
    
  79.         OUT DX, AL
    
  80. AA1:        JMP AA1
    
  81. CODE        ENDS
    
  82.         END  START
    


      4.30  8254定时应用实验接线图

    附表  输入/输出接口编址

      信号线 编址空间
    主片8259   20H21H
    从片8259   A0HA1H
    扩展I/O接口 IOY0 0600H063FH
    IOY1 0640H067FH
    IOY2 0680H06BFH
    IOY3 06C0H06FFH

    附表  INT 10H 使用说明

    入口:AH=01HAL=数据
    功能:写AL中的数据到屏上
    入口:AH=06HDSBX=字串首址,且字串尾用00H填充
    功能:显示一字串,直到遇到00H为止

    附表 INT 21H使用说明

    入口:AH00HAH4CH
    功能:程序终止
    入口:AH01H
    功能:读键盘输入到AL中并回显
    入口:AH02HDL=数据
    功能:写DL中的数据到显示屏
    入口:AH08H
    功能:读键盘输入到AL中无回显
    入口:AH09HDS:DX=字符串首地址,字符串以 ‘$’ 结束
    功能:显示字符串,直到遇到 ‘$’ 为止
    入口:AH0AHDS:DX=缓冲区首地址,(DS:DX)=缓冲区最大字符数,
    (DS:DX+1)=实际输入字符数,(DS:DX+2)=输入字符串起始地址
    功能:读键盘输入的字符串到DS:DX指定缓冲区中并以回车结束

     

发表评论

电子邮件地址不会被公开。 必填项已用*标注