c-programa de compilação para o microcontrolador ... pls help ....

N

nirmal_rockin

Guest
Oi ...
Eu estou precisando urgente ..Eu tenho esse programa somewher da rede e eu editei para o meu seguidor de linha que eu estou construindo .... mas o programa mostra alguns erros (o microcontrolador utilizado é Atmega16) e eu estou totalmente confuso sobre os arquivos header 'delay.h' e 'mega16.h' Eu tentei usar os arquivos de cabeçalho fornecidos no avr_libc .. mas mostra diversos erros ....alguém pode me ajudar a resolver este problema ...
Como posso criar um programa sem erros ....
pls help me .....i dono muito sobre microcontroladores ....
obrigado ...Citação:/************************************************* ****

Projeto: Line Follower

Tipo de Chip: ATmega16

Tipo Programa: Aplicativo

Clock frequency: 7.372800 MHz

Modelo de memória: Small

Tamanho externo SRAM: 0

Dados o tamanho da pilha: 256

************************************************** *** /

/ / # define DEBUG 1

# include <mega16.h>

# include <delay.h>

# ifdef DEBUG

# include

# endif

# define FWD 0xAA

# define REV 0x55

# define R 0x22

# define L 0x88

# define CW 0x99

# define CCW 0x66

# define STOP 0x00

# define B 0xFF

# define renatacorrea OCR1AL

# define lspeed OCR1BL

# define speed0 255

0 # define Speed1

# define SPEED2 0

# define Speed3 0

# define MAX 3

# define HMAX 1

void move (dir unsigned char, unsigned char demora, o poder unsigned char);

unsigned char i, rdev, ldev, IP, atraso, dir, poder DIRL, história [MAX], hcount = 0, rotpow;

# ifdef DEBUG

rep unsigned char = 0, prev = 0;

# endif

void main (void)

(

/ / Input / Output Ports inicialização

/ / A Porta de inicialização

/ / Func7 Em Func6 = = = Em Func5 Em FUNC4 = In func3 Em Func2 = = = Em Func1 Em Func0 = In

/ / State7 State6 T = State5 T = State4 T = State3 T = State2 T = State1 T = state0 T = T

PORTA = 0x00;

DDRA = 0x00;

/ / Port inicialização B

/ / Func7 In = = Func6 Em Func5 In = = FUNC4 Em func3 In = = Func2 Em Func1 In = = Func0 In

/ / State7 State6 T = State5 T = State4 T = State3 T = State2 T = State1 T = state0 T = T

PORTB = 0x00;

DDRB = 0x00;

/ / Port inicialização C

/ / Func7 Em Func6 = = = Em Func5 Em FUNC4 = In func3 Em Func2 = = = Em Func1 Em Func0 = In

/ / State7 State6 T = State5 T = State4 T = State3 T = State2 T = State1 T = state0 T = T

PORTC = 0x00;

DDRC = 0xFF;

/ / Port inicialização D

/ / Func7 Em Func6 = = = Em Func5 Out FUNC4 Out func3 = = = Em Func2 Em Func1 = In Func0 = In

/ / State7 State6 T = State5 T = 0 State4 = 0 State3 State2 T = State1 T = state0 T = T

PORTD = 0x00;

DDRD = 0x30;

/ / Timer / Contador 0 inicialização

/ / Fonte Relógio: Relógio do sistema

/ / Valor do Relógio: Timer 0 Parado

/ / Mode: Normal top = FFh

/ / Output ôÇ0: Disconnected

TCCR0 = 0x00;

TCNT0 = 0x00;

OCR0 = 0x00;

/ / Timer / Contador 1 de inicialização

/ / Fonte Relógio: Relógio do sistema

/ / Valor Clock: 921,600 kHz

/ / Mode: Top PWM Fast = 00FFh

/ / Output OC1A: Non-Inv.

/ / Output OC1B: Non-Inv.

/ / Noise Canceller: Off

/ / Input Capture em Queda Edge

TCCR1A = 0xA1;

TCCR1B = 0x0A;

TCNT1H = 0x00;

TCNT1L = 0x00;

ICR1H = 0x00;

ICR1L = 0x00;

OCR1AH = 0x00;

OCR1AL = 0xFF;

OCR1BH = 0x00;

OCR1BL = 0xFF;

/ / Timer / Counter 2 de inicialização

/ / Fonte Relógio: Relógio do sistema

/ / Valor do Relógio: Timer 2 Parado

/ / Mode: Normal top = FFh

/ / Output OC2: Disconnected

ASSR = 0x00;

TCCR2 = 0x00;

TCNT2 = 0x00;

OCR2 = 0x00;

/ / Interrupção Externa (s inicialização)

/ / INT0: Off

/ / INT1: Off

/ / INT2: Off

MCUCR = 0x00;

MCUCSR = 0x00;

# ifdef DEBUG

/ / Inicialização USART

/ / Parâmetros de comunicação: 8 Data, 1 parada, sem paridade

/ / USART Receptor: On

/ / USART Transmissor: On

/ / USART Modo: Asynchronous

/ / USART Baud rate: 57600

UCSRA = 0x00;

UCSRB = 0x18;

UCSRC = 0x86;

UBRRH = 0x00;

UBRRL = 0x07;

# endif

/ / Timer (s) / Balcão (s) de interrupção (s) de inicialização

TIMSK = 0x00;

/ / Inicialização Analog Comparator

/ / Comparador Analógico: Off

/ / Analog Comparator Input Capture pelo Timer / Counter 1: Off

ACSR = 0x80;

SFIOR = 0x00;

while (1) (

# ifdef DEBUG

if (rep <255)

rep ;

if (prev! = PINA) (

prev = Pina;

printf ( "% u \ r" rep);

for (i = 0; i <8; i )

printf ( "% u \ t", (ant>> i) & 0x01);

rep = 0;

)

# endif

if (Pina! = 255) (

rotpow = 255;

ldev = rdev = 0;

if (PINA.3 == 0)

rdev = 1;

if (PINA.2 == 0)

rdev = 2;

if (PINA.1 == 0)

rdev = 3;

if (PINA.0 == 0)

rdev = 4;

if (PINA.4 == 0)

ldev = 1;

if (PINA.5 == 0)

ldev = 2;

if (PINA.6 == 0)

ldev = 3;

if (PINA.7 == 0)

ldev = 4;

if (rdev> ldev)

Mover (R, 0.195 12 * rdev);

if (rdev <ldev)

Move (L, 0195 12 * ldev);

if (rdev == ldev)

Move (FWD, 0.200);

)

else (

for (i = 0, DIRL = 0; i <MAX; i ) (

if (history == L)

(DIRL ;)

)

if (rotpow <160) (rotpow = 160;)

if (rotpow <255) (rotpow ;)

if (DIRL> HMAX)

(mover (CW, 0, rotpow);)

diferente

(mover (CCW, 0, rotpow);)

)

);

)

void move (dir unsigned char, unsigned char demora, o poder unsigned char) (

PORTC = dir;

if (dir == E | | dir == r) (

hcount = (hcount 1)% MAX;

hcount história [] = dir;

)

Lspeed renatacorrea = = 255; / / potência;

/ / delay_ms (delay);

)
 

Welcome to EDABoard.com

Sponsor

Back
Top