roboforum.ru

Технический форум по робототехнике.

Проблема

Проблема

xapc » 29 май 2006, 18:20

Нужно было написать прошивку что бы контроллер раз в секунду инвертировал значения на всех выходах
Воспользовался мастером в CVAVR, после чего добавил свой код, после прошивки светодиоды горят постоянно в чем ошибка?



#include <mega16.h>  
#include <delay.h>  
void main(void)
{
Func1=Out Func0=Out
State0=0
PORTA=0x00;
DDRA=0xFF;

Func1=Out Func0=Out
State0=1
PORTB=0xFF;
DDRB=0xFF;

Func1=Out Func0=Out
State0=0
PORTC=0x00;
DDRC=0xFF;

Func1=Out Func0=Out
State0=0
PORTD=0x00;
DDRD=0xFF;

TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;


ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

MCUCR=0x00;
MCUCSR=0x00;

TIMSK=0x00;

ACSR=0x80;
SFIOR=0x00;

while(1)
repeat:

PORTA=0xFF;
PORTB=0xFF;
PORTC=0xFF;
PORTD=0xFF;
delay_ms(1000);

PORTA=0x00;
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
delay_ms(1000);

goto repeat;
}

Карлсон » 29 май 2006, 18:36

а с какого боку тут goto?
не используйте этот оператор.
во всех нормальных книгах по сям и по прогированию черным по белому написано, что любой алгоритм можно реализовать без goto.

попробуйте стандартное while(1){};

xapc » 29 май 2006, 18:58

Переделал, все работает Карлсон спасибо

avr123.nm.ru » 29 май 2006, 19:25

xapc писал(а):Переделал, все работает Карлсон спасибо


если найдешь время - почитай пожалуйста

Си для МК

xapc » 29 май 2006, 20:02

читал спасибо ошибка в пропущенной скобке была :)

avr123.nm.ru » 30 май 2006, 10:34

в приведенном вами коде двух скобок {   } для while не хватает.

так как нижняя - это для main.


Rambler\'s Top100 Mail.ru counter