📄 gvgledtest.lss
字号:
GvgLedTest.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000003e0 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000001e 00800060 000003e0 00000474 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000015 0080007e 0080007e 00000492 2**0
ALLOC
3 .noinit 00000000 00800093 00800093 00000492 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000492 2**0
CONTENTS
5 .stab 00000f18 00000000 00000000 00000494 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 0000094d 00000000 00000000 000013ac 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 1f c0 rjmp .+62 ; 0x40
2: 37 c0 rjmp .+110 ; 0x72
4: 6f c0 rjmp .+222 ; 0xe4
6: 98 c0 rjmp .+304 ; 0x138
8: 34 c0 rjmp .+104 ; 0x72
a: 33 c0 rjmp .+102 ; 0x72
c: 32 c0 rjmp .+100 ; 0x72
e: 31 c0 rjmp .+98 ; 0x72
10: 30 c0 rjmp .+96 ; 0x72
12: 2f c0 rjmp .+94 ; 0x72
00000014 <Display_Code>:
14: 3f 06 5b 4f 66 6d 7d 07 7f 6f 00 00 00 00 00 00 ?.[Ofm}..o......
24: 00 77 7c 39 5e 79 71 7d 76 30 0f 00 38 00 37 3f .w|9^yq}v0..8.7?
34: 73 67 50 6d 4e 3e 00 00 00 6e 00 00 sgPmN>...n..
00000040 <__init>:
40: 11 24 eor r1, r1
42: 1f be out 0x3f, r1 ; 63
44: cf e9 ldi r28, 0x9F ; 159
46: cd bf out 0x3d, r28 ; 61
00000048 <__do_copy_data>:
48: 10 e0 ldi r17, 0x00 ; 0
4a: a0 e6 ldi r26, 0x60 ; 96
4c: b0 e0 ldi r27, 0x00 ; 0
4e: e0 ee ldi r30, 0xE0 ; 224
50: f3 e0 ldi r31, 0x03 ; 3
52: 03 c0 rjmp .+6 ; 0x5a
00000054 <.do_copy_data_loop>:
54: c8 95 lpm
56: 31 96 adiw r30, 0x01 ; 1
58: 0d 92 st X+, r0
0000005a <.do_copy_data_start>:
5a: ae 37 cpi r26, 0x7E ; 126
5c: b1 07 cpc r27, r17
5e: d1 f7 brne .-12 ; 0x54
00000060 <__do_clear_bss>:
60: 10 e0 ldi r17, 0x00 ; 0
62: ae e7 ldi r26, 0x7E ; 126
64: b0 e0 ldi r27, 0x00 ; 0
66: 01 c0 rjmp .+2 ; 0x6a
00000068 <.do_clear_bss_loop>:
68: 1d 92 st X+, r1
0000006a <.do_clear_bss_start>:
6a: a3 39 cpi r26, 0x93 ; 147
6c: b1 07 cpc r27, r17
6e: e1 f7 brne .-8 ; 0x68
70: 76 c0 rjmp .+236 ; 0x15e
00000072 <__bad_interrupt>:
72: c6 cf rjmp .-116 ; 0x0
00000074 <INIT>:
============================================================*/
void INIT(void)
{
//Settings DATA\ SCK\ STB\ LED is OUTPUT and IR\ RESET is INPUT
DDRB = (1<<DATA)|(1<<SCK)|(1<<STB)|(1<<LED);
74: 87 e1 ldi r24, 0x17 ; 23
76: 87 bb out 0x17, r24 ; 23
PORTB = 0xFF;
78: 8f ef ldi r24, 0xFF ; 255
7a: 88 bb out 0x18, r24 ; 24
TIMSK0 = (1<<TOIE0); //T/C0
7c: 82 e0 ldi r24, 0x02 ; 2
7e: 89 bf out 0x39, r24 ; 57
TCCR0B = (1<< CS02)|(1<<CS00);
80: 85 e0 ldi r24, 0x05 ; 5
82: 83 bf out 0x33, r24 ; 51
TCNT0 = 0x41;
84: 81 e4 ldi r24, 0x41 ; 65
86: 82 bf out 0x32, r24 ; 50
sei(); // all interrupt is enabled
88: 78 94 sei
#ifdef ADCEN
ADMUX = (1<<ADLAR)|(1<<MUX1)|(1<<MUX0);
#else
GIMSK = (1<<PCIE); // pin change interrupt is enabled
8a: 80 e2 ldi r24, 0x20 ; 32
8c: 8b bf out 0x3b, r24 ; 59
PCMSK = (1<<PCINT3); // select I/O pin of pin chang interrupt
8e: 88 e0 ldi r24, 0x08 ; 8
90: 85 bb out 0x15, r24 ; 21
92: 08 95 ret
00000094 <Key_Prog>:
#endif
}
//*****************************************************************************
/*============================================================
============================================================*/
#ifdef ADCEN
void Voltage_detect(void)
{
unsigned char i;
ADCSRA = (1<<ADEN)|(1<<ADSC);
while(ADCSRA & (1<<ADSC))
{
;
}
// for(i=0;i<30;i++);
Display_All_Bit(0x00);
Display_data[2]=ADCH;
if(ADCH & 0x80)
{
Display_data[1] = 0x01;
}
else
{
Display_data[1] =0x00;
}
if(ADCH >= 0xA5)
{
if(ADCH <= 0xC6)
{
if(ADC_value<= 255)
{
ADC_value++;
}
}
else ADC_value= 0;
}
if(ADC_value>= 1)
{
PORTB &= ~(1<<LED);
}
else
{
PORTB |= (1<<LED);
}
}
#endif
/*============================================================
============================================================*/
void Key_Prog(void)
{
//if(Key_data == 0x00)
// PORTB |= LED;
//else
// PORTB &= ~LED;
/////////////////////////////////////////////////////////////////
if(Key_data != 0xFF)
94: 90 91 90 00 lds r25, 0x0090
98: 80 91 91 00 lds r24, 0x0091
9c: 9f 3f cpi r25, 0xFF ; 255
9e: e9 f0 breq .+58 ; 0xda
{
if(Bit_make&(1<<Bit_make_Key) )
a0: 82 ff sbrs r24, 2
a2: 17 c0 rjmp .+46 ; 0xd2
{
// Display(Key_data);
switch(Key_data)
a4: 89 2f mov r24, r25
a6: 99 27 eor r25, r25
a8: 83 30 cpi r24, 0x03 ; 3
aa: 91 05 cpc r25, r1
ac: 61 f0 breq .+24 ; 0xc6
ae: 84 30 cpi r24, 0x04 ; 4
b0: 91 05 cpc r25, r1
b2: 1c f4 brge .+6 ; 0xba
b4: 89 2b or r24, r25
b6: 21 f0 breq .+8 ; 0xc0
b8: 0c c0 rjmp .+24 ; 0xd2
ba: 08 97 sbiw r24, 0x08 ; 8
bc: 39 f0 breq .+14 ; 0xcc
be: 09 c0 rjmp .+18 ; 0xd2
{
case 00:
Display(":OFF::::8");
c0: 80 e6 ldi r24, 0x60 ; 96
c2: 90 e0 ldi r25, 0x00 ; 0
c4: 05 c0 rjmp .+10 ; 0xd0
break;
// case 02:
// Display("2");
// break;
case 03:
Display("OPEN:::8:");
c6: 8a e6 ldi r24, 0x6A ; 106
c8: 90 e0 ldi r25, 0x00 ; 0
ca: 02 c0 rjmp .+4 ; 0xd0
break;
// case 05:
// Display("5");
// break;
case 010:
Display("NODISC8::");
cc: 84 e7 ldi r24, 0x74 ; 116
ce: 90 e0 ldi r25, 0x00 ; 0
d0: ad d0 rcall .+346 ; 0x22c
break;
// case 012:
// Display("A");
// break;
default:
break;
}
}
Bit_make&= ~(1<<Bit_make_Key);
d2: 80 91 91 00 lds r24, 0x0091
d6: 8b 7f andi r24, 0xFB ; 251
d8: 01 c0 rjmp .+2 ; 0xdc
}
else
Bit_make|=(1<<Bit_make_Key);
da: 84 60 ori r24, 0x04 ; 4
dc: 80 93 91 00 sts 0x0091, r24
e0: 08 95 ret
e2: 08 95 ret
000000e4 <__vector_2>:
}
/*===========================================================
===========================================================*/
SIGNAL(SIG_PIN_CHANGE0)
{
e4: 1f 92 push r1
e6: 0f 92 push r0
e8: 0f b6 in r0, 0x3f ; 63
ea: 0f 92 push r0
ec: 11 24 eor r1, r1
ee: 2f 93 push r18
f0: 3f 93 push r19
f2: 4f 93 push r20
f4: 5f 93 push r21
f6: 6f 93 push r22
f8: 7f 93 push r23
fa: 8f 93 push r24
fc: 9f 93 push r25
fe: af 93 push r26
100: bf 93 push r27
102: ef 93 push r30
104: ff 93 push r31
IR_Value=IR_Value_Read();
106: 1b d1 rcall .+566 ; 0x33e
108: 80 93 92 00 sts 0x0092, r24
Display_data[2]=IR_Value;
10c: 80 93 80 00 sts 0x0080, r24
GIFR|=(1<<PCIF);
110: 8a b7 in r24, 0x3a ; 58
112: 80 62 ori r24, 0x20 ; 32
114: 8a bf out 0x3a, r24 ; 58
116: ff 91 pop r31
118: ef 91 pop r30
11a: bf 91 pop r27
11c: af 91 pop r26
11e: 9f 91 pop r25
120: 8f 91 pop r24
122: 7f 91 pop r23
124: 6f 91 pop r22
126: 5f 91 pop r21
128: 4f 91 pop r20
12a: 3f 91 pop r19
12c: 2f 91 pop r18
12e: 0f 90 pop r0
130: 0f be out 0x3f, r0 ; 63
132: 0f 90 pop r0
134: 1f 90 pop r1
136: 18 95 reti
00000138 <__vector_3>:
}
/*============================================================
============================================================*/
SIGNAL(SIG_OVERFLOW0)
{
138: 1f 92 push r1
13a: 0f 92 push r0
13c: 0f b6 in r0, 0x3f ; 63
13e: 0f 92 push r0
140: 11 24 eor r1, r1
142: 8f 93 push r24
TCNT0 = 0x41;
144: 81 e4 ldi r24, 0x41 ; 65
146: 82 bf out 0x32, r24 ; 50
Bit_make|=(1<<Bit_make_Display);
148: 80 91 91 00 lds r24, 0x0091
14c: 82 60 ori r24, 0x02 ; 2
14e: 80 93 91 00 sts 0x0091, r24
152: 8f 91 pop r24
154: 0f 90 pop r0
156: 0f be out 0x3f, r0 ; 63
158: 0f 90 pop r0
15a: 1f 90 pop r1
15c: 18 95 reti
0000015e <main>:
}
/*============================================================
============================================================*/
int main(void)
{
15e: cf e9 ldi r28, 0x9F ; 159
160: d0 e0 ldi r29, 0x00 ; 0
162: de bf out 0x3e, r29 ; 62
164: cd bf out 0x3d, r28 ; 61
INIT();
166: 86 df rcall .-244 ; 0x74
while(1)
{
if(Bit_make&(1<<Bit_make_Display))
168: 80 91 91 00 lds r24, 0x0091
16c: 81 ff sbrs r24, 1
16e: fc cf rjmp .-8 ; 0x168
{
PORTB ^=(1<<LED);
170: 88 b3 in r24, 0x18 ; 24
172: 10 e1 ldi r17, 0x10 ; 16
174: 81 27 eor r24, r17
176: 88 bb out 0x18, r24 ; 24
Key_data=V_Kay_Scan();
178: 46 d0 rcall .+140 ; 0x206
17a: 80 93 90 00 sts 0x0090, r24
V_DISPLAYDATA_SEND();
17e: 17 d0 rcall .+46 ; 0x1ae
Key_Prog();
180: 89 df rcall .-238 ; 0x94
#ifdef ADCEN
if(Bit_make & (1<<Bit_make_ADC))
{
Voltage_detect();
}
#endif;
PORTB ^=(1<<LED);
182: 88 b3 in r24, 0x18 ; 24
184: 81 27 eor r24, r17
186: 88 bb out 0x18, r24 ; 24
Bit_make&=~(1<<Bit_make_Display);
188: 80 91 91 00 lds r24, 0x0091
18c: 8d 7f andi r24, 0xFD ; 253
18e: 80 93 91 00 sts 0x0091, r24
192: ea cf rjmp .-44 ; 0x168
00000194 <V_SPI_SEND>:
FUNCTION:
============================================================*/
void V_SPI_SEND(unsigned char data)
{
194: 97 e0 ldi r25, 0x07 ; 7
unsigned char i,outdata;
outdata = data;
for(i=0; i<8; i++)
{
if (outdata & 0x01)
196: 80 ff sbrs r24, 0
198: 02 c0 rjmp .+4 ; 0x19e
PORTB |= (1<<DATA);
19a: c1 9a sbi 0x18, 1 ; 24
19c: 01 c0 rjmp .+2 ; 0x1a0
else
PORTB &= ~(1<<DATA);
19e: c1 98 cbi 0x18, 1 ; 24
PORTB &= ~(1<<SCK);
1a0: c2 98 cbi 0x18, 2 ; 24
PORTB |= (1<<SCK);
1a2: c2 9a sbi 0x18, 2 ; 24
outdata >>= 1;
1a4: 86 95 lsr r24
1a6: 91 50 subi r25, 0x01 ; 1
1a8: 97 ff sbrs r25, 7
1aa: f5 cf rjmp .-22 ; 0x196
1ac: 08 95 ret
000001ae <V_DISPLAYDATA_SEND>:
}
}
/*============================================================
FUNCTION: Display data send out
============================================================*/
void V_DISPLAYDATA_SEND(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -