📄 music.lis
字号:
.module music.c
.area data(ram, con, rel)
0000 _T::
0000 .blkb 2
.area idata
0000 00FF .word -256
.area data(ram, con, rel)
0002 .dbfile C:\DOCUME~1\asdf\MYDOCU~1\11111111111\music.c
0002 .dbsym e T _T I
0002 _N::
0002 .blkb 2
.area idata
0002 00FF .word -256
.area data(ram, con, rel)
0004 .dbfile C:\DOCUME~1\asdf\MYDOCU~1\11111111111\music.c
0004 .dbsym e N _N I
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\asdf\MYDOCU~1\11111111111\music.c
0000 .dbfunc e GPIO_INIT _GPIO_INIT fV
.even
0000 _GPIO_INIT::
0000 .dbline -1
0000 .dbline 8
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include "do_le_mi.h"
0000 ; int T=0xFF00;
0000 ; int N=0xFF00;
0000 ;
0000 ; void GPIO_INIT(void)
0000 ; {
0000 .dbline 9
0000 ; DDRB=0x00; //定义 PB为输入
0000 2224 clr R2
0002 27BA out 0x17,R2
0004 .dbline 11
0004 ; //SFIOR&=~BIT(PUD); // SFIOR寄存器的上拉电阻控制位PUD置0,
0004 ; PORTB|=0xFF; // 将 PORT 置1,满足上拉电阻的另一个条件
0004 88B3 in R24,0x18
0006 8F6F ori R24,255
0008 88BB out 0x18,R24
000A .dbline 12
000A ; DDRC=0x01; //定义 PC0为输出
000A 81E0 ldi R24,1
000C 84BB out 0x14,R24
000E .dbline 14
000E ; //PORTC=~BIT(0); // PC0 输出高电平
000E ; PORTC=0xFF; // PC0 输出高电平
000E 8FEF ldi R24,255
0010 85BB out 0x15,R24
0012 .dbline 15
0012 ; DDRD=0x80;
0012 80E8 ldi R24,128
0014 81BB out 0x11,R24
0016 .dbline 16
0016 ; PORTD=0x80;
0016 82BB out 0x12,R24
0018 .dbline -2
0018 .dbline 19
0018 ;
0018 ;
0018 ; }
0018 L1:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbend
001A .dbfunc e timer1_init _timer1_init fV
.even
001A _timer1_init::
001A .dbline -1
001A .dbline 21
001A ; void timer1_init(void)
001A ; {
001A .dbline 22
001A ; TCCR1B = 0x00; //stop
001A 2224 clr R2
001C 2EBC out 0x2e,R2
001E .dbline 23
001E ; TCNT1=65535-T;
001E 20900000 lds R2,_T
0022 30900100 lds R3,_T+1
0026 8FEF ldi R24,65535
0028 9FEF ldi R25,255
002A 8219 sub R24,R2
002C 9309 sbc R25,R3
002E 9DBD out 0x2d,R25
0030 8CBD out 0x2c,R24
0032 .dbline 24
0032 ; TCCR1A = 0x00;//can be ignored
0032 2224 clr R2
0034 2FBC out 0x2f,R2
0036 .dbline 25
0036 ; TCCR1B = 0x01; //start Timer devide 1
0036 81E0 ldi R24,1
0038 8EBD out 0x2e,R24
003A .dbline -2
003A .dbline 27
003A ; //TCCR1B = 0x04; //start Timer devide 256
003A ; }
003A L2:
003A .dbline 0 ; func end
003A 0895 ret
003C .dbend
.area vector(rom, abs)
.org 16
0010 1EC0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
003C .dbfile C:\DOCUME~1\asdf\MYDOCU~1\11111111111\music.c
003C .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
003C _timer1_ovf_isr::
003C 2A92 st -y,R2
003E 3A92 st -y,R3
0040 8A93 st -y,R24
0042 9A93 st -y,R25
0044 2FB6 in R2,0x3f
0046 2A92 st -y,R2
0048 .dbline -1
0048 .dbline 30
0048 ; #pragma interrupt_handler timer1_ovf_isr:9
0048 ; void timer1_ovf_isr(void)
0048 ; {
0048 .dbline 31
0048 ; TCNT1=65535-T;
0048 20900000 lds R2,_T
004C 30900100 lds R3,_T+1
0050 8FEF ldi R24,65535
0052 9FEF ldi R25,255
0054 8219 sub R24,R2
0056 9309 sbc R25,R3
0058 9DBD out 0x2d,R25
005A 8CBD out 0x2c,R24
005C .dbline 32
005C ; PORTC=~PORTC;
005C 25B2 in R2,0x15
005E 2094 com R2
0060 25BA out 0x15,R2
0062 .dbline -2
0062 .dbline 33
0062 ; }
0062 L3:
0062 2990 ld R2,y+
0064 2FBE out 0x3f,R2
0066 9991 ld R25,y+
0068 8991 ld R24,y+
006A 3990 ld R3,y+
006C 2990 ld R2,y+
006E .dbline 0 ; func end
006E 1895 reti
0070 .dbend
0070 .dbfunc e main _main fV
0070 ; x -> R20
0070 ; y -> R22,R23
.even
0070 _main::
0070 .dbline -1
0070 .dbline 36
0070 ; void main(void)
0070 ;
0070 ; {
0070 .dbline 41
0070 ; char x;
0070 ; int y;
0070 ; //int a,b;
0070 ; //开中断
0070 ; CLI(); //disable all interrupts
0070 F894 cli
0072 .dbline 42
0072 ; OSCCAL=0XBA;
0072 8AEB ldi R24,186
0074 81BF out 0x31,R24
0076 .dbline 43
0076 ; MCUCR = 0x00;
0076 2224 clr R2
0078 25BE out 0x35,R2
007A .dbline 44
007A ; GICR = 0x00;
007A 2BBE out 0x3b,R2
007C .dbline 45
007C ; TIMSK=0x04;
007C 84E0 ldi R24,4
007E 89BF out 0x39,R24
0080 .dbline 46
0080 ; timer1_init();
0080 CCDF rcall _timer1_init
0082 .dbline 47
0082 ; SEI(); //re-enable interrupts
0082 7894 sei
0084 .dbline 48
0084 ; GPIO_INIT();
0084 BDDF rcall _GPIO_INIT
0086 CCC0 rjmp L6
0088 L5:
0088 .dbline 52
0088 ;
0088 ;
0088 ; while(1)
0088 ; {
0088 .dbline 54
0088 ;
0088 ; x=read_key();
0088 00D0 rcall _read_key
008A 402F mov R20,R16
008C .dbline 56
008C ; //x=~0xFF01;
008C ; y=(int)x;
008C 642F mov R22,R20
008E 7727 clr R23
0090 .dbline 58
0090 ;
0090 ; switch(y)
0090 6F3D cpi R22,223
0092 E0E0 ldi R30,0
0094 7E07 cpc R23,R30
0096 09F4 brne X2
0098 69C0 rjmp L15
009A X2:
009A 8FED ldi R24,223
009C 90E0 ldi R25,0
009E 8617 cp R24,R22
00A0 9707 cpc R25,R23
00A2 04F1 brlt L23
00A4 L22:
00A4 6D3B cpi R22,189
00A6 E0E0 ldi R30,0
00A8 7E07 cpc R23,R30
00AA 09F4 brne X3
00AC 7BC0 rjmp L19
00AE X3:
00AE 6F3B cpi R22,191
00B0 E0E0 ldi R30,0
00B2 7E07 cpc R23,R30
00B4 09F4 brne X4
00B6 61C0 rjmp L16
00B8 X4:
00B8 8FEB ldi R24,191
00BA 90E0 ldi R25,0
00BC 8617 cp R24,R22
00BE 9707 cpc R25,R23
00C0 5CF0 brlt L25
00C2 L24:
00C2 6E37 cpi R22,126
00C4 E0E0 ldi R30,0
00C6 7E07 cpc R23,R30
00C8 09F4 brne X5
00CA 65C0 rjmp L18
00CC X5:
00CC 6F37 cpi R22,127
00CE E0E0 ldi R30,0
00D0 7E07 cpc R23,R30
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -