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

📄 两只蝴蝶.asm

📁 关于交通灯、秒表及一些简单的音乐播放程序
💻 ASM
字号:
org 0000h
ajmp main
org 000bh/*T0中断入口*/
ajmp intt0/*T0中断服务子程序*/
org 0030h/*主程序起始地址*/
main: mov tmod,#01h/*设置T0为16位定时器*/
mov ie,#82h/*开中断*/
start: mov 30h,#00h/*取简谱码指针*/
next: mov a,30h/*简谱指针载入A*/
mov dptr,#tab
movc a,@a+dptr
mov r2,a/*取到的简码暂存R2*/
jz end0/*是否取到结束吗*/
anl a,#0fh/*不是,则取低4位*/
mov r5,a/*将节拍码存R5*/
mov a,r2/*将取到的简谱码再载入A*/
swap a/*高低四位交换*/
anl a,#0fh/*取低四位(音符码)*/
jnz sing/*取到的音符码为0吗*/
clr tr0/*是,则不发音*/
ajmp d1/*跳到D1*/
sing: dec a/*取到的音符码减1(不含0)*/
mov 22h,a/*存入22H*/
rl a/*乘2*/
mov dptr,#tab1/*至TAB1取相对的低位字节计数值*/
movc a,@a+dptr
mov th0,a/*取到的高位字节存入TH0*/
mov 21h,a/*取到高位字节存入21H*/
mov a,22h/*再载入取到的音符码*/
rl a/*乘2*/
inc a/*加1*/
movc a,@a+dptr/*至TAB1取相对的低字节计数值*/
mov tl0,a/*取到的低位字节存入TL0*/
mov 20h,a/*取到的低位字节存入20H*/
setb tr0/*启动T0*/
d1: acall delay/*基本单位时间1/4拍187毫秒*/
inc 30h/*取简码指针加1*/
ajmp next/*取下一个码*/
end0: clr tr0/*停止T0*/
ajmp start/*重复循环*/ 

intt0: push acc/*将A的值暂存于堆栈*/
push psw/*将PSW的值暂存于堆栈*/
mov tl0,20h/*重设计数值*/
mov th0,21h
cpl p2.1/*将P1.7位反相*/
pop psw
pop acc/*从堆栈取回A,PSW的值*/
reti/*中断返回*/

delay: mov r7,#02h/*187MS延时*/
dl1: mov r4,#187
dl2: mov r3,#248
djnz r3,$
djnz r4,dl2
djnz r7,dl1
djnz r5,delay/*决定节拍*/
ret

tab1:
	DW		64260,64400,64524,64580
	DW		64684,64777,64820,64898
	DW		64968,65030,65058,65110
	DW		65157,65178,65217

;两只蝴蝶
tab:
DB     62H,52H,64H,04H
          DB     52H,62H,52H,44H,04H
          DB     22H,42H,54H,64H,52H,42H,22H,42H,14H,04H
          DB     62H,52H,64H,04H
          DB     52H,62H,52H,44H,04H
          DB     22H,42H,54H,64H,52H,42H,22H,42H,54H,04H
          DB     62H,52H,64H,04H
          DB     52H,62H,52H,44H,04H
          DB     22H,42H,54H,64H,52H,42H,22H,42H,14H,04H
          DB     62H,82H,84H,04H
          DB     82H,92H,82H,64H,04H
          DB     52H,62H,54H,64H,52H,42H,22H,42H,44H,04H
          DB     82H,82H,92H,0B2H,0A2H,0A2H,92H,62H,52H,52H,66H,04H
          DB     62H,62H,82H,94H,94H,22H,62H,56H,04H
          DB     62H,82H,82H,62H,84H,04H
          DB     0B4H,0A2H,92H,0A2H,64H,04H
          DB     92H,92H,0A2H,92H,82H,62H,53H,63H,53H,84H,04H
          DB     82H,82H,92H,0B2H,0A2H,0A2H,92H,62H,52H,52H,66H,04H
          DB     62H,62H,82H,94H,94H,22H,62H,56H,04H
          DB     62H,82H,82H,62H,84H,04H
          DB     0B4H,0A2H,92H,0A2H,64H,04H
          DB     92H,92H,0A2H,92H,82H,62H,53H,63H,53H,84H,04H
          DB     62H,82H,82H,62H,84H,04H
          DB     0B4H,0A2H,92H,0A2H,64H,04H
          DB     92H,92H,0A2H,92H,82H,62H,53H,63H,53H,84H,04H
          DB     00H
end

⌨️ 快捷键说明

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