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

📄 dianziqin.lis

📁 很好的avr单片机入门程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -