N
nirmal_rockin
Guest
Hi ...
Aku sangat membutuhkan ..i got program ini somewher dari net dan saya telah mengedit baris itu untuk saya pengikut yang aku membangun .... tapi program menunjukkan beberapa kesalahan (dalam mikrokontroler yang digunakan adalah atmega16) dan aku benar-benar bingung mengenai file header 'delay.h' dan 'mega16.h' i mencoba menggunakan file header yang disediakan dalam avr_libc .. tapi itu menunjukkan beberapa kesalahan ....siapa pun dapat membantu saya menyelesaikan masalah ini ...
bagaimana saya dapat membuat program errorless ....
pls help me .....i dono banyak tentang Microcontrollers ....
terima kasih ...Quote:/************************************************* ****
Proyek: Line Follower
Chip type: ATmega16
Program type: Application
Clock frequency: 7.372800 MHz
Model memori: Kecil
External SRAM size: 0
Data Stack size: 256
************************************************** *** /
/ / # define debug 1
# include <mega16.h>
# include <delay.h>
# ifdef debug
# include <stdio.h>
# 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 RSPEED OCR1AL
# define LSPEED OCR1BL
# define SPEED0 255
# define SPEED1 0
# define SPEED2 0
# define SPEED3 0
# define MAX 3
# define HMAX 1
void bergerak (unsigned char dir, penundaan unsigned char, unsigned char daya);
unsigned char i, rdev, ldev, ip, delay, dir, kekuasaan, dirl, sejarah [MAX], hcount = 0, rotpow;
# ifdef debug
unsigned char rep = 0, prev = 0;
# endif
void main (void)
(
/ / Input / Output Ports initialization
/ / Port A initialization
/ / Func7 = Dalam Func6 = Dalam Func5 = Dalam Func4 = Dalam Func3 = Dalam Func2 = Dalam Func1 = Dalam Func0 = Dalam
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTA = 0x00;
DDRA = 0x00;
/ / Port B initialization
/ / Func7 = Dalam Func6 = Dalam Func5 = Dalam Func4 = Dalam Func3 = Dalam Func2 = Dalam Func1 = Dalam Func0 = Dalam
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTB = 0x00;
DDRB = 0x00;
/ / Port C initialization
/ / Func7 = Dalam Func6 = Dalam Func5 = Dalam Func4 = Dalam Func3 = Dalam Func2 = Dalam Func1 = Dalam Func0 = Dalam
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTC = 0x00;
DDRC = 0xFF;
/ / Port D initialization
/ / Func7 = Dalam Func6 = Dalam Func5 = Out Func4 = Out Func3 = Dalam Func2 = Dalam Func1 = Dalam Func0 = Dalam
/ / State7 = T State6 = T State5 = 0 State4 = 0 State3 = T State2 = T State1 = T State0 = T
PORTD = 0x00;
DDRD = 0x30;
/ / Timer / Counter 0 initialization
/ / Clock source: System Clock
/ / Clock value: Timer 0 Stopped
/ / Mode: Normal top = FFh
/ / OC0 output: Disconnected
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;
/ / Timer / Counter 1 initialization
/ / Clock source: System Clock
/ / Clock value: 921,600 kHz
/ / Mode: Fast PWM atas = 00FFh
/ / OC1A output: Non-Inv.
/ / OC1B output: Non-Inv.
/ / Noise Canceler: Off
/ / Input Capture on Falling Edge
TCCR1A = 0xA1;
TCCR1B = 0x0A;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0xFF;
OCR1BH = 0x00;
OCR1BL = 0xFF;
/ / Timer / Counter 2 initialization
/ / Clock source: System Clock
/ / Clock value: Timer 2 Stopped
/ / Mode: Normal top = FFh
/ / OC2 output: Disconnected
ASSR = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;
/ / External Interrupt (s) initialization
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;
# ifdef debug
/ / USART initialization
/ / Communication Parameters: 8 Data, 1 Stop, No Parity
/ / USART Receiver: On
/ / USART Transmitter: On
/ / USART Mode: Asynchronous
/ / USART Baud rate: 57.600
UCSRA = 0x00;
UCSRB = 0x18;
UCSRC = 0x86;
UBRRH = 0x00;
UBRRL = 0x07;
# endif
/ / Timer (s) / Counter (s) Interrupt (s) initialization
TIMSK = 0x00;
/ / Analog komparator initialization
/ / Analog komparator: Off
/ / Analog komparator Input Capture oleh 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", (prev>> 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)
bergerak (R, 0.195 12 * rdev);
if (rdev <ldev)
bergerak (L, 0.195 12 * ldev);
if (rdev == ldev)
bergerak (FWD, 0.200);
)
else (
for (i = 0, dirl = 0; i <MAX; i ) (
if (sejarah == L)
(dirl![Wink ;) ;)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
)
if (rotpow <160) (rotpow = 160![Wink ;) ;)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
if (rotpow <255) (rotpow![Wink ;) ;)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
if (dirl> HMAX)
(bergerak (CW, 0, rotpow)![Wink ;) ;)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
lain
(bergerak (CCW, 0, rotpow)![Wink ;) ;)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
)
);
)
void bergerak (unsigned char dir, penundaan unsigned char, unsigned char kekuasaan) (
PORTC = dir;
if (dir == L | | dir == R) (
hcount = (hcount 1)% MAX;
sejarah [hcount] = dir;
)
LSPEED = RSPEED = 255; / / kekuasaan;
/ / delay_ms (delay);
)
Aku sangat membutuhkan ..i got program ini somewher dari net dan saya telah mengedit baris itu untuk saya pengikut yang aku membangun .... tapi program menunjukkan beberapa kesalahan (dalam mikrokontroler yang digunakan adalah atmega16) dan aku benar-benar bingung mengenai file header 'delay.h' dan 'mega16.h' i mencoba menggunakan file header yang disediakan dalam avr_libc .. tapi itu menunjukkan beberapa kesalahan ....siapa pun dapat membantu saya menyelesaikan masalah ini ...
bagaimana saya dapat membuat program errorless ....
pls help me .....i dono banyak tentang Microcontrollers ....
terima kasih ...Quote:/************************************************* ****
Proyek: Line Follower
Chip type: ATmega16
Program type: Application
Clock frequency: 7.372800 MHz
Model memori: Kecil
External SRAM size: 0
Data Stack size: 256
************************************************** *** /
/ / # define debug 1
# include <mega16.h>
# include <delay.h>
# ifdef debug
# include <stdio.h>
# 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 RSPEED OCR1AL
# define LSPEED OCR1BL
# define SPEED0 255
# define SPEED1 0
# define SPEED2 0
# define SPEED3 0
# define MAX 3
# define HMAX 1
void bergerak (unsigned char dir, penundaan unsigned char, unsigned char daya);
unsigned char i, rdev, ldev, ip, delay, dir, kekuasaan, dirl, sejarah [MAX], hcount = 0, rotpow;
# ifdef debug
unsigned char rep = 0, prev = 0;
# endif
void main (void)
(
/ / Input / Output Ports initialization
/ / Port A initialization
/ / Func7 = Dalam Func6 = Dalam Func5 = Dalam Func4 = Dalam Func3 = Dalam Func2 = Dalam Func1 = Dalam Func0 = Dalam
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTA = 0x00;
DDRA = 0x00;
/ / Port B initialization
/ / Func7 = Dalam Func6 = Dalam Func5 = Dalam Func4 = Dalam Func3 = Dalam Func2 = Dalam Func1 = Dalam Func0 = Dalam
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTB = 0x00;
DDRB = 0x00;
/ / Port C initialization
/ / Func7 = Dalam Func6 = Dalam Func5 = Dalam Func4 = Dalam Func3 = Dalam Func2 = Dalam Func1 = Dalam Func0 = Dalam
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTC = 0x00;
DDRC = 0xFF;
/ / Port D initialization
/ / Func7 = Dalam Func6 = Dalam Func5 = Out Func4 = Out Func3 = Dalam Func2 = Dalam Func1 = Dalam Func0 = Dalam
/ / State7 = T State6 = T State5 = 0 State4 = 0 State3 = T State2 = T State1 = T State0 = T
PORTD = 0x00;
DDRD = 0x30;
/ / Timer / Counter 0 initialization
/ / Clock source: System Clock
/ / Clock value: Timer 0 Stopped
/ / Mode: Normal top = FFh
/ / OC0 output: Disconnected
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;
/ / Timer / Counter 1 initialization
/ / Clock source: System Clock
/ / Clock value: 921,600 kHz
/ / Mode: Fast PWM atas = 00FFh
/ / OC1A output: Non-Inv.
/ / OC1B output: Non-Inv.
/ / Noise Canceler: Off
/ / Input Capture on Falling Edge
TCCR1A = 0xA1;
TCCR1B = 0x0A;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0xFF;
OCR1BH = 0x00;
OCR1BL = 0xFF;
/ / Timer / Counter 2 initialization
/ / Clock source: System Clock
/ / Clock value: Timer 2 Stopped
/ / Mode: Normal top = FFh
/ / OC2 output: Disconnected
ASSR = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;
/ / External Interrupt (s) initialization
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;
# ifdef debug
/ / USART initialization
/ / Communication Parameters: 8 Data, 1 Stop, No Parity
/ / USART Receiver: On
/ / USART Transmitter: On
/ / USART Mode: Asynchronous
/ / USART Baud rate: 57.600
UCSRA = 0x00;
UCSRB = 0x18;
UCSRC = 0x86;
UBRRH = 0x00;
UBRRL = 0x07;
# endif
/ / Timer (s) / Counter (s) Interrupt (s) initialization
TIMSK = 0x00;
/ / Analog komparator initialization
/ / Analog komparator: Off
/ / Analog komparator Input Capture oleh 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", (prev>> 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)
bergerak (R, 0.195 12 * rdev);
if (rdev <ldev)
bergerak (L, 0.195 12 * ldev);
if (rdev == ldev)
bergerak (FWD, 0.200);
)
else (
for (i = 0, dirl = 0; i <MAX; i ) (
if (sejarah == L)
(dirl
)
if (rotpow <160) (rotpow = 160
if (rotpow <255) (rotpow
if (dirl> HMAX)
(bergerak (CW, 0, rotpow)
lain
(bergerak (CCW, 0, rotpow)
)
);
)
void bergerak (unsigned char dir, penundaan unsigned char, unsigned char kekuasaan) (
PORTC = dir;
if (dir == L | | dir == R) (
hcount = (hcount 1)% MAX;
sejarah [hcount] = dir;
)
LSPEED = RSPEED = 255; / / kekuasaan;
/ / delay_ms (delay);
)