可编辑版
实验八 可编程定时器/计数器( 8253/8254 )
一、实验目的
学习掌握8253用作定时器的编程原理;
二、实验原理和内容
(一)实验原理
8253和8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。8254是8253的改进型。
1.8253初始化
使用8253前,要进行初始化编程。初始化编程的步骤是:
① 向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。 ② 向使用的计数器端口写入计数初值。
2.8253控制字
D7D6=00:使用0号计数器,D7D6=01:使用1号计数器 D7D6=10:使用2号计数器,D7D6=11:无效 D5D4=00:锁存当前计数值
D5D4=01:只写低8位(高8位为0),读出时只读低8位 D5D4=10:只写高8位(低8位为0),读出时只读高8位 D5D4=11:先读/写低8位,后读/写高8位计数值
D3D2D1=000:选择方式0,D3D2D1=001:选择方式1 D3D2D1=X10:选择方式2,D3D2D1=X11:选择方式3 D3D2D1=100:选择方式4,D3D2D1=101:选择方式5 D0=0:计数初值为二进制,D0=1:计数初值为BCD码数
(二)实验内容
1.完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。
2.扩展部分:利用小键盘实现弹琴功能,并显示弹奏的乐谱。 注意:8253输入频率应小于2MHz。
3、接线: CS /8253 接 Y0 /IO 地址
GATE0 /8253 接 +5V CLK0 /8253 接 1M时钟
Word完美格式
可编辑版
OUT0 /8253 接 喇叭或蜂鸣器
三、硬件接线图和软件程序连接图
1、硬件接线图
2.软件流程图
Word完美格式
可编辑版
开始 初始化8254 8255,A口接数码管显示,B口位选数码管,C口接小键盘输入 扫描键盘 判断输入 输入为0 输入1~8 输入为9 播放音乐,数码管显示相应的音符 发出对应的音,数码管显示音符 熄灭数码管,返回dos 否 是否播放结束 按键是否弹起 是 是 停止发音,初始化8254 结束
四、源程序
DATA SEGMENT
FENPIN DW 0001H,3906,3472,3125,2932,2604,2344,2083,1953 ;分频比 DIGITAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;数码管 MUSIC DB 1,2,3,1,1,2,3,1,0,3,4,5,0,3,4,5,0,5,6,5,4,3,1,0,5,6,5,4,3,1,0,1,5,1,0,1,5,1,0 ;存放播放的乐曲音符
NUM DB 00H,070H,0B0H,0D0H,0E0H ;检测键盘输入 DATA ENDS
STACK SEGMENT STACK 'STACK'
Word完美格式
可编辑版
DB 100 DUP(?) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
DELAY PROC NEAR ;延时子程序 PUSH CX
MOV CX,100H WAIT0: LOOP WAIT0 POP CX RET DELAY ENDP
DELAY1 PROC NEAR ; PUSH MOV WAIT1: LOOP POP RET DELAY1 ENDP
KEY PROC NEAR ; PUSH AX ; PUSH CX PUSH DX MOV CX,01H
CHECK: MOV DX,28AH ;C MOV BX,OFFSET NUM ADD BX,CX MOV AL,[BX] OUT DX,AL
IN AL,DX ; MOV AH,AL CALL DELAY IN AL,DX
CMP AL,AH ; JNZ CHECK ; AND AL,0FH ; CMP AL,0FH JZ NEXT CMP AL,0EH JZ NEXT1 CMP AL,0DH
延时子程序2 CX
CX,0FFFFH WAIT1 CX 获取键盘输入值的子程序 保护现场 口地址给DX 判断是否有键盘按下 防抖
不相等说明为抖动,重新检测判断按下的列 Word完美格式
可编辑版
JZ NEXT2 CMP AL,0BH JZ NEXT3 MOV BX,01H JMP GOT
NEXT: INC CX ;修改变量扫描下一行 CMP CX,05H JNZ JUMP1 MOV CX,01H JUMP1: JMP CHECK NEXT1: MOV BX,04H JMP GOT NEXT2: MOV BX,03H JMP GOT NEXT3: MOV BX,02H
GOT: SUB CX,01H ; MOV AL,CL MOV DL,04H MUL DL ADD BL,AL
SUB BL,01H ; POP DX ; POP CX POP AX RET KEY ENDP
START: MOV MOV MOV DX,283H ;8253 MOV AL,36H OUT DX,AL
MOV DX,28BH ;8255 MOV AL,81H ;C OUT DX,AL
MOV MOV AL,01H OUT DX,AL
LOOP1: CALL KEY ; CMP BX,0 ; JZ PLAY0
CMP BX,9 ; JZ EXIT
MOV CX,BX ; 计算按下键盘的数值 此时BX中所存即为对应的偏移量恢复现场 AX,DATA DS,AX
初始化 初始化 口输入 DX,289H ;B口位选数码管 扫描键盘
按0播放音乐 按9退出 按1~8发出对应音
Word完美格式