N
nirmal_rockin
Guest
Здрасти ...
Аз съм в спешната нужда ..Имам тази програма somewher от мрежата и съм го редактира за моята линия, които съм привърженик сграда .... но програмата показва някои грешки (микроконтролера използва, е atmega16) и аз съм напълно объркан за горния файл "delay.h" и "I mega16.h" се опита използвате заглавния досиетата, предвидени в avr_libc .. но той показва няколко грешки ....може някой да ми помогне решаването на този проблем ...
Как мога да се създаде errorless програма ....
Pls ми помогне .....Аз Доно много за микроконтролери ....
благодаря ти ...Цитат:/************************************************* ****
Проект: Line последовател
Чип тип: ATmega16
Тип на програмата: Прилагане
Тактова честота: 7.372800 MHz
Памет модел: Малки
Външни SRAM размер: 0
Данни стека размер: 256
************************************************** *** /
/ / # определят Debug 1
# включват <mega16.h>
# включват <delay.h>
# ifdef Debug
# включват <stdio.h>
# endif
# определят FWD 0xAA
# определят REV 0x55
# определят R 0x22
# определят L 0x88
# определят CW 0x99
# определят ККО 0x66
# определят STOP 0x00
# определят Б 0xFF
# определят RSPEED OCR1AL
# определят LSPEED OCR1BL
# определят SPEED0 255
# определят SPEED1 0
# определят SPEED2 0
# определят Speed3 0
# определят MAX 3
# 1 определят HMAX
нищожен ход (реж. грозен Чар, грозен Чар забавяне, грозен Чар мощност);
Чар и грозен, rdev, ldev, IP, забавяне, реж., мощност, dirl, история [MAX], hcount = 0, rotpow;
# ifdef Debug
грозен Чар представител = 0, предишна = 0;
# endif
нищожен основни (Void)
(
/ / Input / Output Пристанища инициализация
/ / Порт А инициализация
/ / Func7 = В Func6 = В Func5 = В Func4 = В Func3 = В Func2 = В func1 = В = В Func0
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T = T State0
PORTA = 0x00;
DDRA = 0x00;
/ / Порт Б инициализация
/ / Func7 = В Func6 = В Func5 = В Func4 = В Func3 = В Func2 = В func1 = В = В Func0
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T = T State0
PORTB = 0x00;
DDRB = 0x00;
/ / Порт С инициализация
/ / Func7 = В Func6 = В Func5 = В Func4 = В Func3 = В Func2 = В func1 = В = В Func0
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T = T State0
PORTC = 0x00;
DDRC = 0xFF;
/ / Порт Г инициализация
/ / Func7 = В Func6 = В Func5 = Няма Func4 = Няма Func3 = В Func2 = В func1 = В = В Func0
/ / State7 = T State6 = T State5 = 0 State4 = 0 State3 = T State2 = T State1 = T = T State0
PORTD = 0x00;
DDRD = 0x30;
/ / Таймер / брояч 0 инициализация
/ / Часовник източник: системен часовник
/ / Часовник стойност: таймер 0 Спряно
/ / Режим: Нормална върха = РРН
/ / OC0 изход: Disconnected
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;
/ / Таймер / брояч 1 инициализация
/ / Часовник източник: системен часовник
/ / Часовник стойност: 921,600 KHz
/ / Режим: Бързо PWM върха = 00FFh
/ / OC1A изход: Non-Инв.
/ / OC1B изход: Non-Инв.
/ / Шум Canceler: Off
/ / Input за улавяне на падането Edge
TCCR1A = 0xA1;
TCCR1B = 0x0A;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0xFF;
OCR1BH = 0x00;
OCR1BL = 0xFF;
/ / Таймер / брояч 2 инициализация
/ / Часовник източник: системен часовник
/ / Часовник стойност: Време 2 Спряно
/ / Режим: Нормална върха = РРН
/ / OC2 изход: Disconnected
АССР = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;
/ / Външни прекъсвания (а) инициализация
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;
# ifdef Debug
/ / Инициализация USART
/ / Съобщение параметри: 8 Данни, 1 Спри, № Паритет
/ / USART Приемник: На
/ / USART предавателя: На
/ / USART Режим: Asynchronous
/ / USART Baud Rate: 57600
UCSRA = 0x00;
UCSRB = 0x18;
UCSRC = 0x86;
UBRRH = 0x00;
UBRRL = 0x07;
# endif
/ / Таймера (и) / Брояч (и) прекъсвания (а) инициализация
TIMSK = 0x00;
/ / Аналогов Comparator инициализация
/ / Аналогов Comparator: Off
/ / Аналогов Comparator Input Плен с таймер / брояч 1: Off
ACSR = 0x80;
SFIOR = 0x00;
докато (1) (
# ifdef Debug
IF (представител <255)
представител ;
IF (предишна! = PINA) (
Предишна = PINA;
printf ( "% U \ R", представител);
за (I = 0; I <8; I )
printf ( "% U \ т", (предишна>> I) & 0x01);
представител = 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)
ход (R, 0195 12 * rdev);
IF (rdev <ldev)
ход (L, 0195 12 * ldev);
IF (rdev == ldev)
ход (FWD, 0200);
)
иначе (
за (I = 0, dirl = 0; I <MAX; I ) (
ако (история == L)
(dirl
)
IF (rotpow <160) (rotpow = 160
IF (rotpow <255) (rotpow
IF (dirl> HMAX)
(ход (CW, 0, rotpow)
в противен случай
(ход (ККО, 0, rotpow)
)
);
)
нищожен ход (реж. грозен Чар, грозен Чар забавяне, грозен Чар мощност) (
PORTC = реж.;
IF (реж. == L | | == реж. R) (
hcount = (hcount 1)% MAX;
история [hcount] = реж.;
)
LSPEED = RSPEED = 255; / / мощност;
/ / delay_ms (закъснение);
)
Аз съм в спешната нужда ..Имам тази програма somewher от мрежата и съм го редактира за моята линия, които съм привърженик сграда .... но програмата показва някои грешки (микроконтролера използва, е atmega16) и аз съм напълно объркан за горния файл "delay.h" и "I mega16.h" се опита използвате заглавния досиетата, предвидени в avr_libc .. но той показва няколко грешки ....може някой да ми помогне решаването на този проблем ...
Как мога да се създаде errorless програма ....
Pls ми помогне .....Аз Доно много за микроконтролери ....
благодаря ти ...Цитат:/************************************************* ****
Проект: Line последовател
Чип тип: ATmega16
Тип на програмата: Прилагане
Тактова честота: 7.372800 MHz
Памет модел: Малки
Външни SRAM размер: 0
Данни стека размер: 256
************************************************** *** /
/ / # определят Debug 1
# включват <mega16.h>
# включват <delay.h>
# ifdef Debug
# включват <stdio.h>
# endif
# определят FWD 0xAA
# определят REV 0x55
# определят R 0x22
# определят L 0x88
# определят CW 0x99
# определят ККО 0x66
# определят STOP 0x00
# определят Б 0xFF
# определят RSPEED OCR1AL
# определят LSPEED OCR1BL
# определят SPEED0 255
# определят SPEED1 0
# определят SPEED2 0
# определят Speed3 0
# определят MAX 3
# 1 определят HMAX
нищожен ход (реж. грозен Чар, грозен Чар забавяне, грозен Чар мощност);
Чар и грозен, rdev, ldev, IP, забавяне, реж., мощност, dirl, история [MAX], hcount = 0, rotpow;
# ifdef Debug
грозен Чар представител = 0, предишна = 0;
# endif
нищожен основни (Void)
(
/ / Input / Output Пристанища инициализация
/ / Порт А инициализация
/ / Func7 = В Func6 = В Func5 = В Func4 = В Func3 = В Func2 = В func1 = В = В Func0
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T = T State0
PORTA = 0x00;
DDRA = 0x00;
/ / Порт Б инициализация
/ / Func7 = В Func6 = В Func5 = В Func4 = В Func3 = В Func2 = В func1 = В = В Func0
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T = T State0
PORTB = 0x00;
DDRB = 0x00;
/ / Порт С инициализация
/ / Func7 = В Func6 = В Func5 = В Func4 = В Func3 = В Func2 = В func1 = В = В Func0
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T = T State0
PORTC = 0x00;
DDRC = 0xFF;
/ / Порт Г инициализация
/ / Func7 = В Func6 = В Func5 = Няма Func4 = Няма Func3 = В Func2 = В func1 = В = В Func0
/ / State7 = T State6 = T State5 = 0 State4 = 0 State3 = T State2 = T State1 = T = T State0
PORTD = 0x00;
DDRD = 0x30;
/ / Таймер / брояч 0 инициализация
/ / Часовник източник: системен часовник
/ / Часовник стойност: таймер 0 Спряно
/ / Режим: Нормална върха = РРН
/ / OC0 изход: Disconnected
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;
/ / Таймер / брояч 1 инициализация
/ / Часовник източник: системен часовник
/ / Часовник стойност: 921,600 KHz
/ / Режим: Бързо PWM върха = 00FFh
/ / OC1A изход: Non-Инв.
/ / OC1B изход: Non-Инв.
/ / Шум Canceler: Off
/ / Input за улавяне на падането Edge
TCCR1A = 0xA1;
TCCR1B = 0x0A;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0xFF;
OCR1BH = 0x00;
OCR1BL = 0xFF;
/ / Таймер / брояч 2 инициализация
/ / Часовник източник: системен часовник
/ / Часовник стойност: Време 2 Спряно
/ / Режим: Нормална върха = РРН
/ / OC2 изход: Disconnected
АССР = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;
/ / Външни прекъсвания (а) инициализация
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;
# ifdef Debug
/ / Инициализация USART
/ / Съобщение параметри: 8 Данни, 1 Спри, № Паритет
/ / USART Приемник: На
/ / USART предавателя: На
/ / USART Режим: Asynchronous
/ / USART Baud Rate: 57600
UCSRA = 0x00;
UCSRB = 0x18;
UCSRC = 0x86;
UBRRH = 0x00;
UBRRL = 0x07;
# endif
/ / Таймера (и) / Брояч (и) прекъсвания (а) инициализация
TIMSK = 0x00;
/ / Аналогов Comparator инициализация
/ / Аналогов Comparator: Off
/ / Аналогов Comparator Input Плен с таймер / брояч 1: Off
ACSR = 0x80;
SFIOR = 0x00;
докато (1) (
# ifdef Debug
IF (представител <255)
представител ;
IF (предишна! = PINA) (
Предишна = PINA;
printf ( "% U \ R", представител);
за (I = 0; I <8; I )
printf ( "% U \ т", (предишна>> I) & 0x01);
представител = 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)
ход (R, 0195 12 * rdev);
IF (rdev <ldev)
ход (L, 0195 12 * ldev);
IF (rdev == ldev)
ход (FWD, 0200);
)
иначе (
за (I = 0, dirl = 0; I <MAX; I ) (
ако (история == L)
(dirl
)
IF (rotpow <160) (rotpow = 160
IF (rotpow <255) (rotpow
IF (dirl> HMAX)
(ход (CW, 0, rotpow)
в противен случай
(ход (ККО, 0, rotpow)
)
);
)
нищожен ход (реж. грозен Чар, грозен Чар забавяне, грозен Чар мощност) (
PORTC = реж.;
IF (реж. == L | | == реж. R) (
hcount = (hcount 1)% MAX;
история [hcount] = реж.;
)
LSPEED = RSPEED = 255; / / мощност;
/ / delay_ms (закъснение);
)