1、XX学院实 验 报 告实验名称 姓 名 学 号 班 级 教 师 日 期 一、实验内容与要求1.1 实验内容本次实验分为如下2个子实验:(1) 计数应用实验:编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按下KK1+5次后,产生一次计数中断,并在屏幕上显示一个字符M;(2) 定时应用实验:编写程序,应用8254的定时功能,产生一个1s的方波,并用本装置的示波器功能来观察。1.2 实验要求本次实验中2个子实验的实验要求如下:(1) 计数应用实验:将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生
2、中断请求,在屏幕上显示字符“M”;(2) 定时应用实验:将8254的计数器0和计数器1都设置为方式3,用信号源1MHz作为CLK0时钟,OUT0为波形输出1ms方波,再通过CLK1输入,OUT1输出1s方波。二、实验原理与硬件连线2.1 实验原理8254是Intel公司生产的可编程间隔定时器。是8253的改进型,比8253具有更优良的性能。8254具有以下基本功能:(1) 有三个地理的16位计数器。(2) 每个计数器可按二进制或十进制(BCD)计数。(3) 每个计数器可编程工作于6种不同的工作方式。(4) 8254每个计数器允许的最高计数频率为10MHz(8253为2MHz)。(5) 8254
3、有读回命令(8253,没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容(6) 计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为:n=fCLKifOUTi,其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。图2-1是8254的内部结构框图和引脚图,它是由与CPU的接口,内部控制电路和三个计数器组成。8254的工作方式如下述:(1) 方式0:计数到0结束输出正跃变信号方式。(2) 方式1:硬件可重触发单稳方式。(3) 方式2:频率发生器方式。(4) 方式3:方波发生器。(5) 方式4:软件触发选通方式。(6) 方式5:硬件触发选通方式图2-1 82
4、54内部结构图8254的控制字有两个:一个用来设置计数器的工作方式,成为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标示位来区分。控制字格式如表4.5.1-4.5.3所示。表2-1 8254的方式控制字格式D7D6D5D4D3D2D1D0计数器选择读/写格式选择工作方式选择计数码制选择00-计数器001-计数器110-计数器211-读出控制字标志00-锁存计数值01-读/写低8位10-读/写高8位11-先读写低8位,再读写高8位000-方式0001-方式1010-方式2011-方式3100-方式5101-方式50-二进制数1-十进制数表2-2 8254读出控
5、制字格式D7D6D5D4D3D2D1D0110-锁存计数值0-锁存状态信息计数器选择(同方式控制字)0表2-3 8254状态字格式D7D6D5D4D3D2D1D0OUT引脚现行状态1-高电平0-低电平计数初值是否装入1-无效计数2-计数有效计数器方式(同方式控制字)8254实验单元电路图如下图所示:图2-2 8254实验电路原理图2.2 硬件连线(1) 计数应用实验:系统总线XD0XD7分别与8254单元D0D7相连,系统总线XA1XA2分别与8254单元A0A1相连,系统总线的IOW#、IOR#、IOY0(0600H)、MIR7分别于8254单元的WR、RD、CS、OUT0相连,8254单元
6、的CLK0与单次脉冲单元的KK1+相连,如图2-3;图2-3 计数应用实验连线图(2) 定时应用实验:系统总线与8254单元类似于(1)中进行连线,然后将8254单元中的OUT0连接到CLK1,GATE1连接VCC,OUT1连接到A/D转换单元的IN0。AD转换单元A、B、C接地,并将D0D7接到系统总线XD0XD7上,并将WR、RD、CS、CLK分别连接到系统总线的IOW#、IOR#、IOY3(0680H)、CLK上。如图2-4所示。 图2-4 8254定时应用实验接线图三、设计思路、步骤和程序流程图3.1 设计思路(1) 计数应用实验:将8254的计数器0设置为方式0,计数值为十进制数4,
7、用单次脉冲KK1作为CLK0时钟,OUT0连接MIR7,首先让程序进入死循环等待中断,每当KK1按动5次后产生中断请求,调用中断程序,在屏幕上显示字符“M”。(2) 定时应用实验:利用8254的两个计数装载过大的初始值,其中计数器0的OUT作为计数器1的CLK的输入,当两个计数器的初值满足一定条件时,计数器1的OUT即为1s方波,并可通过软件的示波器直接观察。3.2 实验步骤(1) 计数应用实验:1. 按图2-3连接电路;2. 编写实验程序,经编译、链接无误后装入系统;3. 单击RUN按钮,运行实验程序,每连续按动5次KK1+,在界面的输出区会显示字符M;4. 改变计数值,验证8254的计数功
8、能。(2) 定时应用实验1. 按图2-4连接实验线路;2. 编写实验程序,经编译、链接无误后装入系统;3. 运行程序,8254的OUT1会输出1s的方波,用软件自带的示波器功能进行观察。3.3 程序流程图(1) 计数应用实验:主程序流程图如图2-5图2-5 计数应用实验主程序流程图中断程序流程图如图2-6图2-6 计数应用实验中断程序流程图(2) 定时应用实验:程序流程图如图2-7图2-7 定时应用程序流程图四、程序清单与执行结果4.1 程序清单(1) 计数应用实验代码IOYO EQU 0600HA8254 EQU IOYO+00H*2B8254 EQU IOYO+01H*2C8254 EQU
9、 IOYO+02H*2CON8254 EQU IOYO+03H*2SSTACK SEGMENT STACK DW 32 DUP(?)SSTACK ENDSCODE SEGMENT ASSUME CS:CODE, SS:SSTACKSTART: PUSH DS MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ7 MOV SI,003CH MOV SI,AX MOV AX,CS MOV SI,003EH MOV SI,AX CLI POP DS ;初始化主片8259 MOV AL,11H;初始化ICW1 OUT 20H,AL MOV AL,08H;初始化ICW2 O
10、UT 21H,AL MOV AL,04H;初始化ICW3 OUT 21H,AL MOV AL,01H;初始化ICW4 OUT 21H,AL MOV AL,6FH;OCW1 OUT 21H,AL ;8254 MOV DX,CON8254 MOV AL,10H OUT DX,AL MOV DX,A8254 MOV AL,04H OUT DX,AL STIAA1: JMP AA1IRQ7: MOV DX,A8254 MOV AL,04H OUT DX,AL MOV AX,014DH INT 10H MOV AX,0120H INT 10H MOV AL,20H OUT 20H,AL IRETCODE
11、 ENDS END START (2) 定时应用实验代码A8254 EQU 0600HB8254 EQU 0602HC8254 EQU 0604HCON8254 EQU 0606HCODE SEGMENTASSUME CS:CODESTART:MOV DX,CON8254MOV AL,27HOUT DX,ALMOV DX,A8254MOV AL,10HOUT DX,ALMOV DX,CON8254MOV AL,67HOUT DX,ALMOV DX,B8254MOV AL,10HOUT DX,ALAA1:JMP AA1CODE ENDSEND START4.2 执行结果(1) 计数应用实验的实验
12、结果如图2-8,每按5次KK1+,就会打印一个M,并且输出一个空格。图2-8 计数应用实验(2) 定时应用实验的实验结果如图2-9和图2-10,示波器会显示如下波形。图2-9 定时应用实验(方波)图2-10 定时应用实验五、程序调试说明和实验感想5.1 调试说明在实验中,需要将8254计数器0和计数器1都设置为方式3,用信号源1MHz作为CLK0,OUT0为波形输出1ms方波,再通过CLK1输入,这样OUT1才会输出1s方波。5.2 实验感想与收获通过本次实验,对8254的计数器有了深入的了解;对8254的内部接口和引脚有了充分的认识;对8254的工作方式、应用编程及其典型电路的接法有了全新的掌握。纸上得来终觉浅,在对实验的实践中,实验前事先预习,实验中不断尝试,实验后总结复习,收获良多。5.3 实验特色在计数应用实验中,通过改变计数输出字符M,具有创新精神。在定时应用实验中,通过输出不同方式的波形,融课内所学于实验中,具有个人特色。5.4 展望如果有充裕的时间,还可以实现输出类似莫尔斯电码的效果,如按1次KK1+输出长信号,按1次KK2+输出短信号,长短信号组成莫尔斯电码。