Цитата(Flasher @ Jul 25 2008, 23:33)

посмотри в ассемблерный листинг, каких комманд он там насовал.
Если бы я только что то понимал...
CODE
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000007c 00000000 00000000 00000054 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .stab 0000036c 00000000 00000000 000000d0 2**2
CONTENTS, READONLY, DEBUGGING
2 .stabstr 00000054 00000000 00000000 0000043c 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_aranges 00000020 00000000 00000000 00000490 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_pubnames 0000001b 00000000 00000000 000004b0 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_info 0000015d 00000000 00000000 000004cb 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_abbrev 000000c7 00000000 00000000 00000628 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_line 000000e5 00000000 00000000 000006ef 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_frame 00000020 00000000 00000000 000007d4 2**2
CONTENTS, READONLY, DEBUGGING
9 .debug_str 000000ca 00000000 00000000 000007f4 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_loc 00000018 00000000 00000000 000008be 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 14 c0 rjmp .+40 ; 0x2a <__ctors_end>
2: 2d c0 rjmp .+90 ; 0x5e <__bad_interrupt>
4: 2c c0 rjmp .+88 ; 0x5e <__bad_interrupt>
6: 2b c0 rjmp .+86 ; 0x5e <__bad_interrupt>
8: 2a c0 rjmp .+84 ; 0x5e <__bad_interrupt>
a: 29 c0 rjmp .+82 ; 0x5e <__bad_interrupt>
c: 28 c0 rjmp .+80 ; 0x5e <__bad_interrupt>
e: 27 c0 rjmp .+78 ; 0x5e <__bad_interrupt>
10: 26 c0 rjmp .+76 ; 0x5e <__bad_interrupt>
12: 25 c0 rjmp .+74 ; 0x5e <__bad_interrupt>
14: 24 c0 rjmp .+72 ; 0x5e <__bad_interrupt>
16: 23 c0 rjmp .+70 ; 0x5e <__bad_interrupt>
18: 22 c0 rjmp .+68 ; 0x5e <__bad_interrupt>
1a: 21 c0 rjmp .+66 ; 0x5e <__bad_interrupt>
1c: 20 c0 rjmp .+64 ; 0x5e <__bad_interrupt>
1e: 1f c0 rjmp .+62 ; 0x5e <__bad_interrupt>
20: 1e c0 rjmp .+60 ; 0x5e <__bad_interrupt>
22: 1d c0 rjmp .+58 ; 0x5e <__bad_interrupt>
24: 1c c0 rjmp .+56 ; 0x5e <__bad_interrupt>
26: 1b c0 rjmp .+54 ; 0x5e <__bad_interrupt>
28: 1a c0 rjmp .+52 ; 0x5e <__bad_interrupt>
0000002a <__ctors_end>:
2a: 11 24 eor r1, r1
2c: 1f be out 0x3f, r1 ; 63
2e: cf e5 ldi r28, 0x5F ; 95
30: d2 e0 ldi r29, 0x02 ; 2
32: de bf out 0x3e, r29 ; 62
34: cd bf out 0x3d, r28 ; 61
00000036 <__do_copy_data>:
36: 10 e0 ldi r17, 0x00 ; 0
38: a0 e6 ldi r26, 0x60 ; 96
3a: b0 e0 ldi r27, 0x00 ; 0
3c: ec e7 ldi r30, 0x7C ; 124
3e: f0 e0 ldi r31, 0x00 ; 0
40: 02 c0 rjmp .+4 ; 0x46 <.do_copy_data_start>
00000042 <.do_copy_data_loop>:
42: 05 90 lpm r0, Z+
44: 0d 92 st X+, r0
00000046 <.do_copy_data_start>:
46: a0 36 cpi r26, 0x60 ; 96
48: b1 07 cpc r27, r17
4a: d9 f7 brne .-10 ; 0x42 <.do_copy_data_loop>
0000004c <__do_clear_bss>:
4c: 10 e0 ldi r17, 0x00 ; 0
4e: a0 e6 ldi r26, 0x60 ; 96
50: b0 e0 ldi r27, 0x00 ; 0
52: 01 c0 rjmp .+2 ; 0x56 <.do_clear_bss_start>
00000054 <.do_clear_bss_loop>:
54: 1d 92 st X+, r1
00000056 <.do_clear_bss_start>:
56: a0 36 cpi r26, 0x60 ; 96
58: b1 07 cpc r27, r17
5a: e1 f7 brne .-8 ; 0x54 <.do_clear_bss_loop>
5c: 01 c0 rjmp .+2 ; 0x60 <main>
0000005e <__bad_interrupt>:
5e: d0 cf rjmp .-96 ; 0x0 <__heap_end>
00000060 <main>:
#include <util/delay.h>
#define F_CPU 8000000UL // 8 MHz
int main(void) // начало основой программы
{
60: 8f ef ldi r24, 0xFF ; 255
62: 81 bb out 0x11, r24 ; 17
64: 2f ef ldi r18, 0xFF ; 255
66: e0 e0 ldi r30, 0x00 ; 0
68: f0 e0 ldi r31, 0x00 ; 0
DDRD = 0xff; /* все выводы порта D сконфигурировать как выходы */
while (1) { // Бесконечный цикл
PORTD = 0xff; /* установить "1" на всех линиях порта D */
6a: 22 bb out 0x12, r18 ; 18
milliseconds can be achieved.
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
6c: cf 01 movw r24, r30
6e: 01 97 sbiw r24, 0x01 ; 1
70: f1 f7 brne .-4 ; 0x6e <main+0xe>
_delay_ms(1000); // Ждем 1 сек.
PORTD = 0x00; /* установить "0" на всех линиях порта D */
72: 12 ba out 0x12, r1 ; 18
74: cf 01 movw r24, r30
76: 01 97 sbiw r24, 0x01 ; 1
78: f1 f7 brne .-4 ; 0x76 <main+0x16>
7a: f7 cf rjmp .-18 ; 0x6a <main+0xa>
Пробовал так же этот код:
CODE
.include "m8535def.inc"
.def TMP = R16
.def VERT = R17
.def COUNT1 = R18
.def COUNT2 = R19
.def COUNT3 = R20
.org 0
reset:
ldi TMP, 0xFF
out DDRD, TMP
enable:
ldi TMP, 0xFF
out PORTD, TMP
ldi COUNT3, 16
wait1:
dec COUNT1
brne wait1
dec COUNT2
brne wait1
dec COUNT3
brne wait1
disable:
ldi TMP, 0x00
out PORTD, TMP
ldi COUNT3, 16
wait2:
dec COUNT1
brne wait2
dec COUNT2
brne wait2
dec COUNT3
brne wait2
rjmp enable
Результат - светодиод горит постоянно, осциллограмма не изменилась.
Сообщение отредактировал TwisteR - Jul 25 2008, 22:06