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

📄 xl2002.asm

📁 单片机写的程序都含有Protues仿真结果
💻 ASM
字号:
;/*******************************************************************************
;*  标题:  xl系列单片机实验仪演示程序 p3.3口小喇叭唱歌2002第一场雪              *
;*  文件:   xl2002.asm                                                          *
;*  日期:  2006-1-5                                                             *
;*  版本:  3.0 (试验通过版)可用xl600-xl1000单片机综合试验仪试验               *
;*  邮箱:  sxj1974@163.com                                                      *
;*  网站: http://www.51c51.com    www.8951.com                                 *
;********************************************************************************
;*         p3.3口接小喇叭   唱歌2002第一场雪                                    *
;********************************************************************************
;*  【技术支持】请访问http://www.51c51.com/bbs/index.asp  官方论坛              *
;********************************************************************************/
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 + -