20121021-183239

This commit is contained in:
BlubbFish 2012-10-21 16:30:14 +00:00
parent 4c72b9ded5
commit 622ea95cd6
6 changed files with 659 additions and 150 deletions

View File

@ -1,6 +1,7 @@
#include <stdint.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
volatile uint8_t led[3] = {(1<<PB3)|(1<<PB0),(1<<PB4)|(1<<PB0),(1<<PB5)|(1<<PB0)};
volatile uint8_t motor[6] = {
@ -10,17 +11,73 @@ volatile uint8_t motor[6] = {
};
int main(void) {
DDRB |= (1<<PB3) | (1<<PB4) | (1<<PB5) | (1<<PB0);
DDRD |= 0b11111111;
PORTB |= (1<<PB0);
while(1) {
void runon() {
for(uint8_t j=0;j<2;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB |= led[i%3];
PORTD |= motor[i];
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(100);
}
}
for(uint8_t j=0;j<4;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(50);
}
}
for(uint8_t j=0;j<8;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(20);
}
}
for(uint8_t j=0;j<16;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(10);
}
}
for(uint8_t j=0;j<32;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(5);
PORTB &= ~(led[i%3]);
PORTD = 0;
}
}
for(uint8_t j=0;j<64;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(3);
}
}
}
ISR(PCINT1_vect) {
PORTD = 0;
while(1) {
_delay_ms(1);
}
}
int main(void) {
cli();
DDRB |= (1<<PB3) | (1<<PB4) | (1<<PB5) | (1<<PB0);
DDRD |= 0b11111111;
PORTB |= (1<<PB0);
sei();
runon();
while(1) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(2);
}
}
}

Binary file not shown.

View File

@ -1,16 +1,42 @@
:1000000019C02BC02AC029C028C027C026C025C0BF
:1000000019C02BC02AC029C0F8C027C026C025C0EF
:1000100024C023C022C021C020C01FC01EC01DC0DC
:100020001CC01BC01AC019C018C017C016C015C00C
:1000300014C013C011241FBECFEFD2E0DEBFCDBF6E
:1000400011E0A0E0B1E0E2EDF0E002C005900D9219
:10005000AA30B107D9F702D03AC0D2CF84B18963B0
:1000600084B98AB18FEF8AB9289A20E033E045B18C
:10007000822F632F20D0E92FF0E0E050FF4F8081E6
:10008000842B85B99BB1A22FB0E0AD5FBE4F8C91A0
:10009000892B8BB987EA91E60197F1F700C0000040
:1000A00095B180818095892385B91BB82F5F263053
:1000B000F0F220E0DCCF991B79E004C0991F96177D
:1000C00008F0961B881F7A95C9F780950895F894D3
:0200D000FFCF60
:0A00D200091121120624210918006B
:1000400011E0A0E0B1E0E0E8F2E002C005900D921E
:10005000AA30B107D9F7E0D011C1D2CF42E053E0C6
:100060001EC0822F652FFED0E92FF0E0E050FF4F39
:10007000808185B9F901ED5FFE4F80818BB98FE7F3
:100080009AE1A6E081509040A040E1F700C0000056
:100090002F5F3F4F2630310521F7415021F120E0FD
:1000A00030E0DFCF822F652FDDD0E92FF0E0E05088
:1000B000FF4F808185B9F901ED5FFE4F80818BB9DB
:1000C0008FE39DE0A3E081509040A040E1F700C0A5
:1000D00000002F5F3F4F2630310521F7415029F4B2
:1000E00048E053E026C044E053E020E030E0DACFBF
:1000F000822F652FB7D0E92FF0E0E050FF4F8081CD
:1001000085B9F901ED5FFE4F80818BB98FE798E3E8
:10011000A1E081509040A040E1F700C000002F5FB7
:100120003F4F2630310521F7415019F440E153E0AB
:1001300021C020E030E0DCCF822F652F93D0E92F63
:10014000F0E0E050FF4F808185B9F901ED5FFE4F8F
:1001500080818BB9AFE4B3EC1197F1F700C00000D8
:100160002F5F3F4F2630310539F7415019F440E2F7
:1001700053E021C020E030E0DFCF822F652F72D026
:10018000E92FF0E0E050FF4F808185B9F901ED5F84
:10019000FE4F80818BB987EA91E60197F1F700C0A5
:1001A00000002F5F3F4F2630310539F7415019F4D9
:1001B00040E453E01EC020E030E0DFCF822F652F07
:1001C00051D0E92FF0E0E050FF4F808185B9F9016F
:1001D000ED5FFE4F80818BB9A7E9BAE31197F1F784
:1001E00000C000002F5F3F4F2630310539F74150E6
:1001F00019F020E030E0E2CF08951F920F920FB681
:100200000F9211248F939F931BB887E893E1019776
:10021000F1F700C00000F9CFF89484B1896384B984
:100220008AB18FEF8AB9289A789418DF20E033E0FA
:10023000822F632F17D0E92FF0E0E050FF4F80812D
:1002400085B9E22FF0E0ED5FFE4F80818BB98FE042
:1002500097E20197F1F700C000002F5F263040F3CE
:1002600020E0E6CF991B79E004C0991F961708F0AB
:10027000961B881F7A95C9F780950895F894FFCF4B
:0A02800009112112062421091800BB
:00000001FF

View File

@ -3,31 +3,33 @@ Motor.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 0000000a 00800100 000000d2 00000146 2**0
0 .data 0000000a 00800100 00000280 000002f4 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 000000d2 00000000 00000000 00000074 2**1
1 .text 00000280 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .stab 000006cc 00000000 00000000 00000150 2**2
2 .stab 000006cc 00000000 00000000 00000300 2**2
CONTENTS, READONLY, DEBUGGING
3 .stabstr 00000085 00000000 00000000 0000081c 2**0
3 .stabstr 00000085 00000000 00000000 000009cc 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_aranges 00000020 00000000 00000000 000008a1 2**0
4 .debug_aranges 00000020 00000000 00000000 00000a51 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_pubnames 0000002d 00000000 00000000 000008c1 2**0
5 .debug_pubnames 00000046 00000000 00000000 00000a71 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_info 000001e3 00000000 00000000 000008ee 2**0
6 .debug_info 00000492 00000000 00000000 00000ab7 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_abbrev 00000163 00000000 00000000 00000ad1 2**0
7 .debug_abbrev 000001be 00000000 00000000 00000f49 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_line 00000182 00000000 00000000 00000c34 2**0
8 .debug_line 00000375 00000000 00000000 00001107 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_frame 00000020 00000000 00000000 00000db8 2**2
9 .debug_frame 00000040 00000000 00000000 0000147c 2**2
CONTENTS, READONLY, DEBUGGING
10 .debug_str 000000ee 00000000 00000000 00000dd8 2**0
10 .debug_str 000000ff 00000000 00000000 000014bc 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 0000001f 00000000 00000000 00000ec6 2**0
11 .debug_loc 0000042d 00000000 00000000 000015bb 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_pubtypes 00000038 00000000 00000000 00000ee5 2**0
12 .debug_pubtypes 00000038 00000000 00000000 000019e8 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_ranges 00000128 00000000 00000000 00001a20 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
@ -37,7 +39,7 @@ Disassembly of section .text:
2: 2b c0 rjmp .+86 ; 0x5a <__bad_interrupt>
4: 2a c0 rjmp .+84 ; 0x5a <__bad_interrupt>
6: 29 c0 rjmp .+82 ; 0x5a <__bad_interrupt>
8: 28 c0 rjmp .+80 ; 0x5a <__bad_interrupt>
8: f8 c0 rjmp .+496 ; 0x1fa <__vector_4>
a: 27 c0 rjmp .+78 ; 0x5a <__bad_interrupt>
c: 26 c0 rjmp .+76 ; 0x5a <__bad_interrupt>
e: 25 c0 rjmp .+74 ; 0x5a <__bad_interrupt>
@ -72,114 +74,531 @@ Disassembly of section .text:
40: 11 e0 ldi r17, 0x01 ; 1
42: a0 e0 ldi r26, 0x00 ; 0
44: b1 e0 ldi r27, 0x01 ; 1
46: e2 ed ldi r30, 0xD2 ; 210
48: f0 e0 ldi r31, 0x00 ; 0
46: e0 e8 ldi r30, 0x80 ; 128
48: f2 e0 ldi r31, 0x02 ; 2
4a: 02 c0 rjmp .+4 ; 0x50 <__do_copy_data+0x10>
4c: 05 90 lpm r0, Z+
4e: 0d 92 st X+, r0
50: aa 30 cpi r26, 0x0A ; 10
52: b1 07 cpc r27, r17
54: d9 f7 brne .-10 ; 0x4c <__do_copy_data+0xc>
56: 02 d0 rcall .+4 ; 0x5c <main>
58: 3a c0 rjmp .+116 ; 0xce <_exit>
56: e0 d0 rcall .+448 ; 0x218 <main>
58: 11 c1 rjmp .+546 ; 0x27c <_exit>
0000005a <__bad_interrupt>:
5a: d2 cf rjmp .-92 ; 0x0 <__vectors>
0000005c <main>:
0000005c <runon>:
(1<<PD2)|(1<<PD5),(1<<PD0)|(1<<PD5),
(1<<PD0)|(1<<PD3),(1<<PD4)|(1<<PD3)
};
int main(void) {
DDRB |= (1<<PB3) | (1<<PB4) | (1<<PB5) | (1<<PB0);
5c: 84 b1 in r24, 0x04 ; 4
5e: 89 63 ori r24, 0x39 ; 57
60: 84 b9 out 0x04, r24 ; 4
DDRD |= 0b11111111;
62: 8a b1 in r24, 0x0a ; 10
64: 8f ef ldi r24, 0xFF ; 255
66: 8a b9 out 0x0a, r24 ; 10
PORTB |= (1<<PB0);
68: 28 9a sbi 0x05, 0 ; 5
while(1) {
void runon() {
5c: 42 e0 ldi r20, 0x02 ; 2
for(uint8_t j=0;j<2;j++) {
for(uint8_t i=0;i<6;i++) {
6a: 20 e0 ldi r18, 0x00 ; 0
PORTB |= led[i%3];
6c: 33 e0 ldi r19, 0x03 ; 3
6e: 45 b1 in r20, 0x05 ; 5
70: 82 2f mov r24, r18
72: 63 2f mov r22, r19
74: 20 d0 rcall .+64 ; 0xb6 <__udivmodqi4>
76: e9 2f mov r30, r25
78: f0 e0 ldi r31, 0x00 ; 0
7a: e0 50 subi r30, 0x00 ; 0
7c: ff 4f sbci r31, 0xFF ; 255
7e: 80 81 ld r24, Z
80: 84 2b or r24, r20
82: 85 b9 out 0x05, r24 ; 5
PORTD |= motor[i];
84: 9b b1 in r25, 0x0b ; 11
86: a2 2f mov r26, r18
88: b0 e0 ldi r27, 0x00 ; 0
8a: ad 5f subi r26, 0xFD ; 253
8c: be 4f sbci r27, 0xFE ; 254
8e: 8c 91 ld r24, X
90: 89 2b or r24, r25
92: 8b b9 out 0x0b, r24 ; 11
PORTB = led[i%3];
5e: 53 e0 ldi r21, 0x03 ; 3
60: 1e c0 rjmp .+60 ; 0x9e <runon+0x42>
62: 82 2f mov r24, r18
64: 65 2f mov r22, r21
66: fe d0 rcall .+508 ; 0x264 <__udivmodqi4>
68: e9 2f mov r30, r25
6a: f0 e0 ldi r31, 0x00 ; 0
6c: e0 50 subi r30, 0x00 ; 0
6e: ff 4f sbci r31, 0xFF ; 255
70: 80 81 ld r24, Z
72: 85 b9 out 0x05, r24 ; 5
PORTD = motor[i];
74: f9 01 movw r30, r18
76: ed 5f subi r30, 0xFD ; 253
78: fe 4f sbci r31, 0xFE ; 254
7a: 80 81 ld r24, Z
7c: 8b b9 out 0x0b, r24 ; 11
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
94: 87 ea ldi r24, 0xA7 ; 167
96: 91 e6 ldi r25, 0x61 ; 97
98: 01 97 sbiw r24, 0x01 ; 1
9a: f1 f7 brne .-4 ; 0x98 <main+0x3c>
9c: 00 c0 rjmp .+0 ; 0x9e <main+0x42>
9e: 00 00 nop
7e: 8f e7 ldi r24, 0x7F ; 127
80: 9a e1 ldi r25, 0x1A ; 26
82: a6 e0 ldi r26, 0x06 ; 6
84: 81 50 subi r24, 0x01 ; 1
86: 90 40 sbci r25, 0x00 ; 0
88: a0 40 sbci r26, 0x00 ; 0
8a: e1 f7 brne .-8 ; 0x84 <runon+0x28>
8c: 00 c0 rjmp .+0 ; 0x8e <runon+0x32>
8e: 00 00 nop
90: 2f 5f subi r18, 0xFF ; 255
92: 3f 4f sbci r19, 0xFF ; 255
};
void runon() {
for(uint8_t j=0;j<2;j++) {
for(uint8_t i=0;i<6;i++) {
94: 26 30 cpi r18, 0x06 ; 6
96: 31 05 cpc r19, r1
98: 21 f7 brne .-56 ; 0x62 <runon+0x6>
9a: 41 50 subi r20, 0x01 ; 1
(1<<PD0)|(1<<PD3),(1<<PD4)|(1<<PD3)
};
void runon() {
for(uint8_t j=0;j<2;j++) {
9c: 21 f1 breq .+72 ; 0xe6 <runon+0x8a>
(1<<PD2)|(1<<PD5),(1<<PD0)|(1<<PD5),
(1<<PD0)|(1<<PD3),(1<<PD4)|(1<<PD3)
};
void runon() {
9e: 20 e0 ldi r18, 0x00 ; 0
a0: 30 e0 ldi r19, 0x00 ; 0
a2: df cf rjmp .-66 ; 0x62 <runon+0x6>
_delay_ms(100);
}
}
for(uint8_t j=0;j<4;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
a4: 82 2f mov r24, r18
a6: 65 2f mov r22, r21
a8: dd d0 rcall .+442 ; 0x264 <__udivmodqi4>
aa: e9 2f mov r30, r25
ac: f0 e0 ldi r31, 0x00 ; 0
ae: e0 50 subi r30, 0x00 ; 0
b0: ff 4f sbci r31, 0xFF ; 255
b2: 80 81 ld r24, Z
b4: 85 b9 out 0x05, r24 ; 5
PORTD = motor[i];
b6: f9 01 movw r30, r18
b8: ed 5f subi r30, 0xFD ; 253
ba: fe 4f sbci r31, 0xFE ; 254
bc: 80 81 ld r24, Z
be: 8b b9 out 0x0b, r24 ; 11
c0: 8f e3 ldi r24, 0x3F ; 63
c2: 9d e0 ldi r25, 0x0D ; 13
c4: a3 e0 ldi r26, 0x03 ; 3
c6: 81 50 subi r24, 0x01 ; 1
c8: 90 40 sbci r25, 0x00 ; 0
ca: a0 40 sbci r26, 0x00 ; 0
cc: e1 f7 brne .-8 ; 0xc6 <runon+0x6a>
ce: 00 c0 rjmp .+0 ; 0xd0 <runon+0x74>
d0: 00 00 nop
d2: 2f 5f subi r18, 0xFF ; 255
d4: 3f 4f sbci r19, 0xFF ; 255
PORTD = motor[i];
_delay_ms(100);
}
}
for(uint8_t j=0;j<4;j++) {
for(uint8_t i=0;i<6;i++) {
d6: 26 30 cpi r18, 0x06 ; 6
d8: 31 05 cpc r19, r1
da: 21 f7 brne .-56 ; 0xa4 <runon+0x48>
dc: 41 50 subi r20, 0x01 ; 1
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(100);
}
}
for(uint8_t j=0;j<4;j++) {
de: 29 f4 brne .+10 ; 0xea <runon+0x8e>
e0: 48 e0 ldi r20, 0x08 ; 8
_delay_ms(50);
}
}
for(uint8_t j=0;j<8;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
e2: 53 e0 ldi r21, 0x03 ; 3
e4: 26 c0 rjmp .+76 ; 0x132 <runon+0xd6>
(1<<PD0)|(1<<PD3),(1<<PD4)|(1<<PD3)
};
void runon() {
for(uint8_t j=0;j<2;j++) {
e6: 44 e0 ldi r20, 0x04 ; 4
_delay_ms(100);
}
}
for(uint8_t j=0;j<4;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
e8: 53 e0 ldi r21, 0x03 ; 3
(1<<PD2)|(1<<PD5),(1<<PD0)|(1<<PD5),
(1<<PD0)|(1<<PD3),(1<<PD4)|(1<<PD3)
};
void runon() {
ea: 20 e0 ldi r18, 0x00 ; 0
ec: 30 e0 ldi r19, 0x00 ; 0
ee: da cf rjmp .-76 ; 0xa4 <runon+0x48>
_delay_ms(50);
}
}
for(uint8_t j=0;j<8;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
f0: 82 2f mov r24, r18
f2: 65 2f mov r22, r21
f4: b7 d0 rcall .+366 ; 0x264 <__udivmodqi4>
f6: e9 2f mov r30, r25
f8: f0 e0 ldi r31, 0x00 ; 0
fa: e0 50 subi r30, 0x00 ; 0
fc: ff 4f sbci r31, 0xFF ; 255
fe: 80 81 ld r24, Z
100: 85 b9 out 0x05, r24 ; 5
PORTD = motor[i];
102: f9 01 movw r30, r18
104: ed 5f subi r30, 0xFD ; 253
106: fe 4f sbci r31, 0xFE ; 254
108: 80 81 ld r24, Z
10a: 8b b9 out 0x0b, r24 ; 11
10c: 8f e7 ldi r24, 0x7F ; 127
10e: 98 e3 ldi r25, 0x38 ; 56
110: a1 e0 ldi r26, 0x01 ; 1
112: 81 50 subi r24, 0x01 ; 1
114: 90 40 sbci r25, 0x00 ; 0
116: a0 40 sbci r26, 0x00 ; 0
118: e1 f7 brne .-8 ; 0x112 <runon+0xb6>
11a: 00 c0 rjmp .+0 ; 0x11c <runon+0xc0>
11c: 00 00 nop
11e: 2f 5f subi r18, 0xFF ; 255
120: 3f 4f sbci r19, 0xFF ; 255
PORTD = motor[i];
_delay_ms(50);
}
}
for(uint8_t j=0;j<8;j++) {
for(uint8_t i=0;i<6;i++) {
122: 26 30 cpi r18, 0x06 ; 6
124: 31 05 cpc r19, r1
126: 21 f7 brne .-56 ; 0xf0 <runon+0x94>
128: 41 50 subi r20, 0x01 ; 1
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(50);
}
}
for(uint8_t j=0;j<8;j++) {
12a: 19 f4 brne .+6 ; 0x132 <runon+0xd6>
12c: 40 e1 ldi r20, 0x10 ; 16
_delay_ms(20);
}
}
for(uint8_t j=0;j<16;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
12e: 53 e0 ldi r21, 0x03 ; 3
130: 21 c0 rjmp .+66 ; 0x174 <runon+0x118>
(1<<PD0)|(1<<PD3),(1<<PD4)|(1<<PD3)
};
void runon() {
for(uint8_t j=0;j<2;j++) {
132: 20 e0 ldi r18, 0x00 ; 0
134: 30 e0 ldi r19, 0x00 ; 0
136: dc cf rjmp .-72 ; 0xf0 <runon+0x94>
_delay_ms(20);
}
}
for(uint8_t j=0;j<16;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
138: 82 2f mov r24, r18
13a: 65 2f mov r22, r21
13c: 93 d0 rcall .+294 ; 0x264 <__udivmodqi4>
13e: e9 2f mov r30, r25
140: f0 e0 ldi r31, 0x00 ; 0
142: e0 50 subi r30, 0x00 ; 0
144: ff 4f sbci r31, 0xFF ; 255
146: 80 81 ld r24, Z
148: 85 b9 out 0x05, r24 ; 5
PORTD = motor[i];
14a: f9 01 movw r30, r18
14c: ed 5f subi r30, 0xFD ; 253
14e: fe 4f sbci r31, 0xFE ; 254
150: 80 81 ld r24, Z
152: 8b b9 out 0x0b, r24 ; 11
154: af e4 ldi r26, 0x4F ; 79
156: b3 ec ldi r27, 0xC3 ; 195
158: 11 97 sbiw r26, 0x01 ; 1
15a: f1 f7 brne .-4 ; 0x158 <runon+0xfc>
15c: 00 c0 rjmp .+0 ; 0x15e <runon+0x102>
15e: 00 00 nop
160: 2f 5f subi r18, 0xFF ; 255
162: 3f 4f sbci r19, 0xFF ; 255
PORTD = motor[i];
_delay_ms(20);
}
}
for(uint8_t j=0;j<16;j++) {
for(uint8_t i=0;i<6;i++) {
164: 26 30 cpi r18, 0x06 ; 6
166: 31 05 cpc r19, r1
168: 39 f7 brne .-50 ; 0x138 <runon+0xdc>
16a: 41 50 subi r20, 0x01 ; 1
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(20);
}
}
for(uint8_t j=0;j<16;j++) {
16c: 19 f4 brne .+6 ; 0x174 <runon+0x118>
16e: 40 e2 ldi r20, 0x20 ; 32
_delay_ms(10);
}
}
for(uint8_t j=0;j<32;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
170: 53 e0 ldi r21, 0x03 ; 3
172: 21 c0 rjmp .+66 ; 0x1b6 <runon+0x15a>
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(100);
}
}
for(uint8_t j=0;j<4;j++) {
174: 20 e0 ldi r18, 0x00 ; 0
176: 30 e0 ldi r19, 0x00 ; 0
178: df cf rjmp .-66 ; 0x138 <runon+0xdc>
_delay_ms(10);
}
}
for(uint8_t j=0;j<32;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
17a: 82 2f mov r24, r18
17c: 65 2f mov r22, r21
17e: 72 d0 rcall .+228 ; 0x264 <__udivmodqi4>
180: e9 2f mov r30, r25
182: f0 e0 ldi r31, 0x00 ; 0
184: e0 50 subi r30, 0x00 ; 0
186: ff 4f sbci r31, 0xFF ; 255
188: 80 81 ld r24, Z
18a: 85 b9 out 0x05, r24 ; 5
PORTD = motor[i];
18c: f9 01 movw r30, r18
18e: ed 5f subi r30, 0xFD ; 253
190: fe 4f sbci r31, 0xFE ; 254
192: 80 81 ld r24, Z
194: 8b b9 out 0x0b, r24 ; 11
196: 87 ea ldi r24, 0xA7 ; 167
198: 91 e6 ldi r25, 0x61 ; 97
19a: 01 97 sbiw r24, 0x01 ; 1
19c: f1 f7 brne .-4 ; 0x19a <runon+0x13e>
19e: 00 c0 rjmp .+0 ; 0x1a0 <runon+0x144>
1a0: 00 00 nop
1a2: 2f 5f subi r18, 0xFF ; 255
1a4: 3f 4f sbci r19, 0xFF ; 255
PORTD = motor[i];
_delay_ms(10);
}
}
for(uint8_t j=0;j<32;j++) {
for(uint8_t i=0;i<6;i++) {
1a6: 26 30 cpi r18, 0x06 ; 6
1a8: 31 05 cpc r19, r1
1aa: 39 f7 brne .-50 ; 0x17a <runon+0x11e>
1ac: 41 50 subi r20, 0x01 ; 1
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(10);
}
}
for(uint8_t j=0;j<32;j++) {
1ae: 19 f4 brne .+6 ; 0x1b6 <runon+0x15a>
1b0: 40 e4 ldi r20, 0x40 ; 64
_delay_ms(5);
PORTB &= ~(led[i%3]);
a0: 95 b1 in r25, 0x05 ; 5
a2: 80 81 ld r24, Z
a4: 80 95 com r24
a6: 89 23 and r24, r25
a8: 85 b9 out 0x05, r24 ; 5
PORTD = 0;
aa: 1b b8 out 0x0b, r1 ; 11
}
}
for(uint8_t j=0;j<64;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
1b2: 53 e0 ldi r21, 0x03 ; 3
1b4: 1e c0 rjmp .+60 ; 0x1f2 <runon+0x196>
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(50);
}
}
for(uint8_t j=0;j<8;j++) {
1b6: 20 e0 ldi r18, 0x00 ; 0
1b8: 30 e0 ldi r19, 0x00 ; 0
1ba: df cf rjmp .-66 ; 0x17a <runon+0x11e>
_delay_ms(5);
}
}
for(uint8_t j=0;j<64;j++) {
for(uint8_t i=0;i<6;i++) {
PORTB = led[i%3];
1bc: 82 2f mov r24, r18
1be: 65 2f mov r22, r21
1c0: 51 d0 rcall .+162 ; 0x264 <__udivmodqi4>
1c2: e9 2f mov r30, r25
1c4: f0 e0 ldi r31, 0x00 ; 0
1c6: e0 50 subi r30, 0x00 ; 0
1c8: ff 4f sbci r31, 0xFF ; 255
1ca: 80 81 ld r24, Z
1cc: 85 b9 out 0x05, r24 ; 5
PORTD = motor[i];
1ce: f9 01 movw r30, r18
1d0: ed 5f subi r30, 0xFD ; 253
1d2: fe 4f sbci r31, 0xFE ; 254
1d4: 80 81 ld r24, Z
1d6: 8b b9 out 0x0b, r24 ; 11
1d8: a7 e9 ldi r26, 0x97 ; 151
1da: ba e3 ldi r27, 0x3A ; 58
1dc: 11 97 sbiw r26, 0x01 ; 1
1de: f1 f7 brne .-4 ; 0x1dc <runon+0x180>
1e0: 00 c0 rjmp .+0 ; 0x1e2 <runon+0x186>
1e2: 00 00 nop
1e4: 2f 5f subi r18, 0xFF ; 255
1e6: 3f 4f sbci r19, 0xFF ; 255
PORTD = motor[i];
_delay_ms(5);
}
}
for(uint8_t j=0;j<64;j++) {
for(uint8_t i=0;i<6;i++) {
1e8: 26 30 cpi r18, 0x06 ; 6
1ea: 31 05 cpc r19, r1
1ec: 39 f7 brne .-50 ; 0x1bc <runon+0x160>
1ee: 41 50 subi r20, 0x01 ; 1
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(5);
}
}
for(uint8_t j=0;j<64;j++) {
1f0: 19 f0 breq .+6 ; 0x1f8 <runon+0x19c>
PORTB = led[i%3];
PORTD = motor[i];
_delay_ms(20);
}
}
for(uint8_t j=0;j<16;j++) {
1f2: 20 e0 ldi r18, 0x00 ; 0
1f4: 30 e0 ldi r19, 0x00 ; 0
1f6: e2 cf rjmp .-60 ; 0x1bc <runon+0x160>
1f8: 08 95 ret
000001fa <__vector_4>:
_delay_ms(3);
}
}
}
ISR(PCINT1_vect) {
1fa: 1f 92 push r1
1fc: 0f 92 push r0
1fe: 0f b6 in r0, 0x3f ; 63
200: 0f 92 push r0
202: 11 24 eor r1, r1
204: 8f 93 push r24
206: 9f 93 push r25
PORTD = 0;
208: 1b b8 out 0x0b, r1 ; 11
20a: 87 e8 ldi r24, 0x87 ; 135
20c: 93 e1 ldi r25, 0x13 ; 19
20e: 01 97 sbiw r24, 0x01 ; 1
210: f1 f7 brne .-4 ; 0x20e <__vector_4+0x14>
212: 00 c0 rjmp .+0 ; 0x214 <__vector_4+0x1a>
214: 00 00 nop
216: f9 cf rjmp .-14 ; 0x20a <__vector_4+0x10>
00000218 <main>:
}
}
int main(void) {
cli();
218: f8 94 cli
DDRB |= (1<<PB3) | (1<<PB4) | (1<<PB5) | (1<<PB0);
21a: 84 b1 in r24, 0x04 ; 4
21c: 89 63 ori r24, 0x39 ; 57
21e: 84 b9 out 0x04, r24 ; 4
DDRD |= 0b11111111;
220: 8a b1 in r24, 0x0a ; 10
222: 8f ef ldi r24, 0xFF ; 255
224: 8a b9 out 0x0a, r24 ; 10
PORTB |= (1<<PB0);
226: 28 9a sbi 0x05, 0 ; 5
sei();
228: 78 94 sei
runon();
22a: 18 df rcall .-464 ; 0x5c <runon>
while(1) {
for(uint8_t i=0;i<6;i++) {
ac: 2f 5f subi r18, 0xFF ; 255
ae: 26 30 cpi r18, 0x06 ; 6
b0: f0 f2 brcs .-68 ; 0x6e <main+0x12>
b2: 20 e0 ldi r18, 0x00 ; 0
b4: dc cf rjmp .-72 ; 0x6e <main+0x12>
22c: 20 e0 ldi r18, 0x00 ; 0
PORTB = led[i%3];
22e: 33 e0 ldi r19, 0x03 ; 3
230: 82 2f mov r24, r18
232: 63 2f mov r22, r19
234: 17 d0 rcall .+46 ; 0x264 <__udivmodqi4>
236: e9 2f mov r30, r25
238: f0 e0 ldi r31, 0x00 ; 0
23a: e0 50 subi r30, 0x00 ; 0
23c: ff 4f sbci r31, 0xFF ; 255
23e: 80 81 ld r24, Z
240: 85 b9 out 0x05, r24 ; 5
PORTD = motor[i];
242: e2 2f mov r30, r18
244: f0 e0 ldi r31, 0x00 ; 0
246: ed 5f subi r30, 0xFD ; 253
248: fe 4f sbci r31, 0xFE ; 254
24a: 80 81 ld r24, Z
24c: 8b b9 out 0x0b, r24 ; 11
24e: 8f e0 ldi r24, 0x0F ; 15
250: 97 e2 ldi r25, 0x27 ; 39
252: 01 97 sbiw r24, 0x01 ; 1
254: f1 f7 brne .-4 ; 0x252 <main+0x3a>
256: 00 c0 rjmp .+0 ; 0x258 <main+0x40>
258: 00 00 nop
000000b6 <__udivmodqi4>:
b6: 99 1b sub r25, r25
b8: 79 e0 ldi r23, 0x09 ; 9
ba: 04 c0 rjmp .+8 ; 0xc4 <__udivmodqi4_ep>
sei();
runon();
000000bc <__udivmodqi4_loop>:
bc: 99 1f adc r25, r25
be: 96 17 cp r25, r22
c0: 08 f0 brcs .+2 ; 0xc4 <__udivmodqi4_ep>
c2: 96 1b sub r25, r22
while(1) {
for(uint8_t i=0;i<6;i++) {
25a: 2f 5f subi r18, 0xFF ; 255
25c: 26 30 cpi r18, 0x06 ; 6
25e: 40 f3 brcs .-48 ; 0x230 <main+0x18>
260: 20 e0 ldi r18, 0x00 ; 0
262: e6 cf rjmp .-52 ; 0x230 <main+0x18>
000000c4 <__udivmodqi4_ep>:
c4: 88 1f adc r24, r24
c6: 7a 95 dec r23
c8: c9 f7 brne .-14 ; 0xbc <__udivmodqi4_loop>
ca: 80 95 com r24
cc: 08 95 ret
00000264 <__udivmodqi4>:
264: 99 1b sub r25, r25
266: 79 e0 ldi r23, 0x09 ; 9
268: 04 c0 rjmp .+8 ; 0x272 <__udivmodqi4_ep>
000000ce <_exit>:
ce: f8 94 cli
0000026a <__udivmodqi4_loop>:
26a: 99 1f adc r25, r25
26c: 96 17 cp r25, r22
26e: 08 f0 brcs .+2 ; 0x272 <__udivmodqi4_ep>
270: 96 1b sub r25, r22
000000d0 <__stop_program>:
d0: ff cf rjmp .-2 ; 0xd0 <__stop_program>
00000272 <__udivmodqi4_ep>:
272: 88 1f adc r24, r24
274: 7a 95 dec r23
276: c9 f7 brne .-14 ; 0x26a <__udivmodqi4_loop>
278: 80 95 com r24
27a: 08 95 ret
0000027c <_exit>:
27c: f8 94 cli
0000027e <__stop_program>:
27e: ff cf rjmp .-2 ; 0x27e <__stop_program>

View File

@ -117,7 +117,7 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a
.rela.plt
*(.rela.plt)
.text 0x00000000 0xd2
.text 0x00000000 0x280
*(.vectors)
.vectors 0x00000000 0x34 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr4/crtm48a.o
0x00000000 __vector_default
@ -186,7 +186,6 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a
0x0000005a __vector_19
0x0000005a __vector_7
0x0000005a __vector_5
0x0000005a __vector_4
0x0000005a __vector_9
0x0000005a __vector_2
0x0000005a __vector_21
@ -197,22 +196,24 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a
0x0000005a __vector_16
0x0000005a __vector_18
0x0000005a __vector_20
.text 0x0000005c 0x5a Motor.o
0x0000005c main
.text 0x000000b6 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_udivmodqi4.o)
.text 0x000000b6 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_exit.o)
.text 0x000000b6 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_copy_data.o)
0x000000b6 . = ALIGN (0x2)
.text 0x0000005c 0x208 Motor.o
0x0000005c runon
0x000001fa __vector_4
0x00000218 main
.text 0x00000264 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_udivmodqi4.o)
.text 0x00000264 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_exit.o)
.text 0x00000264 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_copy_data.o)
0x00000264 . = ALIGN (0x2)
*(.text.*)
.text.libgcc 0x000000b6 0x18 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_udivmodqi4.o)
0x000000b6 __udivmodqi4
.text.libgcc 0x000000ce 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_exit.o)
.text.libgcc 0x000000ce 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_copy_data.o)
0x000000ce . = ALIGN (0x2)
.text.libgcc 0x00000264 0x18 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_udivmodqi4.o)
0x00000264 __udivmodqi4
.text.libgcc 0x0000027c 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_exit.o)
.text.libgcc 0x0000027c 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_copy_data.o)
0x0000027c . = ALIGN (0x2)
*(.fini9)
.fini9 0x000000ce 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_exit.o)
0x000000ce _exit
0x000000ce exit
.fini9 0x0000027c 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_exit.o)
0x0000027c _exit
0x0000027c exit
*(.fini9)
*(.fini8)
*(.fini8)
@ -231,11 +232,11 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x000000ce 0x4 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_exit.o)
.fini0 0x0000027c 0x4 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a(_exit.o)
*(.fini0)
0x000000d2 _etext = .
0x00000280 _etext = .
.data 0x00800100 0xa load address 0x000000d2
.data 0x00800100 0xa load address 0x00000280
0x00800100 PROVIDE (__data_start, .)
*(.data)
.data 0x00800100 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr4/crtm48a.o
@ -265,8 +266,8 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a
*(.bss*)
*(COMMON)
0x0080010a PROVIDE (__bss_end, .)
0x000000d2 __data_load_start = LOADADDR (.data)
0x000000dc __data_load_end = (__data_load_start + SIZEOF (.data))
0x00000280 __data_load_start = LOADADDR (.data)
0x0000028a __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x0080010a 0x0
0x0080010a PROVIDE (__noinit_start, .)
@ -332,36 +333,36 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr4\libgcc.a
0x00000000 0x20 Motor.o
.debug_pubnames
0x00000000 0x2d
0x00000000 0x46
*(.debug_pubnames)
.debug_pubnames
0x00000000 0x2d Motor.o
0x00000000 0x46 Motor.o
.debug_info 0x00000000 0x1e3
.debug_info 0x00000000 0x492
*(.debug_info)
.debug_info 0x00000000 0x1e3 Motor.o
.debug_info 0x00000000 0x492 Motor.o
*(.gnu.linkonce.wi.*)
.debug_abbrev 0x00000000 0x163
.debug_abbrev 0x00000000 0x1be
*(.debug_abbrev)
.debug_abbrev 0x00000000 0x163 Motor.o
.debug_abbrev 0x00000000 0x1be Motor.o
.debug_line 0x00000000 0x182
.debug_line 0x00000000 0x375
*(.debug_line)
.debug_line 0x00000000 0x182 Motor.o
.debug_line 0x00000000 0x375 Motor.o
.debug_frame 0x00000000 0x20
.debug_frame 0x00000000 0x40
*(.debug_frame)
.debug_frame 0x00000000 0x20 Motor.o
.debug_frame 0x00000000 0x40 Motor.o
.debug_str 0x00000000 0xee
.debug_str 0x00000000 0xff
*(.debug_str)
.debug_str 0x00000000 0xee Motor.o
0x122 (size before relaxing)
.debug_str 0x00000000 0xff Motor.o
0x133 (size before relaxing)
.debug_loc 0x00000000 0x1f
.debug_loc 0x00000000 0x42d
*(.debug_loc)
.debug_loc 0x00000000 0x1f Motor.o
.debug_loc 0x00000000 0x42d Motor.o
.debug_macinfo
*(.debug_macinfo)
@ -372,3 +373,6 @@ LOAD linker stubs
0x00000000 0x38
.debug_pubtypes
0x00000000 0x38 Motor.o
.debug_ranges 0x00000000 0x128
.debug_ranges 0x00000000 0x128 Motor.o

View File

@ -12,7 +12,8 @@ Motor.o: ../Motor.c \
e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr/fuse.h \
e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr/lock.h \
e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h \
e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay_basic.h
e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay_basic.h \
e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr/interrupt.h
e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/include/stdint.h:
@ -41,3 +42,5 @@ e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr
e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h:
e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay_basic.h:
e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr/interrupt.h: