Код: Выделить всё
main.elf: file format elf32-avr
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2e 00 jmp 0x5c ; 0x5c <__ctors_end>
4: 0c 94 77 00 jmp 0xee ; 0xee <__vector_1>
8: 0c 94 59 00 jmp 0xb2 ; 0xb2 <__vector_2>
c: 0c 94 65 00 jmp 0xca ; 0xca <__vector_3>
10: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
14: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
18: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
1c: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
20: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
24: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
28: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
2c: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
30: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
34: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
38: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
3c: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
40: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
44: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
48: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
4c: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
50: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
54: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
58: 0c 94 38 00 jmp 0x70 ; 0x70 <__bad_interrupt>
0000005c <__ctors_end>:
5c: 11 24 eor r1, r1
5e: 1f be out 0x3f, r1 ; 63
60: cf ef ldi r28, 0xFF ; 255
62: d4 e0 ldi r29, 0x04 ; 4
64: de bf out 0x3e, r29 ; 62
66: cd bf out 0x3d, r28 ; 61
68: 0e 94 3a 00 call 0x74 ; 0x74 <main>
6c: 0c 94 89 00 jmp 0x112 ; 0x112 <_exit>
00000070 <__bad_interrupt>:
70: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000074 <main>:
#include <avr/interrupt.h>
int main (void)
{
DDRB |= (1<<PB0) | (1<<PB6); // Порт B на выход
74: 84 b1 in r24, 0x04 ; 4
76: 81 64 ori r24, 0x41 ; 65
78: 84 b9 out 0x04, r24 ; 4
PORTB &= ~((1<<PB0) | (1<<PB6)); // 0x00;
7a: 85 b1 in r24, 0x05 ; 5
7c: 8e 7b andi r24, 0xBE ; 190
7e: 85 b9 out 0x05, r24 ; 5
DDRB &= ~(1<<PB5); // Порт B на выход
80: 25 98 cbi 0x04, 5 ; 4
PORTB |= (1<<PB5); // 0x00;
82: 2d 9a sbi 0x05, 5 ; 5
DDRD &= ~(1<<PD1); // Порт D на вход
84: 51 98 cbi 0x0a, 1 ; 10
PORTD |= (1<<PD1); // включаем подтяжки на порте D
86: 59 9a sbi 0x0b, 1 ; 11
DDRE = 0x00; // Порт E на вход
88: 1d b8 out 0x0d, r1 ; 13
PORTE = 0xFF; // включаем подтяжки на порте E
8a: 9f ef ldi r25, 0xFF ; 255
8c: 9e b9 out 0x0e, r25 ; 14
EICRA = (1<<ISC00);//Any logical change on INT0 generates an interrupt request.
8e: 81 e0 ldi r24, 0x01 ; 1
90: 80 93 69 00 sts 0x0069, r24
PCMSK0 = 0xff; //маска прерываний на порт E
94: 90 93 6b 00 sts 0x006B, r25
PCMSK1 = (1<<PCINT13); //PB5
98: 80 e2 ldi r24, 0x20 ; 32
9a: 80 93 6c 00 sts 0x006C, r24
EIMSK = (1<<PCIE0) | (1<<PCIE1) | (1<<INT0); // включение прерываний PCINT7..0
9e: 81 ec ldi r24, 0xC1 ; 193
a0: 8d bb out 0x1d, r24 ; 29
//EIFR = (1<<PCIF0) | (1<<PCIF1) | (1<<INTF0);
sei();// Разрешаем прерывания глобально.
a2: 78 94 sei
while(1) {
if (!(PINE & (1<<PE6)))
PORTB ^= (1<<PB6);
a4: 90 e4 ldi r25, 0x40 ; 64
sei();// Разрешаем прерывания глобально.
while(1) {
if (!(PINE & (1<<PE6)))
a6: 66 99 sbic 0x0c, 6 ; 12
a8: fe cf rjmp .-4 ; 0xa6 <main+0x32>
PORTB ^= (1<<PB6);
aa: 85 b1 in r24, 0x05 ; 5
ac: 89 27 eor r24, r25
ae: 85 b9 out 0x05, r24 ; 5
b0: fa cf rjmp .-12 ; 0xa6 <main+0x32>
000000b2 <__vector_2>:
};
}
ISR(PCINT0_vect) {
b2: 1f 92 push r1
b4: 0f 92 push r0
b6: 0f b6 in r0, 0x3f ; 63
b8: 0f 92 push r0
ba: 11 24 eor r1, r1
PORTB |= (1<<PB6);
bc: 2e 9a sbi 0x05, 6 ; 5
PORTB |= (1<<PB0);
be: 28 9a sbi 0x05, 0 ; 5
}
c0: 0f 90 pop r0
c2: 0f be out 0x3f, r0 ; 63
c4: 0f 90 pop r0
c6: 1f 90 pop r1
c8: 18 95 reti
000000ca <__vector_3>:
ISR(PCINT1_vect) {
ca: 1f 92 push r1
cc: 0f 92 push r0
ce: 0f b6 in r0, 0x3f ; 63
d0: 0f 92 push r0
d2: 11 24 eor r1, r1
d4: 8f 93 push r24
d6: 9f 93 push r25
PORTB ^= (1<<PB6);
d8: 85 b1 in r24, 0x05 ; 5
da: 90 e4 ldi r25, 0x40 ; 64
dc: 89 27 eor r24, r25
de: 85 b9 out 0x05, r24 ; 5
}
e0: 9f 91 pop r25
e2: 8f 91 pop r24
e4: 0f 90 pop r0
e6: 0f be out 0x3f, r0 ; 63
e8: 0f 90 pop r0
ea: 1f 90 pop r1
ec: 18 95 reti
000000ee <__vector_1>:
ISR(INT0_vect) {
ee: 1f 92 push r1
f0: 0f 92 push r0
f2: 0f b6 in r0, 0x3f ; 63
f4: 0f 92 push r0
f6: 11 24 eor r1, r1
f8: 8f 93 push r24
fa: 9f 93 push r25
PORTB ^= (1<<PB6);
fc: 85 b1 in r24, 0x05 ; 5
fe: 90 e4 ldi r25, 0x40 ; 64
100: 89 27 eor r24, r25
102: 85 b9 out 0x05, r24 ; 5
104: 9f 91 pop r25
106: 8f 91 pop r24
108: 0f 90 pop r0
10a: 0f be out 0x3f, r0 ; 63
10c: 0f 90 pop r0
10e: 1f 90 pop r1
110: 18 95 reti
00000112 <_exit>:
112: f8 94 cli
00000114 <__stop_program>:
114: ff cf rjmp .-2 ; 0x114 <__stop_program>