南京航空航天大学
电工电子实验中心
实验报告
课程名称:计算机硬件技术基础 实验名称:8254定时/计数器 姓名:学号:
评定成绩:审阅教师: 实验时间:2017.06.06
南京航空航天大学
南京航空航天大学
一、 实验目的要求
1) 掌握 8254 定时/计数器的名种工作方式及编程方法。
二、 实验任务
按照图 3-2-1 的要求连线,分别对 8254 芯片的 3 个定时/计数器编程,并选择合适的工作方式和初值,以达到如下的效果:
1) 定时/计数器 0,计数脉冲频率为 18.432KHz,OUT0 分两路输出,一路外接 2 位 LED,使其以亮 0.5 秒灭 0.5 秒循环闪亮,另一路作为计数器 1 的计数脉冲 CLK1。
2) 定时/计数器 1,OUT1 的输出外接 2 位 LED,使其以亮 3 秒灭 1 秒循环闪亮。
3) 定时/计数器 2 的计数脉冲来自单次脉冲单元,按压开关产生的脉冲作为计数器 2 的计数脉冲。OUT2 外接 2 位 LED,当按压开关到 17 次时 LED 长亮,并将按压开关的剩余次 数将在屏幕上显示。
三、 实验电路图
图3-2-1 8254定时/计数器电原理图
南京航空航天大学
四、 实验代码
IOY0 EQU 3000H
TIMER0 EQU IOY0+00H*4 ;8254计数器0端口地址 TIMER1 EQU IOY0+01H*4 ;8254计数器1端口地址 TIMER2 EQU IOY0+02H*4 ;8254计数器2端口地址 TCTL EQU IOY0+03H*4 ;8254控制寄存器端口地址
STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT
MES0 DB ‘Pressed: $’
MES1 DB ‘Press any key to exit !’,0DH,0AH,’$’ NUM DB ? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX, DATA MOV DS, AX MOV DX, OFFSET MES1 MOV AH, 9 INT 21H MOV DX, TCTL
MOV AL, 00110110B ; 计数器0初始化,方式3 OUT DX, AL MOV DX, TIMER0 MOV AL, 00H OUT DX, AL ;计数器0初值=4800H MOV AL, 48H OUT DX, AL MOV DX, TCTL MOV AL, 01010101B ; 计数器1初始化,方式2 OUT DX, AL MOV DX, TIMER1 MOV AL, 04H ; 计数器1初值=04H OUT DX, AL
MOV DX, TCTL
MOV AL, 10010001B ; 计数器2初始化,方式0 OUT DX, AL MOV DX, TIMER2 MOV AL, 0FH ;计数器0初值=0FH
南京航空航天大学
OUT DX, AL
L1: MOV DX, TIMER2
IN AL, DX ;读入计数器2值保存 MOV NUM,AL CALL DISP MOV AL, NUM ;当按压开关17次时退出 CMP AL, 0 JZ QUIT
MOV DL, 0FFH
MOV AH, 6 ;判主键盘有无键按下 INT 21H
JZ L1 ; 有键按下跳转
QUIT: MOV AX, 4C00H ;结束程序退出 INT 21H
DISP PROC ;显示子程序 MOV DX, OFFSET MES0 MOV AH, 9 ; 显示MES0 INT 21H
MOV AL, NUM CMP AL, 9 ;判断是否<=9 JLE L2 ;若是则为'0'-'9',ASCII码加30H ADD AL, 7 ;否则为'A'-'F',ASCII码加37H L2: ADD AL, 30H MOV DL, AL
MOV AH, 2 ;在显示器上显示按压开关的次数 INT 21H MOV DL, 0DH INT 21H RET DISP ENDP
CODE ENDS
END START
南京航空航天大学
五、 实验的运行数据及分析
实验达到了以下效果:
1) 定时/计数器 0,计数脉冲频率为 18.432KHz,OUT0 分两路输出,一路外接 2 位 LED,使其以亮 0.5 秒灭 0.5 秒循环闪亮,另一路作为计数器 1 的计数脉冲 CLK1。
2) 定时/计数器 1,OUT1 的输出外接 2 位 LED,使其以亮 3 秒灭 1 秒循环闪亮。
3) 定时/计数器 2 的计数脉冲来自单次脉冲单元,按压开关产生的脉冲作为计数器 2 的计数脉冲。OUT2 外接 2 位 LED,当按压开关到 17 次时 LED 长亮,并将按压开关的剩余次 数将在屏幕上显示。
六、 实验讨论及心得体会
通过实验,对8254的工作原理和编程方法都了一定程度的理解,其中,8254的六种工作方式分析起来比较困难,需要认真理解记忆。