📄 led.lis
字号:
00B2 .dbline 83
00B2 ; ;
00B2 L21:
00B2 .dbline 82
00B2 A394 inc R10
00B4 L23:
00B4 .dbline 82
00B4 A016 cp R10,R16
00B6 E8F3 brlo L20
00B8 X2:
00B8 L17:
00B8 .dbline 81
00B8 6395 inc R22
00BA L19:
00BA .dbline 81
00BA 6623 tst R22
00BC B9F7 brne L16
00BE X3:
00BE L13:
00BE .dbline 80
00BE 4395 inc R20
00C0 L15:
00C0 .dbline 80
00C0 4423 tst R20
00C2 91F7 brne L12
00C4 X4:
00C4 .dbline -2
00C4 L11:
00C4 .dbline 0 ; func end
00C4 00C0 rjmp pop_xgsetF00C
00C6 .dbsym r a 20 c
00C6 .dbsym r b 22 c
00C6 .dbsym r c 10 c
00C6 .dbsym r n 16 c
00C6 .dbend
00C6 .dbfunc e LED_On _LED_On fV
00C6 ; i -> R10,R11
.even
00C6 _LED_On::
00C6 AA92 st -y,R10
00C8 BA92 st -y,R11
00CA A02E mov R10,R16
00CC B12E mov R11,R17
00CE .dbline -1
00CE .dbline 87
00CE ; }
00CE ;
00CE ; void LED_On(int i)
00CE ; {
00CE .dbline 88
00CE ; PORTB = ~BIT(i); /* low output to turn LED on */
00CE 01E0 ldi R16,1
00D0 10E0 ldi R17,0
00D2 2A2D mov R18,R10
00D4 3B2D mov R19,R11
00D6 00D0 rcall lsl16
00D8 202E mov R2,R16
00DA 312E mov R3,R17
00DC 2094 com R2
00DE 3094 com R3
00E0 28BA out 0x18,R2
00E2 .dbline 90
00E2 ; // delay2(0);
00E2 ; delay(3);
00E2 03E0 ldi R16,3
00E4 C8DF rcall _delay
00E6 .dbline -2
00E6 L24:
00E6 .dbline 0 ; func end
00E6 B990 ld R11,y+
00E8 A990 ld R10,y+
00EA 0895 ret
00EC .dbsym r i 10 I
00EC .dbend
00EC .dbfunc e main _main fV
00EC ; v -> R22
00EC ; i -> R20
.even
00EC _main::
00EC .dbline -1
00EC .dbline 94
00EC ; }
00EC ;
00EC ; void main()
00EC ; {
00EC .dbline 97
00EC ; signed char i, v;
00EC ;
00EC ; DDRB = 0xFF; /* output */
00EC 8FEF ldi R24,255
00EE 87BB out 0x17,R24
00F0 .dbline 98
00F0 ; PORTB = 0x55; //sanity check
00F0 85E5 ldi R24,85
00F2 88BB out 0x18,R24
00F4 .dbline 99
00F4 ; delay2(5);
00F4 05E0 ldi R16,5
00F6 D5DF rcall _delay2
00F8 .dbline 101
00F8 ;
00F8 ; TCCR1A = 0;
00F8 2224 clr R2
00FA 2FBC out 0x2f,R2
00FC .dbline 102
00FC ; TCCR1B = CLK_DIV_BY_8;
00FC 82E0 ldi R24,2
00FE 8EBD out 0x2e,R24
0100 .dbline 104
0100 ; // TCCR1B = CLK_DIV_BY_64;
0100 ; TIMSK = TMR1_OVF_INT_ENA;
0100 80E8 ldi R24,128
0102 89BF out 0x39,R24
0104 .dbline 106
0104 ;
0104 ; MCUCR = INT0_TRIG_FALL_EDGE;
0104 82E0 ldi R24,2
0106 85BF out 0x35,R24
0108 .dbline 107
0108 ; MCUCR = 0; //low level trig
0108 25BE out 0x35,R2
010A .dbline 108
010A ; GIMSK = INT0_ENA;
010A 80E4 ldi R24,64
010C 8BBF out 0x3b,R24
010E .dbline 110
010E ;
010E ; SREG = GLOBAL_INT_ENA; //enable ints
010E 80E8 ldi R24,128
0110 8FBF out 0x3f,R24
0112 30C0 rjmp L27
0114 L26:
0114 .dbline 113
0114 ;
0114 ; while (1)
0114 ; {
0114 .dbline 115
0114 ; /* forward march */
0114 ; for (i = 0; i < 8; i++)
0114 4427 clr R20
0116 06C0 rjmp L32
0118 L29:
0118 .dbline 116
0118 ; LED_On(i);
0118 042F mov R16,R20
011A 1127 clr R17
011C 07FD sbrc R16,7
011E 1095 com R17
0120 D2DF rcall _LED_On
0122 L30:
0122 .dbline 115
0122 4395 inc R20
0124 L32:
0124 .dbline 115
0124 4830 cpi R20,8
0126 C4F3 brlt L29
0128 X5:
0128 .dbline 118
0128 ; /* backward march, don't repeat bit 7 */
0128 ; for (i = 6; i >= 0; i--)
0128 46E0 ldi R20,6
012A 06C0 rjmp L36
012C L33:
012C .dbline 119
012C ; LED_On(i);
012C 042F mov R16,R20
012E 1127 clr R17
0130 07FD sbrc R16,7
0132 1095 com R17
0134 C8DF rcall _LED_On
0136 L34:
0136 .dbline 118
0136 4A95 dec R20
0138 L36:
0138 .dbline 118
0138 4030 cpi R20,0
013A C4F7 brge L33
013C X6:
013C .dbline 123
013C ; //PORTB = 0xF0; //sanity check
013C ; //delay();
013C ; /* stack, don't repeat bit 0 */
013C ; for (i = 0, v = 3; i < 7; i++) {
013C 4427 clr R20
013E 63E0 ldi R22,3
0140 09C0 rjmp L40
0142 L37:
0142 .dbline 123
0142 .dbline 124
0142 ; PORTB = ~v;
0142 262E mov R2,R22
0144 2094 com R2
0146 28BA out 0x18,R2
0148 .dbline 125
0148 ; v |= v << 1;
0148 262E mov R2,R22
014A 220C lsl R2
014C 6229 or R22,R2
014E .dbline 126
014E ; delay(3);
014E 03E0 ldi R16,3
0150 92DF rcall _delay
0152 .dbline 127
0152 ; }
0152 L38:
0152 .dbline 123
0152 4395 inc R20
0154 L40:
0154 .dbline 123
0154 4730 cpi R20,7
0156 ACF3 brlt L37
0158 X7:
0158 .dbline 129
0158 ; /* unstack */
0158 ; for (i = 0, v = 0x7F; i < 8; i++) {
0158 4427 clr R20
015A 6FE7 ldi R22,127
015C 09C0 rjmp L44
015E L41:
015E .dbline 129
015E .dbline 130
015E ; PORTB = ~v;
015E 262E mov R2,R22
0160 2094 com R2
0162 28BA out 0x18,R2
0164 .dbline 131
0164 ; v &= v >> 1;
0164 262E mov R2,R22
0166 2594 asr R2
0168 6221 and R22,R2
016A .dbline 132
016A ; delay(3);
016A 03E0 ldi R16,3
016C 84DF rcall _delay
016E .dbline 133
016E ; }
016E L42:
016E .dbline 129
016E 4395 inc R20
0170 L44:
0170 .dbline 129
0170 4830 cpi R20,8
0172 ACF3 brlt L41
0174 X8:
0174 .dbline 134
0174 ; }
0174 L27:
0174 .dbline 112
0174 CFCF rjmp L26
0176 X9:
0176 .dbline -2
0176 L25:
0176 .dbline 0 ; func end
0176 0895 ret
0178 .dbsym r v 22 C
0178 .dbsym r i 20 C
0178 .dbend
0178 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -