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

📄 muic.lst

📁 EM78P447奏乐
💻 LST
字号:
     1                     ;===============================
     2                     ;EM78P447,发音程序
     3                     ;===============================
     4       0001          tcc     == 0x01
     5       0003          status  == 0x03
     6       0007          port7   == 0x07
     7       0006          port6   == 0x06
     8       000F          isr     == 0x0f
     9       000E          ioce    == 0x0e
    10       000F          iocf    == 0x0f
    11                     ;==================
    12       000C          temp    == 12
    13       000D          songptr == 13
    14       000E          stack   == 14
    15       000F          dly1    == 15
    16       0010          dly2    == 16
    17       0011          dly3    == 17
    18       0012          status_temp== 18
    19       0013          a_temp  == 19
    20       0000          c       == 0
    21       0001          dc      == 1
    22       0002          z       == 2
    23       0000          tcif    == 0
    24       0003          exif    == 3
    25                     ;==================
    26                     	org     0fffh
    27                     	nop
    28                     	org     0
    29                     	jmp     reset
    30                     	org    01
    31                     	mov    a_tmep,a
    32                     	swapa  status
    33                     	mov    status_temp,a
    34                     ;============================
    35                     	mov    a,stack
    36                     	mov    tcc,a
    37                     	bc     irs,tcif
    38                     	mov    a,@0b00000001
    39                     	xor    potrt7,a
    40                     ;============================
    41                     	swapa  status_temp
    42                     	mov    stauts,a
    43                     	swap   a_temp
    44                     	swapa  a_temp
    45                         reti
    46                     ;============================
    47 0000E               reset:
    48                     	mov     a,@0b10000100      ;1/32
    49                     	contw
    50                     	mov     a,@0xfe
    51                     	iow     port7
    52                     	mov     a,@0x11
    53                     	iow     ioce
    54                     	mov     a,@0x01
    55                     	iow     iocf
    56                     	clr     port7
    57                     ;============================
    58 00017               restart:
    59                     	clr     songetr
    60 00018               main_loop:
    61                     	mov     a,songetr
    62                     	call    song
    63                     	mov     temp,a
    64                     	or      a,temp
    65                     	jbs     status,z
    66                     	jmp     endsound
    67                     	and     a,@0b00001111    ;获得音调指针
    68                     	jbc     status,z
    69                     	jmp     notone           ;音调指针为0则转向NOTONE禁止中断
    70                     	call    tonetab          ;根据音调指针获得TCC定时初值
    71                     	mov     stack,a
    72                     	ENI                      ;开中断
    73                     	jmp     tonsing
    74                     ;===========================
    75 00025               notone:
    76                     	DISI                     ;禁止中断
    77 00026               tosing:
    78                     	swapa    temp
    79                     	and      a,@0b00001111
    80                     	mov      dly3,a        
    81                     	rlc      dly3            ;(DLY3)x8
    82                     	rlc      dly3
    83                     	rlc      dly3
    84                     	call     delay
    85                     ;===========================2个音符间的停顿
    86                     	DISI
    87                     	mov      a,@1
    88                     	mov      dly3,a
    89                     	call     delay
    90                     ;===========================完成处理下一个音符
    91                     	inc      songptr
    92                     	jmp      main_loop
    93                     ;===========================结束后重新开始播放
    94 00033               ENDSOUND:
    95                     	DISI
    96                     	mov      a,@50
    97                     	mov      dly3,a
    98                     	call     delay
    99                     	jmp      restart
   100                     ;======================================
   101                     ;获得音符字节:低4位是音高,高4位为音长
   102                     ;======================================
   103 00038               SONG:
   104                   M 	tbl
***     error A033:The macro is not defined.
   105                     	retl     0x43           ;音符3,相对音长4
   106                     	retl     0x43           ;音符3,相对音长4
   107                     	retl     0x46           ;音符6,相对音长4
   108                     	retl     0x27           ;音符7,相对音长2
   109                     	retl     0x26           ;音符6,相对音长2	
   110                     	retl     0x86           ;音符6,相对音长8	
   111                     	retl     0x47           ;音符7,相对音长4	
   112                     	retl     0x26           ;音符6,相对音长2	
   113                     	retl     0x27           ;音符7,相对音长2	
   114                     	retl     0x25           ;音符5,相对音长2	
   115                     	retl     0x23           ;音符3,相对音长2	
   116                     	retl     0x42           ;音符2,相对音长4	
   117                     	retl     0x83           ;音符3,相对音长8	
   118                     	retl     0x00           ;一遍结束
   119                     ;=========================================
   120                     ;音高决定定时初值,定时计数值=256-定时初值
   121                     ;=========================================
   122                     TONETAB:
   123                   M 	tbl
***     error A033:The macro is not defined.
   124                     	nop
   125                     	retl     @106           ;低音1初值106,定时值=150
   126                     	retl     @122           ;低音2定时值=134,150=134x6>2
   127                     	retl     @137           ;低音3定时值=119,134=119x6>2
   128                     	retl     @144           ;低音4定时值=112,119=112x12>2
   129                     	retl     @156           ;低音5定时值=100,112=100x6>2
   130                     	retl     @167           ;低音6定时值=89,100=89x6>2
   131                     	retl     @177           ;低音7定时值=79,89=79x6>2
   132                     	retl     @181           ;音符1定时值=75,79=75x12>2
   133                     	retl     @189           ;音符2定时值=67,75=67x6>2      
   134                     	retl     @197           ;音符3定时值=59,67=59x6>2 
   135                     	retl     @200           ;音符4定时值=56,59=56x12>2 
   136                     	retl     @206           ;音符5定时值=50,56=50x6>2  
   137                     	retl     @211           ;音符6定时值=45,50=45x6>2 
   138                     	retl     @216           ;音符7定时值=40,45=40x6>2 
   139                     	retl     @218           ;高音1定时值=38,40=38x12>2 
   140                     	retl     @222           ;高音2定时值=34,38=34x6>2 
   141                     	retl     @226           ;高音3定时值=30,34=30x6>2 
   142                     	retl     @228           ;高音4定时值=28,30=28x12>2 
   143                     	retl     @231           ;高音5定时值=25,28=25x6>2 
   144                     	retl     @234           ;高音6定时值=22,25=22x6>2 
   145                     	retl     @236           ;高音7定时值=20,22=20x6>2 
   146                     ;============================
   147                     ;根据音长决定延时 20msxdly3
   148                     ;============================
   149                     DELAY:
   150                     	mov      a,@250
   151                     	mov      dly2,a
   152                     inner2:
   153                     	mov      a,@133
   154                     	mov      dly1,a
   155                     inner1:
   156                     	djz      dly1
   157                     	jmp      inner1
   158                     	djz      dly2
   159                     	jmp      inner2
   160                     	djz      dly3
   161                     	jmp      delay
   162                     	ret
   163                     ;============================
   164                     	eop
  2 Error(s), 0 Warning(s), 0 User Message(s)

⌨️ 快捷键说明

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