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

📄 wyinyue.#2

📁 C8051F.rar
💻 #2
字号:
;参考程序A.WYINYUE.ASM ;程序功能:循环播放1234567i--i7654321音调
 $INCLUDE (C8051F020.inc)
     ORG  0
     LJMP  MAIN
     ORG  1BH
     JMP   TINT    ;定时器T1中断入口
     ORG  0100H
MAIN:MOV  SP,#60H
     MOV   WDTCN,#0DEH
	 MOV   WDTCN,#0ADH  ; 禁止看门狗
	 MOV   P5,#10H      ;用P5.4驱动语音放大器
     MOV   TMOD  ,#10H  ;置T1工作方式1,16位计数
     ORL   IE,#88H      ;开T1中断
M1:  MOV   DPTR,#TONE   ;查表,得到计数值
     MOV   A,#0
LOOP:MOVC  A,@A+DPTR
     JZ   M1
     MOV   TH1,A        ;查表得到计数值高8位,送TH1
     MOV   R5,A         ;在R5中保留TH1的计数值  ;
     INC  DPTR
     MOV  A,#0
     MOVC   A,@A+DPTR
     MOV   TL1,A         ;查表得到计数值低8位,送TL1
     MOV  R6,A          ; 在R6中保留TL1的计数值  ;
     SETB   TR1       ;T1允许中断.
     INC   DPTR
     MOV   A,#0
     MOVC  A,@A+DPTR   ;查表得到单音节的节拍宽度,做为延时宽度.
     MOV   R2,A
DELAY1:MOV   R3,#0H    ;DELAY1是延时子程序
DELAY2:MOV   R4,#0FFH
      DJNZ   R4,$
      DJNZ   R3,DELAY2
      DJNZ   R2,DELAY1
      INC   DPTR
      MOV   A,#0
      JMP   LOOP
TINT: CLR   TR1                   ;   定时器T1中断子程序
	  MOV   A,P5                  ;  P5.4求反,产生方波
	  CPL   A
	  MOV   P5,A
      MOV   TH1,R5             ;恢复TH1,TL1的计数值
      MOV   TL1,R6
      SETB  TR1
      RETI
TONE:DB   0FCH,46H,04H,0FCH,0AEH,04H ;音调(16位).节拍(8位)
     DB   0FDH,0BH,04H,0FDH,34H,04H
     DB   0FDH,83H,04H,0FDH,0C8H,04H
     DB   0FEH,06H,04H,0FEH,22H,04H
     DB   0FEH,22H,04H,0FEH,06H,04H
     DB   0FDH,022H,04H,0FDH,06H,04H
     DB   0FDH,0C8H,04H,0FDH,83H,04H
     DB   0FDH,34H,04H,0FDH,0BH,04H
     DB   0FCH,0AEH,04H,0FCH,46H,04H
     DB   00H,00H,00H
		 END

⌨️ 快捷键说明

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