单片机卡农c语言程序,51单片机用蜂鸣器演奏卡农

ORG 0000H

LJMP START

ORG 000BH

INC 20H ;中断服务,中断计数器加1

MOV TH0,#0D8H

MOV TL0,#0EFH ;12M晶振,形成10毫秒中断

RETI

START:

MOV SP,#50H

MOV TH0,#0D8H

MOV TL0,#0EFH

MOV TMOD,#01H

MOV IE,#82H ;EA,ET0

MUSIC0:

NOP

MOV DPTR,#DAT ;表头地址送DPTR

MOV 20H,#00H ;中断计数器清0

MOV B,#00H ;表序号清0

MUSIC1:

NOP

CLR A

MOVC A,@A+DPTR ;查表取代码

JZ END0 ;是00H,则结束

CJNE A,#0FFH,MUSIC5

LJMP MUSIC3

MUSIC5:

NOP

MOV R6,A

INC DPTR

MOV A,B

MOVC A,@A+DPTR ;取节拍代码送R7

MOV R7,A

SETB TR0 ;启动计数

MUSIC2:

NOP

CPL P1.0

MOV A,R6

MOV R3,A

LCALL DEL

MOV A,R7

CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否?

;不等,则继续循环

MOV 20H,#00H ;等于,则取下一代码

INC DPTR

; INC B

LJMP MUSIC1

MUSIC3:

NOP

CLR TR0 ;休止100毫秒

MOV R2,#1AH

MUSIC4:

NOP

MOV R3,#0CAH

LCALL DEL

DJNZ R2,MUSIC4

INC DPTR

LJMP MUSIC1

END0:

NOP

MOV R2,#0CDH ;歌曲结束,延时1秒后继续

MUSIC6:

MOV R3,#00H

LCALL DEL

DJNZ R2,MUSIC6

LJMP MUSIC0

DEL:

NOP

DEL3:

MOV R4,#05H

DEL4:

NOP

DJNZ R4,DEL4

NOP

DJNZ R3,DEL3

RET

NOP

DAT:

DB 13H,80H,15H,80H

DB 18H,80H,19H,80H

DB 1CH,80H,20H,80H

DB 1CH,80H,19H,80H

DB 18H,80H,19H,80H

DB 1CH,80H,20H,80H

DB 24H,80H,26H,80H

DB 24H,80H,2BH,80H

DB 18H,20H,19H,20H

DB 18H,20H,30H,20H

DB 34H,20H,20H,20H

DB 2BH,20H,26H,20H

DB 30H,20H,18H,20H

DB 19H,20H,1CH,20H

DB 19H,20H,13H,20H

DB 10H,20H,0EH,20H

DB 12H,20H,13H,20H

DB 15H,20H,12H,20H

DB 12H,20H,13H,20H

DB 18H,20H,19H,20H

DB 1CH,20H,20H,20H

DB 24H,20H,26H,20H

DB 2BH,20H,24H,20H

DB 26H,20H,2BH,20H

DB 30H,20H,2BH,20H

DB 26H,20H,24H,20H

DB 20H,20H,2BH,20H

DB 20H,20H,24H,20H

DB 26H,20H,1CH,20H

DB 20H,20H,24H,20H

DB 20H,20H,24H,20H

DB 26H,20H,2BH,20H

DB 30H,20H,3BH,20H

DB 1CH,20H,19H,20H

DB 18H,20H,19H,20H

DB 1CH,20H,20H,20H

DB 24H,20H,26H,20H

DB 2BH,20H,1CH,20H

DB 20H,20H,1CH,20H

DB 20H,20H,24H,20H

DB 26H,40H,13H,40H

DB 15H,80H,18H,80H

DB 15H,80H,18H,40H

DB 13H,40H,15H,40H

DB 12H,40H,10H,20H

DB 13H,10H,12H,10H

DB 10H,20H,13H,10H

DB 12H,10H,10H,10H

DB 20H,10H,1CH,10H

DB 19H,10H,18H,10H

DB 15H,10H,13H,10H

DB 12H,10H,13H,20H

DB 18H,10H,15H,10H

DB 13H,20H,26H,10H

DB 24H,10H,20H,10H

DB 1CH,10H,20H,10H

DB 24H,10H,20H,10H

DB 26H,10H,24H,10H

DB 20H,10H,24H,20H

DB 1CH,10H,20H,10H

DB 24H,20H,26H,10H

DB 2BH,10H,26H,10H

DB 2BH,10H,30H,10H

DB 2BH,10H,26H,10H

DB 24H,10H,20H,10H

DB 1CH,10H,24H,20H

DB 1CH,10H,20H,10H

DB 1CH,20H,19H,10H

DB 18H,10H,20H,10H

DB 1CH,10H,19H,10H

DB 18H,10H,15H,10H

DB 13H,10H,12H,10H

DB 10H,10H,13H,20H

DB 18H,10H,15H,10H

DB 13H,20H,15H,10

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值