📄 dianziqin.lis
字号:
00CE 803D cpi R24,208
00D0 E0E0 ldi R30,0
00D2 9E07 cpc R25,R30
00D4 14F1 brlt L29
00D6 X10:
00D6 L38:
00D6 C501 movw R24,R10
00D8 803E cpi R24,224
00DA E0E0 ldi R30,0
00DC 9E07 cpc R25,R30
00DE 09F0 breq L32
00E0 X11:
00E0 1CC0 xjmp L29
00E2 L32:
00E2 .dbline 35
00E2 ; {
00E2 ; case 0xe0:
00E2 ; intKey=12-4*(3-i);
00E2 83E0 ldi R24,3
00E4 841B sub R24,R20
00E6 880F lsl R24
00E8 880F lsl R24
00EA 6CE0 ldi R22,12
00EC 681B sub R22,R24
00EE .dbline 36
00EE ; break;
00EE 16C0 xjmp L30
00F0 L33:
00F0 .dbline 38
00F0 ; case 0xd0: //1 or 5
00F0 ; intKey=13-4*(3-i);
00F0 83E0 ldi R24,3
00F2 841B sub R24,R20
00F4 880F lsl R24
00F6 880F lsl R24
00F8 6DE0 ldi R22,13
00FA 681B sub R22,R24
00FC .dbline 39
00FC ; break;
00FC 0FC0 xjmp L30
00FE L34:
00FE .dbline 41
00FE ; case 0xb0:
00FE ; intKey=14-4*(3-i);
00FE 83E0 ldi R24,3
0100 841B sub R24,R20
0102 880F lsl R24
0104 880F lsl R24
0106 6EE0 ldi R22,14
0108 681B sub R22,R24
010A .dbline 42
010A ; break;
010A 08C0 xjmp L30
010C L35:
010C .dbline 44
010C ; case 0x70:
010C ; intKey=15-4*(3-i);
010C 83E0 ldi R24,3
010E 841B sub R24,R20
0110 880F lsl R24
0112 880F lsl R24
0114 6FE0 ldi R22,15
0116 681B sub R22,R24
0118 .dbline 45
0118 ; break;
0118 01C0 xjmp L30
011A L29:
011A .dbline 47
011A ; default:
011A ; intKey=0xf0;
011A 60EF ldi R22,240
011C .dbline 48
011C ; break;
011C L30:
011C .dbline 50
011C ; }
011C ; return intKey;
011C 062F mov R16,R22
011E 05C0 xjmp L20
0120 L27:
0120 .dbline 52
0120 ; }
0120 ; }
0120 L22:
0120 .dbline 19
0120 4395 inc R20
0122 L24:
0122 .dbline 19
0122 4330 cpi R20,3
0124 08F4 brsh X14
0126 A3CF xjmp L21
0128 X14:
0128 X12:
0128 .dbline 53
0128 ; return 0xf0;
0128 00EF ldi R16,240
012A .dbline -2
012A L20:
012A .dbline 0 ; func end
012A 0C940000 xjmp pop_xgsetF00C
012E .dbsym r intKey 22 c
012E .dbsym r i 20 c
012E .dbsym r tmp 10 c
012E .dbend
.area vector(rom, abs)
.org 48
0030 0C949700 jmp _timer1_isr
.area text(rom, con, rel)
012E .dbfile C:\DOCUME~1\Administrator\桌面\AVR程序\电子琴\dianziqin.c
012E .dbfunc e timer1_isr _timer1_isr fV
.even
012E _timer1_isr::
012E 2A92 st -y,R2
0130 3A92 st -y,R3
0132 8A93 st -y,R24
0134 9A93 st -y,R25
0136 2FB6 in R2,0x3f
0138 2A92 st -y,R2
013A .dbline -1
013A .dbline 58
013A ; }
013A ;
013A ; #pragma interrupt_handler timer1_isr:13
013A ; void timer1_isr() // 50ms
013A ; {
013A .dbline 59
013A ; count=count+1;
013A 80910000 lds R24,_count
013E 8F5F subi R24,255 ; addi 1
0140 80930000 sts _count,R24
0144 .dbline 60
0144 ; TCNT1=0x00;
0144 2224 clr R2
0146 3324 clr R3
0148 3DBC out 0x2d,R3
014A 2CBC out 0x2c,R2
014C .dbline -2
014C L39:
014C .dbline 0 ; func end
014C 2990 ld R2,y+
014E 2FBE out 0x3f,R2
0150 9991 ld R25,y+
0152 8991 ld R24,y+
0154 3990 ld R3,y+
0156 2990 ld R2,y+
0158 1895 reti
015A .dbend
015A .dbfunc e main _main fV
015A ; intKey -> R10
015A ; key -> R20
.even
015A _main::
015A .dbline -1
015A .dbline 64
015A ;
015A ; }
015A ; void main()
015A ; {
015A .dbline 66
015A ;
015A ; char key=0x00;
015A 4427 clr R20
015C .dbline 67
015C ; char intKey=0x00;
015C AA24 clr R10
015E .dbline 68
015E ; DDRB=0x8f;
015E 8FE8 ldi R24,143
0160 87BB out 0x17,R24
0162 .dbline 69
0162 ; PORTB=0xf8;
0162 88EF ldi R24,248
0164 88BB out 0x18,R24
0166 .dbline 71
0166 ;
0166 ; TCNT1H=0x00;
0166 2224 clr R2
0168 2DBC out 0x2d,R2
016A .dbline 72
016A ; TCNT1L=0x00;
016A 2CBC out 0x2c,R2
016C .dbline 73
016C ; OCR1AH=0x00;
016C 2BBC out 0x2b,R2
016E .dbline 74
016E ; OCR1AL=0x30;
016E 80E3 ldi R24,48
0170 8ABD out 0x2a,R24
0172 .dbline 75
0172 ; TIMSK=0x10;
0172 80E1 ldi R24,16
0174 87BF out 0x37,R24
0176 .dbline 76
0176 ; TCCR1A=0x00;
0176 2FBC out 0x2f,R2
0178 .dbline 77
0178 ; SEI();
0178 7894 sei
017A 1FC0 xjmp L42
017C L41:
017C .dbline 80
017C ;
017C ; while(1)
017C ; {
017C .dbline 82
017C ;
017C ; key=scan_key();
017C 6EDF xcall _scan_key
017E 402F mov R20,R16
0180 .dbline 83
0180 ; if(key!=0xf0) //有键按下
0180 003F cpi R16,240
0182 B9F0 breq L44
0184 X15:
0184 .dbline 84
0184 ; {
0184 .dbline 85
0184 ; TCCR1B=0x05;
0184 85E0 ldi R24,5
0186 8EBD out 0x2e,R24
0188 10C0 xjmp L47
018A L46:
018A .dbline 86
018A ; while(count!=4){
018A .dbline 88
018A ;
018A ; PORTB^=0x80;
018A 80E8 ldi R24,128
018C 90E0 ldi R25,0
018E 28B2 in R2,0x18
0190 3324 clr R3
0192 2826 eor R2,R24
0194 3926 eor R3,R25
0196 28BA out 0x18,R2
0198 .dbline 89
0198 ; delay(music_key[key]);}
0198 80E0 ldi R24,<_music_key
019A 90E0 ldi R25,>_music_key
019C E42F mov R30,R20
019E FF27 clr R31
01A0 E80F add R30,R24
01A2 F91F adc R31,R25
01A4 0691 elpm R16,Z
01A6 1127 clr R17
01A8 35DF xcall _delay
01AA .dbline 89
01AA L47:
01AA .dbline 86
01AA 80910000 lds R24,_count
01AE 8430 cpi R24,4
01B0 61F7 brne L46
01B2 X16:
01B2 .dbline 90
01B2 ; }
01B2 L44:
01B2 .dbline 91
01B2 ; TCCR1B=0x00;
01B2 2224 clr R2
01B4 2EBC out 0x2e,R2
01B6 .dbline 92
01B6 ; count=0;
01B6 20920000 sts _count,R2
01BA .dbline 93
01BA ; }
01BA L42:
01BA .dbline 79
01BA E0CF xjmp L41
01BC X17:
01BC .dbline -2
01BC L40:
01BC .dbline 0 ; func end
01BC 0895 ret
01BE .dbsym r intKey 10 c
01BE .dbsym r key 20 c
01BE .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\AVR程序\电子琴\dianziqin.c
0000 _sound_pace::
0000 .blkb 1
0001 .dbsym e sound_pace _sound_pace c
0001 _sound_signal::
0001 .blkb 1
0002 .dbsym e sound_signal _sound_signal c
0002 ; /*
0002 ; char tmp;
0002 ; DDRB=0x0f;
0002 ; PORTB=0xfe;
0002 ; DDRA=0xff;
0002 ; PORTA=0xff;
0002 ; while(1){
0002 ; tmp=PINB&0xf0;
0002 ; if(tmp==0xd0)
0002 ; PORTA=0x00;
0002 ; }*/
0002 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -