SBF EQU 22H;存放秒 MBF EQU 21H;存放分 ORG ST_ADDR LJMP MAIN
ORG ST_ADDR+0BH;定时器0中断入口 LJMP CLOCK ORG ST_ADDR+200H MAIN:
MOV R0,#40H MOV A,#00H MOV @R0,A INC R0 MOV @R0,A INC R0 MOV @R0,A INC R0 MOV @R0,A INC R0 MOV @R0,A
INC R0 MOV @R0,A ANL TMOD,#0F0H ORL TMOD,#01H MOV TL0,#00H MOV TH0,#38H MOV BUF,#00H;清零 MOV SBF,#00H MOV MBF,#00H SETB ET0;开定时器0 SETB EA SETB TR0 DS1: MOV R0,#45H MOV R2,#08H DS2: CLR P2.4 MOV A,R2
MOV P3,R2
MOV A,@R0 LCALL TABLE
26
MOV P0,A
LCALL DELAY1;延时 DEC R0 CLR C MOV A,R2 RLC A MOV R2,A
CJNE R2,#10H,LL RLC A MOV R2,A
LL:CJNE R2,#00H,DS2
MOV R0,#45H MOV A,SBF LCALL GET MOV A,MBF LCALL GET SJMP DS1 TABLE: INC A MOVC A,@A+PC RET
DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,19H,0BFH GET: MOV R1,A ANL A,#0FH MOV @R0,A DEC R0 MOV A,R1 SWAP A ANL A,#0FH MOV @R0,A DEC R0 RET
CLOCK:MOV TL0,#00H;定时器中断子程序 MOV TH0,#38H PUSH PSW PUSH ACC INC BUF MOV A,BUF CJNE A,#0AH,QUIT
27
MOV BUF,#00H MOV A,SBF INC A DA A MOV SBF,A CJNE A,#60H,QUIT MOV SBF,#00H MOV A,MBF ADD A,#1H DA A MOV MBF,A CJNE A,#60H,QUIT MOV MBF,#00H QUIT: POP ACC POP PSW RETI
DELAY1: MOV R4,#10;延时程序 DEL11: MOV R5,#0AH DEL12: MOV R3,#18H DEL13: DJNZ R3,DEL13 DJNZ R5,DEL12 DJNZ R4,DEL11 RET END
四、实验板插针配置:
使用数码管第3~0位(板上为右边4位),用短路子接通插针8。 五、思考题
1.改变显示内容,使数码管显示小时和分钟。
2.在第一题的基础上,改写程序,使第二个数码管的小数点做为秒闪,按一秒的周期闪烁。 3.在原程序的基础上,改写程序,使数码管分时显示小时和分钟、分钟和秒钟。 4.添加按键,可以调整时钟和分钟。
28
实验四 蜂鸣器驱动实验
一、实验目的
1. 了解输入/输出端口控制方法。 2. 了解音频发声原理。 二、实验原理
音阶由不同频率的方波产生,音阶与频率的关系如表一所示。方波的频率由定时器控制。定时器计数溢出后,产生中断,将P2.6口取反即得周期方波。每个音阶相应的定时器初值可按下法计算:晶振为6.144MHZ时,音阶“1”相应的定时器初值为X,则 1÷262*2=(216-X)*12÷(6.144*106)
可得 X=64559D=FC2FH,其它的可同样求得(见下表 单位:HZ,X为16进制) 音调 频率 X FA 49 音的节拍由延时子程序实现。延时子程序实现基本延时时间,节拍值只能是它的整数倍。 三、实验内容及步骤
利用P2.6口输出不同频率的脉冲通过蜂鸣器发出不同频率音调。用短路帽接通插针三。 四、程序流程图和源程序 1、中断子程序流程图
FA E6 FB 7E FC 0C FC 2F FC 8F FC F8 FD 23 FD 73 FD BA FD FA FE 18 FE 4C FE 94 175 196 220 247 262 294 330 349 392 440 494 523 587 659 4 5 6 7 1 2 3 4 5 6 7 1 2 3
29
2、主程序流程图
3、源程序清单 ST_ADDR EQU 0000H
ORG LJMP ORG LJMP ORG ORL SETB SETB MOV MOV JZ
ST_ADDR
MAIN INT_0 TMOD,#0FH ET1 EA ST_ADDR+1BH ST_ADDR+200H TMOD,#10H
MAIN: ANL
DPTR,#TONE A,#00H
A,@A+DPTR
MAIN
30
LOP: MOVC