8254定时/计数器应用

匿名 (未验证) 提交于 2019-12-03 00:29:01


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

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

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

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

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、fCLKifOUTi是输出波形的频率。

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

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

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

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

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

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

D7

D6

D5

D4

D3

D2

D1

D0

计数器选择

读/写格式选择

工作方式选择

计数码制选择

00-计数器0

01-计数器1

10-计数器2

11-读出控制

字标志

00-锁存计数值

01-读/写低8位

10-读/写高8位

11-先读/写低8位

000-方式0

001-方式1

010-方式2

011-方式3

100-方式4

101-方式5

0-二进制数

1-十进制数

D7

D6

D5

D4

D3

D2

D1

D0

1

1

0-锁存计数值

0-锁存状态信息

计数器选择(同方式控制字)

0

D7

D6

D5

D4

D3

D2

D1

D0

OUT引脚现行状态

1-高电平

0-低电平

计数初值是否装入

1-无效计数

0-计数有效

计数器方式(同方式控制字)

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

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

实验步骤:

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

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

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

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

A82541.ASM)


A8254    EQU  06C0H   ;8254计数器0端口地址 B8254    EQU  06C2H   ;8254计数器1端口地址 C8254    EQU  06C4H   ;8254计数器2端口地址 CON8254  EQU  06C6H   ;8254 控制寄存器端口地址  SSTACK	SEGMENT STACK 		DW 32 DUP(?) SSTACK	ENDS  CODE		SEGMENT 		ASSUME CS:CODE, SS:SSTACK START:	PUSH DS 		MOV AX, 0000H 		MOV DS, AX 		MOV AX, OFFSET IRQ7		;取中断入口地址 		MOV SI, 003CH				;中断矢量地址 		MOV [SI], AX				;填IRQ7的偏移矢量 		MOV AX, CS				;段地址 		MOV SI, 003EH 		MOV [SI], AX				;填IRQ7的段地址矢量 		CLI                         ;中断屏蔽clear interrupt 		POP DS  		;初始化主片8259 		MOV AL, 11H				;0001 0001 级联,边沿触发,要ICW4 		OUT 20H, AL				;ICW1 		MOV AL, 08H				;0000 1000 中断类型号从8开始 		OUT 21H, AL				;ICW2 		MOV AL, 04H				;0000 0100  		OUT 21H, AL				;ICW3 		MOV AL, 01H				;0000 0001 非缓冲方式,8086/8088配置 		OUT 21H, AL				;ICW4 		MOV AL, 6FH				;OCW1 0110 1111 IR7,IR4引脚的中断开放 		OUT 21H, AL  		;8254 		MOV DX, CON8254 		MOV AL, 10H				;0001 0000计数器0,方式0 		OUT DX, AL 		MOV DX, A8254 		MOV AL, 04H 		OUT DX, AL 		STI                         ;开中断  AA1:		JMP AA1					;无限循环  IRQ7:	MOV DX, A8254 		MOV AL, 04H				;0000 0100 		OUT DX, AL 		MOV AH, 02H				;M 4DH 		MOV DL, 4DH 		INT 21H						 		MOV AH, 02H 		MOV DL, 20H			 		INT 21H			 		MOV AL, 20H 		OUT 20H, AL				;中断结束命令 		IRET CODE		ENDS 		END  START

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

实验步骤:

1)接线图如图4.30所示。

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

3)单击按钮,8254的OUT1会输出1s的方波。

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

A82542.ASM)

A8254    EQU  06C0H   ;8254计数器0端口地址 B8254    EQU  06C2H   ;8254计数器1端口地址 C8254    EQU  06C4H   ;8254计数器2端口地址 CON8254  EQU  06C6H   ;8254 控制寄存器端口地址  SSTACK	SEGMENT STACK 		DW 32 DUP(?) SSTACK	ENDS CODE		SEGMENT 		ASSUME CS:CODE START:	MOV DX, CON8254			;8254 		MOV AL, 36H				;0011 0110计数器0,方式3 		OUT DX, AL 		MOV DX, A8254 		MOV AL, 0E8H                ;03E8H  --> 1000 		OUT DX, AL 		MOV AL, 03H 		OUT DX, AL 		MOV DX, CON8254			;8254 		MOV AL, 76H				;0111 0110计数器1,方式3 		OUT DX, AL 		MOV DX, B8254 		MOV AL, 0E8H                ;03E8H  --> 1000 		OUT DX, AL 		MOV AL, 03H 		OUT DX, AL AA1:		JMP AA1 CODE		ENDS 		END  START

/输出接口编址

信号线

编址空间

主片8259

20H、21H

从片8259

A0H、A1H

扩展I/O接口

IOY0

0600H~063FH

IOY1

0640H~067FH

IOY2

0680H~06BFH

IOY3

06C0H~06FFH

入口:AH=01H,AL=数据

功能:写AL中的数据到屏上

入口:AH=06H,DS:BX=字串首址,且字串尾用00H填充

功能:显示一字串,直到遇到00H为止

入口:AH=00H或AH=4CH

功能:程序终止

入口:AH=01H

功能:读键盘输入到AL中并回显

入口:AH=02H,DL=数据

功能:写DL中的数据到显示屏

入口:AH=08H

功能:读键盘输入到AL中无回显

入口:AH=09H,DS:DX=字符串首地址,字符串以 '$' 结束

功能:显示字符串,直到遇到 '$' 为止

入口:AH=0AH,DS:DX=缓冲区首地址,(DS:DX)=缓冲区最大字符数,

(DS:DX+1)=实际输入字符数,(DS:DX+2)=输入字符串起始地址

功能:读键盘输入的字符串到DS:DX指定缓冲区中并以回车结束

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!