1. beginner - 27 Июля, 2008 - 14:01:36 - перейти к сообщению
Прочитал статью "Язык програмирования С". Набираю текст програм которые там приведены, комппелирую в CodeVisionAVR C Compiler ,но не компелируется .Выдаёт сплошные ошибки. Подскажите почему?
2. kurt84 - 27 Июля, 2008 - 15:17:28 - перейти к сообщению
Если вы приведете здесь код, который пытаетесь скомпилировать и выдаваемые ошибки, то сможете получить ответ на свой вопрос. Экстрасенсов здесь, насколько я знаю, нет.
3. beginner - 27 Июля, 2008 - 16:01:36 - перейти к сообщению
Код програмы приведён в разделе "Шаг за шагом" Часть 3 [программирование микроконтроллеров] этого сайта
/*************************************************************************
ПРИМЕР ВКЛЮЧЕНИЯ СВЕТОДИОДА СИГНАЛОМ ВЫСОКОГО УРОВНЯ
Пример подключения на рисунке 1
***************************
#include <avr/io.h>
int main(void) { // начало основной программы
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
PORTD |= _BV(PD1); // установить "1" (высокий уровень) на выводе PD1
} // закрывающая скобка основной программы
***********************************************/
В 6 строчке выдаёт "невозможно прочесть" , а
В 9 строчке "Неопределенный символ".
/*************************************************************************
ПРИМЕР ВКЛЮЧЕНИЯ СВЕТОДИОДА СИГНАЛОМ ВЫСОКОГО УРОВНЯ
Пример подключения на рисунке 1
***************************
#include <avr/io.h>
int main(void) { // начало основной программы
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
PORTD |= _BV(PD1); // установить "1" (высокий уровень) на выводе PD1
} // закрывающая скобка основной программы
***********************************************/
В 6 строчке выдаёт "невозможно прочесть" , а
В 9 строчке "Неопределенный символ".
4. kurt84 - 27 Июля, 2008 - 19:32:07 - перейти к сообщению
Цитата:
В 6 строчке выдаёт "невозможно прочесть" , а
В 9 строчке "Неопределенный символ".
В 9 строчке "Неопределенный символ".
Приведено всего 5 строк
Возможно, в версии, которая стоит у вас, не определены макросы, такие как PD1. Не знаю, является ли макросом DDRD и PORTD. Пусть специалисты по компиляторам для AVR уточнят.
5. digger - 28 Июля, 2008 - 02:20:43 - перейти к сообщению
Цитата:
Набираю текст програм которые там приведены, комппелирую в CodeVisionAVR C Compiler ,но не компелируется .Выдаёт сплошные ошибки. Подскажите почему
Потому что в курсе "Шаг за шагом" все примеры программ приведены для AVR GCC (WinAVR).
CodeVision не рассматривается по причине того, что это не бесплатный компилятор.
6. cris - 28 Июля, 2008 - 09:41:37 - перейти к сообщению
а может там все и правильно, а он написал с коменнтариями как он выложил, но коменты написал неправильно както))
7. kurt84 - 28 Июля, 2008 - 10:58:30 - перейти к сообщению
Эээ... А вот это тоже в программу включено?
/*************************************************************************
ПРИМЕР ВКЛЮЧЕНИЯ СВЕТОДИОДА СИГНАЛОМ ВЫСОКОГО УРОВНЯ
Пример подключения на рисунке 1
***************************
...
...
...
***********************************************/
/*************************************************************************
ПРИМЕР ВКЛЮЧЕНИЯ СВЕТОДИОДА СИГНАЛОМ ВЫСОКОГО УРОВНЯ
Пример подключения на рисунке 1
***************************
...
...
...
***********************************************/
8. Admin - 28 Июля, 2008 - 12:59:18 - перейти к сообщению
Конечно! 
Без этого никак работать не будет!
И не забудьте, пожалуйста, поставить копирайт myROBOT.ru. Так оно все вернее будет работать.
Без этого никак работать не будет!
И не забудьте, пожалуйста, поставить копирайт myROBOT.ru. Так оно все вернее будет работать.
9. beginner - 29 Июля, 2008 - 19:39:57 - перейти к сообщению
Цитата:
Потому что в курсе "Шаг за шагом" все примеры программ приведены для AVR GCC (WinAVR).
Я тоже об этом подумал. Но есть одна проблема, нигде немогу найти инструкцию по пользованию WinAVR , может подскажите где найти.
10. Volotar - 29 Июля, 2008 - 19:51:04 - перейти к сообщению
Объяснения для beginner на пальцах.
Текст программы закомментарован.
В языке программирования С и С++ используются две разновидности комментариев:
1 - многострочный - начинается со (/*) и заканчивается (*/)
2 - однострочный (//)
Специально разъяснения для kurt84
PD и DDRD - это порта, в тексте программы они служат для настройки порта ввод-вывод, с занесением соответсвующего значения.
P.S. Совет не в обиду: почитайте сначала литературу и многие вопросы сами исчезнуть
Цитата:
/*************************************************************************
ПРИМЕР ВКЛЮЧЕНИЯ СВЕТОДИОДА СИГНАЛОМ ВЫСОКОГО УРОВНЯ
Пример подключения на рисунке 1
***************************
#include <avr/io.h>
int main(void) { // начало основной программы
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
PORTD |= _BV(PD1); // установить "1" (высокий уровень) на выводе PD1
} // закрывающая скобка основной программы
***********************************************/
ПРИМЕР ВКЛЮЧЕНИЯ СВЕТОДИОДА СИГНАЛОМ ВЫСОКОГО УРОВНЯ
Пример подключения на рисунке 1
***************************
#include <avr/io.h>
int main(void) { // начало основной программы
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
PORTD |= _BV(PD1); // установить "1" (высокий уровень) на выводе PD1
} // закрывающая скобка основной программы
***********************************************/
Текст программы закомментарован.
В языке программирования С и С++ используются две разновидности комментариев:
1 - многострочный - начинается со (/*) и заканчивается (*/)
2 - однострочный (//)
Специально разъяснения для kurt84
Цитата:
Возможно, в версии, которая стоит у вас, не определены макросы, такие как PD1. Не знаю, является ли макросом DDRD и PORTD
PD и DDRD - это порта, в тексте программы они служат для настройки порта ввод-вывод, с занесением соответсвующего значения.
P.S. Совет не в обиду: почитайте сначала литературу и многие вопросы сами исчезнуть
11. kurt84 - 29 Июля, 2008 - 21:55:34 - перейти к сообщению
Товарищ Volotar, спасибо Вам огромное за данные мне разъяснения на мой вопрос beginner'у по поводу того, не закомментировал ли он случайно всю программу
))
Про PD, DDRD я также в курсе. Вопрос был в том, определены ли они такими же лексемами в среде программирования и/или компиляторе, поставляемом с CodeVisionAVR C Compiler, как в WinAVR.
p.s.:
Просьба отвечать внимательно прочитав вопрос. Немного обидно, когда тебя принимают за идиота.
Про PD, DDRD я также в курсе. Вопрос был в том, определены ли они такими же лексемами в среде программирования и/или компиляторе, поставляемом с CodeVisionAVR C Compiler, как в WinAVR.
p.s.:
Просьба отвечать внимательно прочитав вопрос. Немного обидно, когда тебя принимают за идиота.
12. beginner - 29 Июля, 2008 - 22:35:57 - перейти к сообщению
Да ""умных""ответов много, а разумного совета не одного.
Вот в таком виде заработало
#include <mega8.h>
void initialization (void) { /* Вызвать (== выполнить) функцию инициализации МК */
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
PORTD |= 1<<1; // установить "1" (высокий уровень) на выводе PD1
} // закрывающая скобка основной программы
НО ПОЧЕМУ?
\n\n(Добавление)
Мужики я програмку не коментировал.Как уже писал я взял готовую с этого сайта и попробовал обработать.
Вот в таком виде заработало
#include <mega8.h>
void initialization (void) { /* Вызвать (== выполнить) функцию инициализации МК */
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
PORTD |= 1<<1; // установить "1" (высокий уровень) на выводе PD1
} // закрывающая скобка основной программы
НО ПОЧЕМУ?
\n\n(Добавление)
Цитата:
Текст программы закомментарован.
Мужики я програмку не коментировал.Как уже писал я взял готовую с этого сайта и попробовал обработать.
13. VCOM - 30 Июля, 2008 - 09:26:44 - перейти к сообщению
Гхмы, действительно пачиму... И че прям вот без main а? И заработало?
14. beginner - 30 Июля, 2008 - 09:32:10 - перейти к сообщению
Да заработало.Покрайней мере в такой форме в CodeVisionAVR C Compiler компиляция прошла успешно.?
15. digger - 30 Июля, 2008 - 19:03:33 - перейти к сообщению
Все же, как мне кажется, лучше использовать классический вариант с использованием функции main. 
В данном примере, в отличии от примера из "Шаг за шагом" , отсутствует макрос _BV(), которого, насколько помнится, в CodeVision нет.
В WinAVR (AVR GCC) он определен в файле C:\WinAVR\avr\include\avr\sfr_defs.h строчкой
#define _BV(bit) (1 << (bit))
В Вашем примере _BV(1) заменен на прямой синтаксический эквивалент 1<<1.
Так можно поступать как в CodeVision, так и в AVR GCC.
Синтаксис CodeVision немного попроще, да и компилятор чуть послабее. Но, по большому счету, все это дело вкуса.
Видимо случайно, завершающая строка звездочек, при обработке примера, из заголовка у Вас перекочевала в конец программы вместе с закрывающим комментарий */
Из-за этого весь сыр-бор.
[/q]
CODE:
#include <mega8.h>
#include <stdio.h>
void main(void) { // начало основной программы
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
PORTD |= 1<<1; // установить "1" (высокий уровень) на выводе PD1
} // закрывающая скобка основной программы
#include <stdio.h>
void main(void) { // начало основной программы
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
PORTD |= 1<<1; // установить "1" (высокий уровень) на выводе PD1
} // закрывающая скобка основной программы
В данном примере, в отличии от примера из "Шаг за шагом" , отсутствует макрос _BV(), которого, насколько помнится, в CodeVision нет.
В WinAVR (AVR GCC) он определен в файле C:\WinAVR\avr\include\avr\sfr_defs.h строчкой
#define _BV(bit) (1 << (bit))
В Вашем примере _BV(1) заменен на прямой синтаксический эквивалент 1<<1.
Так можно поступать как в CodeVision, так и в AVR GCC.
Синтаксис CodeVision немного попроще, да и компилятор чуть послабее. Но, по большому счету, все это дело вкуса.
Цитата:
Мужики я програмку не коментировал.Как уже писал я взял готовую с этого сайта и попробовал обработать.
Видимо случайно, завершающая строка звездочек, при обработке примера, из заголовка у Вас перекочевала в конец программы вместе с закрывающим комментарий */
Из-за этого весь сыр-бор.
[/q]