实验程序: MY8255_A EQU 0600H MY8255_B EQU 0602H MY8255_C EQU 0604H MY8255_CON EQU 0606H SSTACK SEGMENT STACK DW 16 DUP(?) SSTACK ENDS DATA SEGMENT DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,3000H 《微机原理与接口技术》 MOVAL,00H MOV [SI],AL ;清显示缓冲 MOV [SI+1],AL MOV [SI+2],AL MOV [SI+3],AL MOV [SI+4],AL MOV [SI+5],AL MOV DI,3005H MOV DX,MY8255_CON ;写8255 控制字 MOV AL,81H OUT DX,AL BEGIN: CALL DIS ;调用显示子程序 CALL CLEAR ;清屏 CALL CCSCAN ;扫描 JNZ INK1 JMP BEGIN INK1: CALL DIS CALL DALLY CALL DALLY CALL CLEAR CALL CCSCAN JNZ INK2 ;有键按下,转到INK2 JMP BEGIN INK2: MOV CH,0FEH MOV CL,00H COLUM: MOV AL,CH MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C AL,DXL1: TEST AL,01H L1?JNZ L2 MOV AL,00H ;L1 JMP KCODE L2: TEST AL,02H L2?JNZ L3 MOV AL,04H ;L2 JMP KCODE L3: TEST AL,04H L3?《微机原理与接口技术》 JNZL4 MOV AL,08H ;L3 JMP KCODE L4: TEST AL,08H L4?JNZ NEXT MOV AL,0CH ;L4 KCODE: ADD AL,CL CALL PUTBUF PUSH AX KON: CALL DIS CALL CLEAR CALL CCSCAN JNZ KON POP AX NEXT: INC CL MOV AL,CH TEST AL,08H JZ KERR ROL AL,1 MOV CH,AL JMP COLUM KERR: JMP BEGIN CCSCAN: MOV AL,00H MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C AL,0FHRET CLEAR: MOV DX,MY8255_B MOV AL,00H OUT DX,AL RET DIS: PUSH AX MOV SI,3000H MOV DL,0DFH MOV AL,DL AGAIN: PUSH DX 《微机原理与接口技术》 MOVDX,MY8255_A OUT DX,AL MOV AL,[SI] MOV BX,OFFSET DTABLE AX,00FFHADD BX,AX MOV AL,[BX] MOV DX,MY8255_B OUT DX,AL CALL DALLY INC SI POP DX MOV AL,DL TEST AL,01H JZ OUT1 ROR AL,1 MOV DL,AL JMP AGAIN OUT1: POP AX RET DALLY: PUSH CX MOV CX,0006H T1: MOV AX,009FH T2: DEC AX JNZ T2 LOOP T1 POP CX RET PUTBUF: MOV SI,DI MOV [SI],AL DEC DI CMP DI,2FFFH JNZ GOBACK MOV DI,3005H GOBACK: RET CODE ENDS END START 《微机原理与接口技术》 按图4-1连接线路图; 运行程序,按下按键,观察数码管的显示,验证程序功能。《微机原理与接口技术》 实验五8254 计数/定时器实验 一、实验目的 1、掌握8254 的工作方式及应用编程。 2、掌握8254 典型应用电路的接法。 二、实验设备 PC 机一台,TD-PITE 实验装置一套。 三、实验内容 计数应用实验。编写程序,应用8254 的计数功能,使用单次脉冲模拟计数,使每当按“KK1+”5 次后,产生一次计数中断,并在屏幕上显示一个字符“M”. 实验原理: 8254 是Intel 公司生产的可编程间隔定时器。是8253 的改进型,比8253 具有更优良的 性能。8254 具有以下基本功能: 个独立的16位计数器; (2)每个计数器可按二进制或十进制(BCD)计数; (3)每个计数器可编程工作于6 种不同工作方式; (4)8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz); (5)8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以读 出状态寄存器的内容; (6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为: 其中 是输入时钟脉冲的频率, 是输出波形的频率。 图5-1 是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个 计数器组成。8254 的工作方式如下述: (1)方式0:计数到0 结束输出正跃变信号方式。 (2)方式1:硬件可重触发单稳方式。 (3)方式2:频率发生器方式。 (4)方式3:方波发生器。 (5)方式4:软件触发选通方式。 (6)方式5:硬件触发选通方式。 《微机原理与接口技术》 图5-18254 的内部接口和引脚 8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来 设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格 式如表1 所示。 表5-1 8254 的方式控制字格式 表5-2 8254 读出控制字格式 表5-3 8254 状态字格式 8254 实验单元电路图如下图所示: 图5-2 8254 实验电路原理图 《微机原理与接口技术》 1.计数应用实验编写程序,将8254 的计数器0 设置为方式3,计数值为十进制数4,用单次脉冲KK1+ 作为CLK0 时钟,OUT0 连接MIR7,每当KK1+按动5 次后产生中断请求,在屏幕上显示字符 实验程序A8254 EQU 06C0H B8254 EQU 06C2H C8254 EQU 06C4H CON8254 EQU 06C6H 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 POP DS ;初始化主片8259 MOV AL, 11H OUT 20H, AL ;ICW1 MOV AL, 08H OUT 21H, AL ;ICW2 MOV AL, 04H OUT 21H, AL ;ICW3 MOV AL, 01H OUT 21H, AL ;ICW4 MOV AL, 6FH ;OCW1 OUT 21H, AL 《微机原理与接口技术》 ;8254MOV DX, CON8254 MOV AL, 10H ;计数器0,方式0 OUT DX, AL MOV DX, A8254 MOV AL, 04H OUT DX, AL STI AA1: NOP JMP AA1 IRQ7: MOV DX, A8254 MOV AL, 04H OUT DX, AL MOV AX, 014DH INT 10H ;显示字符M MOV AX, 0120H INT 10H MOV AL, 20H OUT 20H, AL ;中断结束命令 IRET CODE ENDS END START 实验步骤: (1)实验接线如图5-2 所示; (2)编写实验程序,经编译、链接无误后装入系统; (3)运行程序,按动KK1+产生单次脉冲,观察实验现象; (4)改变计数值,验证8254 的计数功能。 《微机原理与接口技术》 2.定时应用实验图5-3 8254 定时应用实验接线图 编写程序,将8254 的计数器0 设置为方式3,用信号源1MHz 作为CLK0 时钟,OUT0 为波形输 出1ms 方波。 实验程序: A8254 EQU 06C0H B8254 EQU 06C2H C8254 EQU 06C4H CON8254 EQU 06C6H SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE, SS:SSTACK START: MOV DX, CON8254 ;8254 MOV AL, 36H ;计数器0,方式3 OUT DX, AL MOV DX, A8254 MOV AL, 0E8H OUT DX, AL MOV AL, 03H OUT DX, AL AA1: NOP JMP AA1 《微机原理与接口技术》 CODEENDS END START 实验步骤: (1)接线图如图5-3 所示; (2)根据实验内容,编写实验程序,经编译、链接无误后装入系统; (3)运行实验程序,用示波器测试OUT0 输出,验证程序功能。 《微机原理与接口技术》 转换实验