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

📄 happy_birthday.lst

📁 很实用的单片机例程
💻 LST
字号:
A51 MACRO ASSEMBLER  HAPPY_BIRTHDAY                                                       06/03/2005 21:22:10 PAGE     1


MACRO ASSEMBLER A51 V6.12
OBJECT MODULE PLACED IN .\happy_birthday.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE .\happy_birthday.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     
                       2     ;本程序实现蜂鸣器演奏歌曲功能
                       3     ;乐曲名称:生日快乐
                       4     ;///////////////////////////////////////////
  00B7                 5             BUZZER EQU P3.7
0000                   6             org     0000h           ;主程序起始地址
0000 0130              7             ajmp    main            ;跳至主程序
000B                   8             org     000bh           ;timer0中断起始地址
000B 8063              9             jmp     tim0            ;跳至timer0中断子程序
                      10     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0030                  11             org     0030h
0030                  12     main:
0030 758901           13             mov     tmod,#01h       ;设timer0在MODE1
0033 75A882           14             mov     ie,#82h         ;中断使能
0036                  15     start0:
0036 753000           16             mov     30h,#00h        ;取简谱码指针
0039 E530             17     next:   mov     a,30h           ;简谱码指针载入A
003B 9000AE           18             mov     dptr,#table     ;至table取简谱码
003E 93               19             movc    a,@a+dptr
003F FA               20             mov     r2,a            ;取到的简谱码暂存于R2
0040 602A             21             jz      end0            ;是否取到00(结束码)?
0042 540F             22             anl     a,#0fh          ;不是,则取低4位(节拍码)
0044 FD               23             mov     r5,a            ;将节拍码存入R5
0045 EA               24             mov     a,r2            ;将取到的简谱码再载入A
0046 C4               25             swap    a               ;高低四位交换
0047 540F             26             anl     a,#0fh          ;取低四位(音符码)
0049 7004             27             jnz     sing            ;取到的音符码是否为零?
004B C28C             28             clr     tr0             ;是,则不发音
004D 8017             29             jmp     d1
004F 14               30     sing:   dec     a               ;取到的音符码减1(不含0).
0050 F522             31             mov     22h,a           ;存入(22H).
0052 23               32             rl      a               ;乘2
0053 900090           33             mov     dptr,#table1    ;至table1取相对的高位字节计手

⌨️ 快捷键说明

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