📄 main.lis
字号:
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 + -