Цитата(Павлик @ Dec 28 2007, 22:30)

ldi temp,LOW(RAMEND) ; Init Stack Pointer
out spl,temp
Если я не ошибаюсь, то в меге 8 1К озу, значит стек 16-ти битный. следовательно:
Код
ldi temp,LOW(RAMEND); Init Stack Pointer
out spl,temp
ldi temp,high(RAMEND); Init Stack Pointer
out sph,temp
Можно вот так:
Код
.nolist
.include c:\avr "m8def.inc"
.list
.def temp = r16;
.def temp2 = r17;
.equ LED_1 = 1;
.equ LED_2 = 2;
.cseg
.org 0
rjmp reset; Reset Vector
reset:
ldi temp,LOW(RAMEND); Init Stack Pointer
out spl,temp
ldi temp,high(RAMEND); Init Stack Pointer
out sph,temp
ldi temp,(1<<LED_1|1<<LED_2|)
out DDRB,temp
out PortB,temp//на выходе единица (высок.уров)
main: clr temp
cbi PortB,1;
rcall wait
sbi PortB,1
rcall wait
rjmp main
wait: ldi temp2,255;
wait1: dec temp2
brne wait1
ret
Мне почемуто кажется что у Вас не мега 8 (как написанно в .include c:\avr "m8def.inc") а тини2313. И еще.. слижком уж маленькая задержка для мигания.. Какая у вас тактовая частота? кварц? к примеру 8МГц следовательно 8000000 поделить на количество тактов, и посчитать длительность задержки..: 8000000/(255*4)=7.8КГц отсюда задержка 1/7.8КГц=128мкс! это мигание на глаз вы не увидите...
Сообщение отредактировал adc - Dec 29 2007, 07:29
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...