⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2002.asm

📁 学林电子实验箱源码 完整板
💻 ASM
字号:

  ;刀郎的<<2002年的第一场雪>>
SPK BIT P3.3

 ORG 0000H
 LJMP MAIN
 ORG 000BH
 LJMP TIMER0

MAIN:
 MOV TMOD,#01H ;置CT0定时工作方式1
 MOV IE,#82H  ;CPU开中断,CT0开中断
 MOV R5,#00H
NEXT: MOV A,R5  ;R5存放取数的变地址
 MOV DPTR,#TABLE ;DPTR置音高节拍表首地址
 MOVC A,@A+DPTR ;从音高节拍表取中取音高高位参数
 MOV R4,A  ;R4存放音高高位参数
 INC R5
 MOV A,R5
 MOVC A,@A+DPTR ;从音高节拍表取中取音高低位参数
 MOV R3,A  ;R3存放音高低位参数
 INC R5
 MOV A,R5
 MOVC A,@A+DPTR ;从音高节拍表取中取节拍参数
 JNZ NEXT1
 MOV R5,#00H
 JMP NEXT  ;唱完后循环(节拍参数为#00H表示歌曲结束)
NEXT1: MOV R2,A  ;R2存放节拍参数
 LCALL SONG  ;调用音符播放程序
 INC R5
 SJMP NEXT  ;转入调用下一个音符
SONG:
 MOV TH0,R4
 MOV TL0,R3
 SETB TR0  ;启动CT0(开始唱某一音符)
DELAY: MOV R1,#85H  ;节拍延时(即某一音符唱多长时间)
DEL1: MOV R0,#0FFH
DEL0: NOP
 NOP
 NOP
 DJNZ R0,DEL0
 DJNZ R1,DEL1
 DJNZ R2,DELAY
 CLR TR0  ;禁止CT0(某一音符唱完后停止)
 RET
TIMER0:    ;定时中断程序(用于决定某一音符唱多高)
 CPL SPK
 MOV TH0,R4
 MOV TL0,R3
 RETI
TABLE: ;                音高节拍表,休止符用"FFH,FFH",结束用节拍为00H表示
DB 0FFH,0FFH,01H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H
DB 0FDH, 5BH,04H,0FDH, 08H,02H,0FCH,0ABH,02H,0FCH, 0BH,02H,0FCH, 0BH,02H,0FFH,0FFH,01H,0FCH, 0BH,02H
DB 0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,04H,0FCH,0ABH,02H,0FCH,0ABH,02H
DB 0FBH, 8FH,02H,0FCH, 0BH,02H,0FCH, 0BH,04H,0FFH,0FFH,01H
DB 0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,04H,0FDH, 08H,02H,0FDH, 08H,02H
DB 0FDH, 5BH,04H,0FDH, 08H,02H,0FCH,0ABH,04H,0FDH, 08H,06H
DB 0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH, 03H,02H,0FAH, 14H,02H
DB 0FCH,0ABH,04H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH, 0BH,02H,0FCH, 0BH,04H
DB 0FFH,0FFH,01H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H
DB 0FDH, 5BH,04H,0FDH, 08H,02H,0FCH,0ABH,04H,0FDH, 08H,06H
DB 0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH, 03H,02H,0FAH, 14H,02H
DB 0FCH,0ABH,04H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH, 0BH,02H,0FCH, 0BH,04H, 00H, 00H,00H

 END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -