📄 adc-disp.lss
字号:
ret/=6;
17c: c9 01 movw r24, r18
17e: 66 e0 ldi r22, 0x06 ; 6
180: 70 e0 ldi r23, 0x00 ; 0
182: 0e 94 80 01 call 0x300 ; 0x300 <__udivmodhi4>
ADCSRA=0;//关闭ADC
186: 16 b8 out 0x06, r1 ; 6
return ret;
}
188: cb 01 movw r24, r22
18a: df 91 pop r29
18c: cf 91 pop r28
18e: 1f 91 pop r17
190: 0f 91 pop r16
192: ff 90 pop r15
194: 08 95 ret
00000196 <Led_disp>:
int Led_disp(void)
{
196: 44 e0 ldi r20, 0x04 ; 4
198: 50 e0 ldi r21, 0x00 ; 0
uchar i;
for(i=0;i<4;i++)
{
PORTC=g_aLed[i];
PORTA&=~(1<<(i+4));
19a: a1 e0 ldi r26, 0x01 ; 1
19c: b0 e0 ldi r27, 0x00 ; 0
milliseconds can be achieved.
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
19e: 68 ee ldi r22, 0xE8 ; 232
1a0: 73 e0 ldi r23, 0x03 ; 3
_delay_us(1000);
PORTA=0xf0;
1a2: 30 ef ldi r19, 0xF0 ; 240
int Led_disp(void)
{
uchar i;
for(i=0;i<4;i++)
{
PORTC=g_aLed[i];
1a4: fa 01 movw r30, r20
1a6: e4 58 subi r30, 0x84 ; 132
1a8: ff 4f sbci r31, 0xFF ; 255
1aa: 80 81 ld r24, Z
1ac: 85 bb out 0x15, r24 ; 21
PORTA&=~(1<<(i+4));
1ae: 2b b3 in r18, 0x1b ; 27
1b0: cd 01 movw r24, r26
1b2: 04 2e mov r0, r20
1b4: 02 c0 rjmp .+4 ; 0x1ba <Led_disp+0x24>
1b6: 88 0f add r24, r24
1b8: 99 1f adc r25, r25
1ba: 0a 94 dec r0
1bc: e2 f7 brpl .-8 ; 0x1b6 <Led_disp+0x20>
1be: 80 95 com r24
1c0: 82 23 and r24, r18
1c2: 8b bb out 0x1b, r24 ; 27
1c4: cb 01 movw r24, r22
1c6: 01 97 sbiw r24, 0x01 ; 1
1c8: f1 f7 brne .-4 ; 0x1c6 <Led_disp+0x30>
_delay_us(1000);
PORTA=0xf0;
1ca: 3b bb out 0x1b, r19 ; 27
1cc: 4f 5f subi r20, 0xFF ; 255
1ce: 5f 4f sbci r21, 0xFF ; 255
}
int Led_disp(void)
{
uchar i;
for(i=0;i<4;i++)
1d0: 48 30 cpi r20, 0x08 ; 8
1d2: 51 05 cpc r21, r1
1d4: 39 f7 brne .-50 ; 0x1a4 <Led_disp+0xe>
PORTA&=~(1<<(i+4));
_delay_us(1000);
PORTA=0xf0;
}
return 0;
}
1d6: 80 e0 ldi r24, 0x00 ; 0
1d8: 90 e0 ldi r25, 0x00 ; 0
1da: 08 95 ret
000001dc <NtoBCD>:
int NtoBCD(void)
{
1dc: 1f 93 push r17
1de: df 93 push r29
1e0: cf 93 push r28
1e2: cd b7 in r28, 0x3d ; 61
1e4: de b7 in r29, 0x3e ; 62
1e6: 60 97 sbiw r28, 0x10 ; 16
1e8: 0f b6 in r0, 0x3f ; 63
1ea: f8 94 cli
1ec: de bf out 0x3e, r29 ; 62
1ee: 0f be out 0x3f, r0 ; 63
1f0: cd bf out 0x3d, r28 ; 61
uchar g_aDisplayBuf[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
1f2: de 01 movw r26, r28
1f4: 11 96 adiw r26, 0x01 ; 1
1f6: e0 e6 ldi r30, 0x60 ; 96
1f8: f0 e0 ldi r31, 0x00 ; 0
1fa: 80 e1 ldi r24, 0x10 ; 16
1fc: 01 90 ld r0, Z+
1fe: 0d 92 st X+, r0
200: 81 50 subi r24, 0x01 ; 1
202: e1 f7 brne .-8 ; 0x1fc <NtoBCD+0x20>
uint num;
uchar aa,bb,cc;
num=AdcConvert()*10/41;//1024对应2.49V
204: 0e 94 51 00 call 0xa2 ; 0xa2 <AdcConvert>
208: 9c 01 movw r18, r24
20a: 53 e0 ldi r21, 0x03 ; 3
20c: 88 0f add r24, r24
20e: 99 1f adc r25, r25
210: 5a 95 dec r21
212: e1 f7 brne .-8 ; 0x20c <NtoBCD+0x30>
214: 22 0f add r18, r18
216: 33 1f adc r19, r19
218: 82 0f add r24, r18
21a: 93 1f adc r25, r19
21c: 69 e2 ldi r22, 0x29 ; 41
21e: 70 e0 ldi r23, 0x00 ; 0
220: 0e 94 80 01 call 0x300 ; 0x300 <__udivmodhi4>
224: 9b 01 movw r18, r22
aa=num/100;
bb=(num%100)/10;
226: cb 01 movw r24, r22
228: 64 e6 ldi r22, 0x64 ; 100
22a: 70 e0 ldi r23, 0x00 ; 0
22c: 0e 94 80 01 call 0x300 ; 0x300 <__udivmodhi4>
230: 48 2f mov r20, r24
232: 19 2f mov r17, r25
cc=(num%100)%10;
g_aLed[0]=0x80|g_aDisplayBuf[aa];
234: c9 01 movw r24, r18
236: 64 e6 ldi r22, 0x64 ; 100
238: 70 e0 ldi r23, 0x00 ; 0
23a: 0e 94 80 01 call 0x300 ; 0x300 <__udivmodhi4>
23e: 9e 01 movw r18, r28
240: 2f 5f subi r18, 0xFF ; 255
242: 3f 4f sbci r19, 0xFF ; 255
244: f9 01 movw r30, r18
246: e6 0f add r30, r22
248: f1 1d adc r31, r1
24a: 80 81 ld r24, Z
24c: 80 68 ori r24, 0x80 ; 128
24e: 80 93 80 00 sts 0x0080, r24
g_aLed[1]=g_aDisplayBuf[bb];
252: 84 2f mov r24, r20
254: 91 2f mov r25, r17
256: 6a e0 ldi r22, 0x0A ; 10
258: 70 e0 ldi r23, 0x00 ; 0
25a: 0e 94 80 01 call 0x300 ; 0x300 <__udivmodhi4>
25e: f9 01 movw r30, r18
260: e6 0f add r30, r22
262: f1 1d adc r31, r1
264: 80 81 ld r24, Z
266: 80 93 81 00 sts 0x0081, r24
g_aLed[2]=g_aDisplayBuf[cc];
26a: 84 2f mov r24, r20
26c: 91 2f mov r25, r17
26e: 6a e0 ldi r22, 0x0A ; 10
270: 70 e0 ldi r23, 0x00 ; 0
272: 0e 94 80 01 call 0x300 ; 0x300 <__udivmodhi4>
276: 28 0f add r18, r24
278: 31 1d adc r19, r1
27a: f9 01 movw r30, r18
27c: 80 81 ld r24, Z
27e: 80 93 82 00 sts 0x0082, r24
g_aLed[3]=0x1c;//显示“v”
282: 8c e1 ldi r24, 0x1C ; 28
284: 80 93 83 00 sts 0x0083, r24
return 0;
}
288: 80 e0 ldi r24, 0x00 ; 0
28a: 90 e0 ldi r25, 0x00 ; 0
28c: 60 96 adiw r28, 0x10 ; 16
28e: 0f b6 in r0, 0x3f ; 63
290: f8 94 cli
292: de bf out 0x3e, r29 ; 62
294: 0f be out 0x3f, r0 ; 63
296: cd bf out 0x3d, r28 ; 61
298: cf 91 pop r28
29a: df 91 pop r29
29c: 1f 91 pop r17
29e: 08 95 ret
000002a0 <main>:
int main(void)
{
2a0: ff 92 push r15
2a2: 0f 93 push r16
2a4: 1f 93 push r17
2a6: cf 93 push r28
2a8: df 93 push r29
static uint g_aAdValue[8]; //A/D转换缓冲区
static uchar g_aLed[4];
void IoInit(void)
{
PORTA&=~_BV(PA0); //初始化pa0
2aa: d8 98 cbi 0x1b, 0 ; 27
DDRC=0xff;
2ac: 8f ef ldi r24, 0xFF ; 255
2ae: 84 bb out 0x14, r24 ; 20
PORTC=0X00;
2b0: 15 ba out 0x15, r1 ; 21
DDRA=0xf0;
2b2: 80 ef ldi r24, 0xF0 ; 240
2b4: 8a bb out 0x1a, r24 ; 26
PORTA=0xf0;
2b6: 8b bb out 0x1b, r24 ; 27
{
uchar i;
for(i=0;i<4;i++)
{
PORTC=g_aLed[i];
PORTA&=~(1<<(i+4));
2b8: 01 e0 ldi r16, 0x01 ; 1
2ba: 10 e0 ldi r17, 0x00 ; 0
2bc: c8 ee ldi r28, 0xE8 ; 232
2be: d3 e0 ldi r29, 0x03 ; 3
_delay_us(1000);
PORTA=0xf0;
2c0: 60 ef ldi r22, 0xF0 ; 240
2c2: f6 2e mov r15, r22
int main(void)
{
IoInit();
while(1)
{
NtoBCD();
2c4: 0e 94 ee 00 call 0x1dc ; 0x1dc <NtoBCD>
2c8: 44 e0 ldi r20, 0x04 ; 4
2ca: 50 e0 ldi r21, 0x00 ; 0
int Led_disp(void)
{
uchar i;
for(i=0;i<4;i++)
{
PORTC=g_aLed[i];
2cc: fa 01 movw r30, r20
2ce: e4 58 subi r30, 0x84 ; 132
2d0: ff 4f sbci r31, 0xFF ; 255
2d2: 80 81 ld r24, Z
2d4: 85 bb out 0x15, r24 ; 21
PORTA&=~(1<<(i+4));
2d6: 2b b3 in r18, 0x1b ; 27
2d8: c8 01 movw r24, r16
2da: 04 2e mov r0, r20
2dc: 02 c0 rjmp .+4 ; 0x2e2 <main+0x42>
2de: 88 0f add r24, r24
2e0: 99 1f adc r25, r25
2e2: 0a 94 dec r0
2e4: e2 f7 brpl .-8 ; 0x2de <main+0x3e>
2e6: 80 95 com r24
2e8: 82 23 and r24, r18
2ea: 8b bb out 0x1b, r24 ; 27
2ec: ce 01 movw r24, r28
2ee: 01 97 sbiw r24, 0x01 ; 1
2f0: f1 f7 brne .-4 ; 0x2ee <main+0x4e>
_delay_us(1000);
PORTA=0xf0;
2f2: fb ba out 0x1b, r15 ; 27
2f4: 4f 5f subi r20, 0xFF ; 255
2f6: 5f 4f sbci r21, 0xFF ; 255
}
int Led_disp(void)
{
uchar i;
for(i=0;i<4;i++)
2f8: 48 30 cpi r20, 0x08 ; 8
2fa: 51 05 cpc r21, r1
2fc: 39 f7 brne .-50 ; 0x2cc <main+0x2c>
2fe: e2 cf rjmp .-60 ; 0x2c4 <main+0x24>
00000300 <__udivmodhi4>:
300: aa 1b sub r26, r26
302: bb 1b sub r27, r27
304: 51 e1 ldi r21, 0x11 ; 17
306: 07 c0 rjmp .+14 ; 0x316 <__udivmodhi4_ep>
00000308 <__udivmodhi4_loop>:
308: aa 1f adc r26, r26
30a: bb 1f adc r27, r27
30c: a6 17 cp r26, r22
30e: b7 07 cpc r27, r23
310: 10 f0 brcs .+4 ; 0x316 <__udivmodhi4_ep>
312: a6 1b sub r26, r22
314: b7 0b sbc r27, r23
00000316 <__udivmodhi4_ep>:
316: 88 1f adc r24, r24
318: 99 1f adc r25, r25
31a: 5a 95 dec r21
31c: a9 f7 brne .-22 ; 0x308 <__udivmodhi4_loop>
31e: 80 95 com r24
320: 90 95 com r25
322: bc 01 movw r22, r24
324: cd 01 movw r24, r26
326: 08 95 ret
00000328 <_exit>:
328: f8 94 cli
0000032a <__stop_program>:
32a: ff cf rjmp .-2 ; 0x32a <__stop_program>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -