沈阳工业大学课程设计报告
专业班级: 测控技术与仪器1101班 学号: 110401120 姓名: 管文龙
ACALL WRITE MOV B,#08H MOV A,#0BEH ACALL WRITE MOV B,#0BH MOV A,#0BEH ACALL WRITE MOV B,#09H MOV A,#0BEH ACALL WRITE MOV B,#0AH MOV A,#0BEH ACALL WRITE RET SCAN: MOV R2,#36;设置定时器计数脉冲个数 MOV C,DOUT ;有按键按下时,使DOUT产生低电平中 JC SCAN 断然后进行键盘扫描确认 ACALL READ ;调用READ函数读取键值 KEY1: CJNE A,#40H,KEY2;若KEY1按下,顺序进行; 否则跳转到KEY2 MOV 30H,#0F7H;设置DO的初值 MOV 31H,#0B6H MOV B,#0FH;加载字数据7 MOV A,#18H;第一个数码管显示1 LJMP SETBTIMER;跳转到SETBTIMER处,执行发音程序 KEY2: CJNE A,#43H,KEY3 MOV 30H,#0F9H MOV 31H,#22H MOV B,#0EH MOV A,#0EAH LJMP SETBTIMER KEY3: CJNE A,#41H,KEY4 MOV 30H,#0FAH MOV 31H,#8DH MOV B,#0DH MOV A,#0E6H LJMP SETBTIMER KEY4: CJNE A,#42H,KEY5 MOV 30H,#0FAH MOV 31H,#0D9H MOV B,#0CH 2014年1月 9日 5/16
沈阳工业大学课程设计报告
专业班级: 测控技术与仪器1101班 学号: 110401120 姓名: 管文龙
MOV A,#74H LJMP SETBTIMER KEY5: CJNE A,#48H,KEY6 MOV 30H,#0FBH MOV 31H,#69H MOV B,#08H MOV A,#0D6H LJMP SETBTIMER KEY6: CJNE A,#4BH,KEY7 MOV 30H,#0FBH MOV 31H,#0EAH MOV B,#0BH MOV A,#0DEH LJMP SETBTIMER KEY7: CJNE A,#49H,KEY8 MOV 30H,#0FCH MOV 31H,#5CH MOV B,#09H MOV A,#0A4H LJMP SETBTIMER KEY8: CJNE A,#4AH,LP;若KEY8按下,顺序执行; 否则跳转到LP执行 LJMP START1 NULL: RET LP: AJMP NULL READ: CLR LOAD MOV A,#07H MOV R3,#04H READ1: CLR DCLK RRC A MOV DIN,C SETB DCLK DJNZ R3,READ1 SETB LOAD CLR A MOV R7,#07H READ2: MOV C,DOUT CLR DCLK RLC A SETB DCLK DJNZ R7,READ2 RET 2014年1月 9日 6/16
沈阳工业大学课程设计报告
专业班级: 测控技术与仪器1101班 学号: 110401120 姓名: 管文龙
SETBTIMER:MOV TH0,30H ;赋定时器初值 MOV TL0,31H SETB TR0 ;启动定时器T0 JNB TF0,$;TF=0,等待;TF=1,顺序执行 CLR TF0;清除中断标志位 CLR TR0;关闭低能定时器T0 CPL SPEAKER;扬声器取反 DJNZ R2,SETBTIMER;循环计,产生多个脉冲 ACALL WRITE;调用WRITE函数 AJMP SCAN START1: ACALL DSP MOV DPTR,#MUSIC;把乐曲MUSIC的地址赋给DPTR COUT: CLR A MOVC A,@A+DPTR;把每个音符初值的高位取出送给 CJNE A,#00,CHK;A=0,顺序执行;否则跳转到CHK执行 AJMP NULL CHK: PUSH ACC;把A压入堆栈 CLR A INC DPTR MOVC A,@A+DPTR MOV B,A POP ACC;把A弹出堆栈 CHK1: CJNE A,#01,CHK2;A=01,顺序执行;否则跳转到DO1执行 AJMP DO1 CHK2: CJNE A,#02,CHK3 AJMP RE1 CHK3: CJNE A,#03,CHK4 AJMP MI1 CHK4: CJNE A,#04,CHK5 AJMP FA1 CHK5: CJNE A,#05,CHK6 AJMP SO1 CHK6: CJNE A,#06,CHK7 AJMP LA1 CHK7: CJNE A,#07,CHK0 AJMP SI1 CHK0: CJNE A,#00,CONT2 2014年1月 9日 7/16
沈阳工业大学课程设计报告
专业班级: 测控技术与仪器1101班 学号: 110401120 姓名: 管文龙
AJMP SCAN CONT2: INC DPTR SJMP COUT DO1: MOV R3,#36 DO11: MOV TH0,#0F7H;设置DO音阶的初值 MOV TL0,#0B6H SETB TR0;启动定时器T0 JNB TF0,$;TF=0,等待;TF=1,顺序执行 CLR TF0;清除中断标志位 CLR TR0;关闭低能定时器T0 CPL SPEAKER DJNZ R3,DO11;循环计,产生多个脉冲 LL1: ACALL DELAY;调用延时子程序 DJNZ B,LL1;B不为0;跳转到LL1处执行; B为0,顺序执行 INC DPTR AJMP COUT RE1: MOV R3,#36 RE22:MOV TH0,#0F9H MOV TL0,#22H SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 CPL SPEAKER DJNZ R3,RE22 LL2: ACALL DELAY DJNZ B,LL2 INC DPTR AJMP COUT MI1: MOV R3,#36 MI33: MOV TH0,#0FAH MOV TL0,#8DH SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 2014年1月 9日 8/16
沈阳工业大学课程设计报告
专业班级: 测控技术与仪器1101班 学号: 110401120 姓名: 管文龙
CPL SPEAKER DJNZ R3,MI33 LL3: ACALL DELAY DJNZ B,LL3 INC DPTR AJMP COUT FA1: MOV R3,#36 FA44:MOV TH0,#0FAH MOV TL0,#0D9H SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 CPL SPEAKER DJNZ R3,FA44 LL4: ACALL DELAY DJNZ B,LL4 INC DPTR AJMP COUT SO1: MOV R3,#36 SO55: MOV TH0,#0FBH MOV TL0,#69H SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 CPL SPEAKER DJNZ R3,SO55 LL5: ACALL DELAY DJNZ B,LL5 INC DPTR AJMP COUT LA1: MOV R3,#36 LA66: MOV TH0,#0FBH MOV TL0,#0EAH SETB TR0 JNB TF0,$ 2014年1月 9日 9/16