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

📄 main.lis

📁 一个关于AVR单片机的例程
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00D2                   .dbline 76
 00D2           ;  delay100us(10);
 00D2 0AE0              ldi R16,10
 00D4 95DF              xcall _delay100us
 00D6                   .dbline 77
 00D6           ; if((PINB&0x0F)!=0x0F)
 00D6 86B3              in R24,0x16
 00D8 8F70              andi R24,15
 00DA 8F30              cpi R24,15
 00DC 09F4              brne X1
 00DE 67C0              xjmp L14
 00E0           X1:
 00E0                   .dbline 78
 00E0           ; { //#2
 00E0                   .dbline 79
 00E0           ;  if((~PINB)&0x10)
 00E0 26B2              in R2,0x16
 00E2 3324              clr R3
 00E4 2094              com R2
 00E6 3094              com R3
 00E8 24FE              sbrs R2,4
 00EA 01C0              rjmp L16
 00EC                   .dbline 80
 00EC           ;  key_buf=0;
 00EC 16C0              xjmp L17
 00EE           L16:
 00EE                   .dbline 81
 00EE           ;  else if((~PINB)&0x20)
 00EE 26B2              in R2,0x16
 00F0 3324              clr R3
 00F2 2094              com R2
 00F4 3094              com R3
 00F6 25FE              sbrs R2,5
 00F8 02C0              rjmp L18
 00FA                   .dbline 82
 00FA           ;     key_buf=1;
 00FA 41E0              ldi R20,1
 00FC 0EC0              xjmp L19
 00FE           L18:
 00FE                   .dbline 83
 00FE           ;     else if((~PINB)&0x40)
 00FE 26B2              in R2,0x16
 0100 3324              clr R3
 0102 2094              com R2
 0104 3094              com R3
 0106 26FE              sbrs R2,6
 0108 02C0              rjmp L20
 010A                   .dbline 84
 010A           ;       key_buf=2;
 010A 42E0              ldi R20,2
 010C 06C0              xjmp L21
 010E           L20:
 010E                   .dbline 85
 010E           ;     else if((~PINB)&0x80)
 010E 26B2              in R2,0x16
 0110 3324              clr R3
 0112 2094              com R2
 0114 3094              com R3
 0116 27FC              sbrc R2,7
 0118                   .dbline 86
 0118           ;         key_buf=3;
 0118 43E0              ldi R20,3
 011A           L22:
 011A           L21:
 011A           L19:
 011A           L17:
 011A                   .dbline 87
 011A           ;  DDRB=0xf0;
 011A 80EF              ldi R24,240
 011C 87BB              out 0x17,R24
 011E                   .dbline 88
 011E           ;  PORTB=0x0f;
 011E 8FE0              ldi R24,15
 0120 88BB              out 0x18,R24
 0122                   .dbline 89
 0122           ;  delay100us(10);
 0122 0AE0              ldi R16,10
 0124 6DDF              xcall _delay100us
 0126                   .dbline 90
 0126           ;  if((~PINB)&0x01)
 0126 26B2              in R2,0x16
 0128 3324              clr R3
 012A 2094              com R2
 012C 3094              com R3
 012E 20FE              sbrs R2,0
 0130 01C0              rjmp L24
 0132                   .dbline 91
 0132           ;   key_buf+=0;
 0132 11C0              xjmp L25
 0134           L24:
 0134                   .dbline 92
 0134           ;   else if((~PINB)&0x02)
 0134 26B2              in R2,0x16
 0136 3324              clr R3
 0138 2094              com R2
 013A 3094              com R3
 013C 21FE              sbrs R2,1
 013E 02C0              rjmp L26
 0140                   .dbline 93
 0140           ;     key_buf+=4;
 0140 4C5F              subi R20,252    ; addi 4
 0142 09C0              xjmp L27
 0144           L26:
 0144                   .dbline 94
 0144           ;     else if((~PINB)&0x04)
 0144 26B2              in R2,0x16
 0146 3324              clr R3
 0148 2094              com R2
 014A 3094              com R3
 014C 22FE              sbrs R2,2
 014E 02C0              rjmp L28
 0150                   .dbline 95
 0150           ;       key_buf+=8;
 0150 485F              subi R20,248    ; addi 8
 0152 01C0              xjmp L29
 0154           L28:
 0154                   .dbline 97
 0154           ;         else
 0154           ;         key_buf=16;
 0154 40E1              ldi R20,16
 0156           L29:
 0156           L27:
 0156           L25:
 0156                   .dbline 98
 0156           ;       tmpi=PINB;
 0156 66B3              in R22,0x16
 0158                   .dbline 99
 0158           ;  if((key_buf!=16)&&(key_buf!=10)&&(key_buf!=11))
 0158 4031              cpi R20,16
 015A 01F1              breq L30
 015C 4A30              cpi R20,10
 015E F1F0              breq L30
 0160 4B30              cpi R20,11
 0162 E1F0              breq L30
 0164                   .dbline 100
 0164           ;   {
 0164                   .dbline 101
 0164           ;     for(i=3;i!=0;i--)
 0164 83E0              ldi R24,3
 0166 A82E              mov R10,R24
 0168 0FC0              xjmp L35
 016A           L32:
 016A                   .dbline 102
 016A                   .dbline 103
 016A 80E0              ldi R24,<_seg7_led_buff-1
 016C 90E0              ldi R25,>_seg7_led_buff-1
 016E EA2D              mov R30,R10
 0170 FF27              clr R31
 0172 E80F              add R30,R24
 0174 F91F              adc R31,R25
 0176 2080              ldd R2,z+0
 0178 80E0              ldi R24,<_seg7_led_buff
 017A 90E0              ldi R25,>_seg7_led_buff
 017C EA2D              mov R30,R10
 017E FF27              clr R31
 0180 E80F              add R30,R24
 0182 F91F              adc R31,R25
 0184 2082              std z+0,R2
 0186                   .dbline 104
 0186           L33:
 0186                   .dbline 101
 0186 AA94              dec R10
 0188           L35:
 0188                   .dbline 101
 0188 AA20              tst R10
 018A 79F7              brne L32
 018C                   .dbline 105
 018C           ;     {
 018C           ;     seg7_led_buff[i]=seg7_led_buff[i-1];//移位显示
 018C           ;     }
 018C           ;     seg7_led_buff[0]=key_buf;
 018C 40930000          sts _seg7_led_buff,R20
 0190                   .dbline 106
 0190           ;       tmpi=PINB;
 0190 66B3              in R22,0x16
 0192           L37:
 0192                   .dbline 108
 0192           L38:
 0192                   .dbline 107
 0192           ;     while((~PINB)&0x07)//按键释放检测,如不释放就一直循环
 0192 86B3              in R24,0x16
 0194 8095              com R24
 0196 8770              andi R24,7
 0198 E1F7              brne L37
 019A                   .dbline 109
 019A           ;     ;
 019A           ;   }
 019A 05C0              xjmp L31
 019C           L30:
 019C                   .dbline 110
 019C           ;  else if(key_buf==10)
 019C 4A30              cpi R20,10
 019E 09F4              brne L40
 01A0                   .dbline 111
 01A0           ;   ;
 01A0 02C0              xjmp L41
 01A2           L40:
 01A2                   .dbline 112
 01A2           ;  else if(key_buf==11)
 01A2 4B30              cpi R20,11
 01A4 01F4              brne L42
 01A6                   .dbline 113
 01A6           ;   ;
 01A6           L42:
 01A6           L41:
 01A6           L31:
 01A6                   .dbline 114
 01A6           ;  DDRB=0x0f;
 01A6 8FE0              ldi R24,15
 01A8 87BB              out 0x17,R24
 01AA                   .dbline 115
 01AA           ;  PORTB=0xf0;
 01AA 80EF              ldi R24,240
 01AC 88BB              out 0x18,R24
 01AE                   .dbline 116
 01AE           ;  } //end of #2
 01AE           L14:
 01AE                   .dbline 117
 01AE           ; } //end of #1 
 01AE           L12:
 01AE                   .dbline 118
 01AE           ; GICR=0x40;//中断复位
 01AE 80E4              ldi R24,64
 01B0 8BBF              out 0x3b,R24
 01B2                   .dbline -2
 01B2           L11:
 01B2 0E940000          xcall pop_gset3
 01B6 0E940000          xcall pop_lset
 01BA                   .dbline 0 ; func end
 01BA 1895              reti
 01BC                   .dbsym r tmpi 22 c
 01BC                   .dbsym r key_buf 20 c
 01BC                   .dbsym r i 10 c
 01BC                   .dbend
 01BC                   .dbfunc e main _main fV
                        .even
 01BC           _main::
 01BC                   .dbline -1
 01BC                   .dbline 122
 01BC           ; }
 01BC           ; 
 01BC           ; void main(void)
 01BC           ; {
 01BC                   .dbline 123
 01BC           ; DDRB=0x0f;//PB3 out
 01BC 8FE0              ldi R24,15
 01BE 87BB              out 0x17,R24
 01C0                   .dbline 124
 01C0           ; PORTB&=0xF8;
 01C0 88B3              in R24,0x18
 01C2 887F              andi R24,248
 01C4 88BB              out 0x18,R24
 01C6                   .dbline 125
 01C6           ; PORTB|=0xF0;//PORTB置1111x000
 01C6 88B3              in R24,0x18
 01C8 806F              ori R24,240
 01CA 88BB              out 0x18,R24
 01CC                   .dbline 126
 01CC           ; DDRD&=0xfb;
 01CC 81B3              in R24,0x11
 01CE 8B7F              andi R24,251
 01D0 81BB              out 0x11,R24
 01D2                   .dbline 127
 01D2           ; PORTD|=(~0xfb);
 01D2 82B3              in R24,0x12
 01D4 8460              ori R24,4
 01D6 82BB              out 0x12,R24
 01D8                   .dbline 128
 01D8           ; MCUCR&=(~0x03);
 01D8 85B7              in R24,0x35
 01DA 8C7F              andi R24,252
 01DC 85BF              out 0x35,R24
 01DE                   .dbline 129
 01DE           ; GICR=0x40;//使能中断INT0
 01DE 80E4              ldi R24,64
 01E0 8BBF              out 0x3b,R24
 01E2                   .dbline 130
 01E2           ; SEI();
 01E2 7894              sei
 01E4                   .dbline 131
 01E4           ; seg7_led_init();
 01E4 57DF              xcall _seg7_led_init
 01E6 01C0              xjmp L46
 01E8           L45:
 01E8                   .dbline 133
 01E8                   .dbline 134
 01E8 18DF              xcall _seg7_led_update
 01EA                   .dbline 135
 01EA           L46:
 01EA                   .dbline 132
 01EA FECF              xjmp L45
 01EC           X2:
 01EC                   .dbline -2
 01EC           L44:
 01EC                   .dbline 0 ; func end
 01EC 0895              ret
 01EE                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\avr\2.10.5\main.c
 0000           _seg7_led_buff::
 0000                   .blkb 4
 0004                   .dbsym e seg7_led_buff _seg7_led_buff A[4:4]c

⌨️ 快捷键说明

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