📄 pran.lss
字号:
if(ontime != 0) {
254: 80 91 6e 00 lds r24, 0x006E
258: 90 91 6f 00 lds r25, 0x006F
25c: 89 2b or r24, r25
25e: 51 f0 breq .+20 ; 0x274
PORTD = 0x0; //switch off the buzzer
260: 12 ba out 0x12, r1 ; 18
offtime++;
262: 80 91 60 00 lds r24, 0x0060
266: 90 91 61 00 lds r25, 0x0061
26a: 01 96 adiw r24, 0x01 ; 1
26c: 90 93 61 00 sts 0x0061, r25
270: 80 93 60 00 sts 0x0060, r24
}
if(timer_count == 120) {
274: 28 37 cpi r18, 0x78 ; 120
276: 31 05 cpc r19, r1
278: 19 f5 brne .+70 ; 0x2c0
count--;
27a: 80 91 66 00 lds r24, 0x0066
27e: 90 91 67 00 lds r25, 0x0067
282: 01 97 sbiw r24, 0x01 ; 1
284: 90 93 67 00 sts 0x0067, r25
288: 80 93 66 00 sts 0x0066, r24
if(count == 0) {
28c: 00 97 sbiw r24, 0x00 ; 0
28e: 79 f4 brne .+30 ; 0x2ae
decode_count(count);
290: a9 d0 rcall .+338 ; 0x3e4
PORTD = 0x10;
292: 80 e1 ldi r24, 0x10 ; 16
294: 82 bb out 0x12, r24 ; 18
for(i=0 ; i<200 ; i++)
296: 27 ec ldi r18, 0xC7 ; 199
298: 30 e0 ldi r19, 0x00 ; 0
milliseconds can be achieved.
*/
void
_delay_loop_2(uint16_t __count)
{
29a: 80 e3 ldi r24, 0x30 ; 48
29c: 95 e7 ldi r25, 0x75 ; 117
__asm__ volatile (
29e: 01 97 sbiw r24, 0x01 ; 1
2a0: f1 f7 brne .-4 ; 0x29e
2a2: 21 50 subi r18, 0x01 ; 1
2a4: 30 40 sbci r19, 0x00 ; 0
2a6: 37 ff sbrs r19, 7
2a8: f8 cf rjmp .-16 ; 0x29a
_delay_loop_2(30000);
for(;;)
PORTD = 0x0;
2aa: 12 ba out 0x12, r1 ; 18
2ac: fe cf rjmp .-4 ; 0x2aa
}
decode_count(count);
2ae: 80 91 66 00 lds r24, 0x0066
2b2: 90 91 67 00 lds r25, 0x0067
2b6: 96 d0 rcall .+300 ; 0x3e4
timer_count = 0;
2b8: 10 92 69 00 sts 0x0069, r1
2bc: 10 92 68 00 sts 0x0068, r1
}
OCR1A = 0x1e84;
2c0: 84 e8 ldi r24, 0x84 ; 132
2c2: 9e e1 ldi r25, 0x1E ; 30
2c4: 9b bd out 0x2b, r25 ; 43
2c6: 8a bd out 0x2a, r24 ; 42
TCNT1 = 0xe17c;
2c8: 8c e7 ldi r24, 0x7C ; 124
2ca: 91 ee ldi r25, 0xE1 ; 225
2cc: 9d bd out 0x2d, r25 ; 45
2ce: 8c bd out 0x2c, r24 ; 44
TCCR1B = 0x04;
2d0: 84 e0 ldi r24, 0x04 ; 4
2d2: 8e bd out 0x2e, r24 ; 46
TIMSK = 0x14;
2d4: 84 e1 ldi r24, 0x14 ; 20
2d6: 89 bf out 0x39, r24 ; 57
}
2d8: ff 91 pop r31
2da: ef 91 pop r30
2dc: bf 91 pop r27
2de: af 91 pop r26
2e0: 9f 91 pop r25
2e2: 8f 91 pop r24
2e4: 7f 91 pop r23
2e6: 6f 91 pop r22
2e8: 5f 91 pop r21
2ea: 4f 91 pop r20
2ec: 3f 91 pop r19
2ee: 2f 91 pop r18
2f0: 0f 90 pop r0
2f2: 0f be out 0x3f, r0 ; 63
2f4: 0f 90 pop r0
2f6: 1f 90 pop r1
2f8: 18 95 reti
000002fa <__vector_8>:
ISR(SIG_OVERFLOW1)
{
2fa: 1f 92 push r1
2fc: 0f 92 push r0
2fe: 0f b6 in r0, 0x3f ; 63
300: 0f 92 push r0
302: 11 24 eor r1, r1
304: 2f 93 push r18
306: 3f 93 push r19
308: 5f 93 push r21
30a: 6f 93 push r22
30c: 7f 93 push r23
30e: 8f 93 push r24
310: 9f 93 push r25
312: af 93 push r26
314: bf 93 push r27
if(offtime % offtimetemp == 0) {
316: 80 91 60 00 lds r24, 0x0060
31a: 90 91 61 00 lds r25, 0x0061
31e: 20 91 62 00 lds r18, 0x0062
322: 30 91 63 00 lds r19, 0x0063
326: b9 01 movw r22, r18
328: 91 d0 rcall .+290 ; 0x44c
32a: 89 2b or r24, r25
32c: 59 f4 brne .+22 ; 0x344
PORTD = 0x10; //switch on the buzzer
32e: 80 e1 ldi r24, 0x10 ; 16
330: 82 bb out 0x12, r24 ; 18
ontime++;
332: 80 91 6e 00 lds r24, 0x006E
336: 90 91 6f 00 lds r25, 0x006F
33a: 01 96 adiw r24, 0x01 ; 1
33c: 90 93 6f 00 sts 0x006F, r25
340: 80 93 6e 00 sts 0x006E, r24
}
}
344: bf 91 pop r27
346: af 91 pop r26
348: 9f 91 pop r25
34a: 8f 91 pop r24
34c: 7f 91 pop r23
34e: 6f 91 pop r22
350: 5f 91 pop r21
352: 3f 91 pop r19
354: 2f 91 pop r18
356: 0f 90 pop r0
358: 0f be out 0x3f, r0 ; 63
35a: 0f 90 pop r0
35c: 1f 90 pop r1
35e: 18 95 reti
00000360 <send_data_to_decoder_high>:
uint8_t send_data_to_decoder_high(int digit)
{
uint8_t pass = 0x00;
360: 20 e0 ldi r18, 0x00 ; 0
switch(digit)
362: aa 27 eor r26, r26
364: 97 fd sbrc r25, 7
366: a0 95 com r26
368: ba 2f mov r27, r26
36a: fc 01 movw r30, r24
36c: 0a 97 sbiw r24, 0x0a ; 10
36e: b0 f4 brcc .+44 ; 0x39c
370: eb 5e subi r30, 0xEB ; 235
372: ff 4f sbci r31, 0xFF ; 255
374: 09 94 ijmp
{
case 0: pass = 0x00;
376: 20 e0 ldi r18, 0x00 ; 0
break;
378: 11 c0 rjmp .+34 ; 0x39c
case 1: pass = 0x10;
37a: 20 e1 ldi r18, 0x10 ; 16
break;
37c: 0f c0 rjmp .+30 ; 0x39c
case 2: pass = 0x20;
37e: 20 e2 ldi r18, 0x20 ; 32
break;
380: 0d c0 rjmp .+26 ; 0x39c
case 3: pass = 0x30;
382: 20 e3 ldi r18, 0x30 ; 48
break;
384: 0b c0 rjmp .+22 ; 0x39c
case 4: pass = 0x40;
386: 20 e4 ldi r18, 0x40 ; 64
break;
388: 09 c0 rjmp .+18 ; 0x39c
case 5: pass = 0x50;
38a: 20 e5 ldi r18, 0x50 ; 80
break;
38c: 07 c0 rjmp .+14 ; 0x39c
case 6: pass = 0x60;
38e: 20 e6 ldi r18, 0x60 ; 96
break;
390: 05 c0 rjmp .+10 ; 0x39c
case 7: pass = 0x70;
392: 20 e7 ldi r18, 0x70 ; 112
break;
394: 03 c0 rjmp .+6 ; 0x39c
case 8: pass = 0x80;
396: 20 e8 ldi r18, 0x80 ; 128
break;
398: 01 c0 rjmp .+2 ; 0x39c
case 9: pass = 0x90;
39a: 20 e9 ldi r18, 0x90 ; 144
break;
}
return pass;
39c: 82 2f mov r24, r18
39e: 99 27 eor r25, r25
}
3a0: 08 95 ret
000003a2 <send_data_to_decoder_low>:
uint8_t send_data_to_decoder_low(int digit)
{
uint8_t pass = 0x00;
3a2: 20 e0 ldi r18, 0x00 ; 0
switch(digit)
3a4: aa 27 eor r26, r26
3a6: 97 fd sbrc r25, 7
3a8: a0 95 com r26
3aa: ba 2f mov r27, r26
3ac: fc 01 movw r30, r24
3ae: 0a 97 sbiw r24, 0x0a ; 10
3b0: b0 f4 brcc .+44 ; 0x3de
3b2: e1 5e subi r30, 0xE1 ; 225
3b4: ff 4f sbci r31, 0xFF ; 255
3b6: 09 94 ijmp
{
case 0: pass = 0x00;
3b8: 20 e0 ldi r18, 0x00 ; 0
break;
3ba: 11 c0 rjmp .+34 ; 0x3de
case 1: pass = 0x01;
3bc: 21 e0 ldi r18, 0x01 ; 1
break;
3be: 0f c0 rjmp .+30 ; 0x3de
case 2: pass = 0x02;
3c0: 22 e0 ldi r18, 0x02 ; 2
break;
3c2: 0d c0 rjmp .+26 ; 0x3de
case 3: pass = 0x03;
3c4: 23 e0 ldi r18, 0x03 ; 3
break;
3c6: 0b c0 rjmp .+22 ; 0x3de
case 4: pass = 0x04;
3c8: 24 e0 ldi r18, 0x04 ; 4
break;
3ca: 09 c0 rjmp .+18 ; 0x3de
case 5: pass = 0x05;
3cc: 25 e0 ldi r18, 0x05 ; 5
break;
3ce: 07 c0 rjmp .+14 ; 0x3de
case 6: pass = 0x06;
3d0: 26 e0 ldi r18, 0x06 ; 6
break;
3d2: 05 c0 rjmp .+10 ; 0x3de
case 7: pass = 0x07;
3d4: 27 e0 ldi r18, 0x07 ; 7
break;
3d6: 03 c0 rjmp .+6 ; 0x3de
case 8: pass = 0x08;
3d8: 28 e0 ldi r18, 0x08 ; 8
break;
3da: 01 c0 rjmp .+2 ; 0x3de
case 9: pass = 0x09;
3dc: 29 e0 ldi r18, 0x09 ; 9
break;
}
return pass;
3de: 82 2f mov r24, r18
3e0: 99 27 eor r25, r25
}
3e2: 08 95 ret
000003e4 <decode_count>:
void decode_count(int county)
{
PORTC = send_data_to_decoder_high(county);
3e4: bd df rcall .-134 ; 0x360
3e6: 85 bb out 0x15, r24 ; 21
}
3e8: 08 95 ret
000003ea <decode_buzzer_count>:
void decode_buzzer_count(int county)
{
3ea: ef 92 push r14
3ec: ff 92 push r15
3ee: 0f 93 push r16
3f0: 1f 93 push r17
3f2: 7c 01 movw r14, r24
int digit1,digit2;
digit2 = county/10;
3f4: 6a e0 ldi r22, 0x0A ; 10
3f6: 70 e0 ldi r23, 0x00 ; 0
3f8: 29 d0 rcall .+82 ; 0x44c
3fa: 8b 01 movw r16, r22
PORTB = send_data_to_decoder_low(digit2);
3fc: cb 01 movw r24, r22
3fe: d1 df rcall .-94 ; 0x3a2
400: 88 bb out 0x18, r24 ; 24
digit1 = (county - digit2 * 10);
402: c8 01 movw r24, r16
404: 23 e0 ldi r18, 0x03 ; 3
406: 88 0f add r24, r24
408: 99 1f adc r25, r25
40a: 2a 95 dec r18
40c: e1 f7 brne .-8 ; 0x406
40e: 80 0f add r24, r16
410: 91 1f adc r25, r17
412: 80 0f add r24, r16
414: 91 1f adc r25, r17
416: e8 1a sub r14, r24
418: f9 0a sbc r15, r25
PORTB |= send_data_to_decoder_high(digit1);
41a: c7 01 movw r24, r14
41c: a1 df rcall .-190 ; 0x360
41e: 98 2f mov r25, r24
420: 88 b3 in r24, 0x18 ; 24
422: 89 2b or r24, r25
424: 88 bb out 0x18, r24 ; 24
}
426: 1f 91 pop r17
428: 0f 91 pop r16
42a: ff 90 pop r15
42c: ef 90 pop r14
42e: 08 95 ret
00000430 <main>:
int main(void)
{
430: cf e5 ldi r28, 0x5F ; 95
432: d2 e0 ldi r29, 0x02 ; 2
434: de bf out 0x3e, r29 ; 62
436: cd bf out 0x3d, r28 ; 61
io_init();
438: 28 de rcall .-944 ; 0x8a
extint_init();
43a: 32 de rcall .-924 ; 0xa0
sei();
43c: 78 94 sei
decode_buzzer_count(10);
43e: 8a e0 ldi r24, 0x0A ; 10
440: 90 e0 ldi r25, 0x00 ; 0
442: d3 df rcall .-90 ; 0x3ea
decode_count(0);
444: 80 e0 ldi r24, 0x00 ; 0
446: 90 e0 ldi r25, 0x00 ; 0
448: cd df rcall .-102 ; 0x3e4
while(1){}
44a: ff cf rjmp .-2 ; 0x44a
0000044c <__divmodhi4>:
return 0;
}
44c: 97 fb bst r25, 7
44e: 09 2e mov r0, r25
450: 07 26 eor r0, r23
452: 0a d0 rcall .+20 ; 0x468
454: 77 fd sbrc r23, 7
456: 04 d0 rcall .+8 ; 0x460
458: 0c d0 rcall .+24 ; 0x472
45a: 06 d0 rcall .+12 ; 0x468
45c: 00 20 and r0, r0
45e: 1a f4 brpl .+6 ; 0x466
00000460 <__divmodhi4_neg2>:
460: 70 95 com r23
462: 61 95 neg r22
464: 7f 4f sbci r23, 0xFF ; 255
00000466 <__divmodhi4_exit>:
466: 08 95 ret
00000468 <__divmodhi4_neg1>:
468: f6 f7 brtc .-4 ; 0x466
46a: 90 95 com r25
46c: 81 95 neg r24
46e: 9f 4f sbci r25, 0xFF ; 255
470: 08 95 ret
00000472 <__udivmodhi4>:
472: aa 1b sub r26, r26
474: bb 1b sub r27, r27
476: 51 e1 ldi r21, 0x11 ; 17
478: 07 c0 rjmp .+14 ; 0x488
0000047a <__udivmodhi4_loop>:
47a: aa 1f adc r26, r26
47c: bb 1f adc r27, r27
47e: a6 17 cp r26, r22
480: b7 07 cpc r27, r23
482: 10 f0 brcs .+4 ; 0x488
484: a6 1b sub r26, r22
486: b7 0b sbc r27, r23
00000488 <__udivmodhi4_ep>:
488: 88 1f adc r24, r24
48a: 99 1f adc r25, r25
48c: 5a 95 dec r21
48e: a9 f7 brne .-22 ; 0x47a
490: 80 95 com r24
492: 90 95 com r25
494: bc 01 movw r22, r24
496: cd 01 movw r24, r26
498: 08 95 ret
0000049a <_exit>:
49a: ff cf rjmp .-2 ; 0x49a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -