роботы робототехника микроконтроллеры


 Страниц (2): [1] 2 »   

> Без описания
beginner Post Id


Рядовой


Сообщений всего: 16
Дата рег-ции: Июль 2008  



Прочитал статью "Язык програмирования С". Набираю текст програм которые там приведены, комппелирую в CodeVisionAVR C Compiler ,но не компелируется .Выдаёт сплошные ошибки. Подскажите почему?
 
 Top
kurt84 Post Id



Майор


Сообщений всего: 56
Дата рег-ции: Июль 2008  



Если вы приведете здесь код, который пытаетесь скомпилировать и выдаваемые ошибки, то сможете получить ответ на свой вопрос. Экстрасенсов здесь, насколько я знаю, нет.
 
 Top
beginner Post Id


Рядовой


Сообщений всего: 16
Дата рег-ции: Июль 2008  



Код програмы приведён в разделе "Шаг за шагом" Часть 3 [программирование микроконтроллеров] этого сайта
/*************************************************************************
ПРИМЕР ВКЛЮЧЕНИЯ СВЕТОДИОДА СИГНАЛОМ ВЫСОКОГО УРОВНЯ
Пример подключения на рисунке 1
***************************
#include <avr/io.h>
int main(void) { // начало основной программы
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
PORTD |= _BV(PD1); // установить "1" (высокий уровень) на выводе PD1
} // закрывающая скобка основной программы
***********************************************/

В 6 строчке выдаёт "невозможно прочесть" , а
В 9 строчке "Неопределенный символ".
 
 Top
kurt84 Post Id



Майор


Сообщений всего: 56
Дата рег-ции: Июль 2008  



Цитата:
В 6 строчке выдаёт "невозможно прочесть" , а
В 9 строчке "Неопределенный символ".


Приведено всего 5 строк Улыбка
Возможно, в версии, которая стоит у вас, не определены макросы, такие как PD1. Не знаю, является ли макросом DDRD и PORTD. Пусть специалисты по компиляторам для AVR уточнят.
 
 Top
digger Администратор Post Id



Администратор


Сообщений всего: 372
Дата рег-ции: Май 2006  



Цитата:
Набираю текст програм которые там приведены, комппелирую в CodeVisionAVR C Compiler ,но не компелируется .Выдаёт сплошные ошибки. Подскажите почему


Потому что в курсе "Шаг за шагом" все примеры программ приведены для AVR GCC (WinAVR). Подмигивающий

CodeVision не рассматривается по причине того, что это не бесплатный компилятор. Грустный

 
 Top
cris Post Id



Рядовой


Сообщений всего: 12
Дата рег-ции: Июль 2008  



а может там все и правильно, а он написал с коменнтариями как он выложил, но коменты написал неправильно както))
 
 Top
kurt84 Post Id



Майор


Сообщений всего: 56
Дата рег-ции: Июль 2008  



Эээ... А вот это тоже в программу включено?

/*************************************************************************
ПРИМЕР ВКЛЮЧЕНИЯ СВЕТОДИОДА СИГНАЛОМ ВЫСОКОГО УРОВНЯ
Пример подключения на рисунке 1
***************************
...
...
...
***********************************************/
 
 Top
Admin Администратор Post Id


Администратор


Сообщений всего: 917
Дата рег-ции: Май 2006  



Конечно! Голливудская улыбка

Без этого никак работать не будет! гы-гы!

И не забудьте, пожалуйста, поставить копирайт myROBOT.ru. Так оно все вернее будет работать. Помираю со смеху
 
 Top
beginner Post Id


Рядовой


Сообщений всего: 16
Дата рег-ции: Июль 2008  



Цитата:
Потому что в курсе "Шаг за шагом" все примеры программ приведены для AVR GCC (WinAVR).


Я тоже об этом подумал. Но есть одна проблема, нигде немогу найти инструкцию по пользованию WinAVR , может подскажите где найти.
 
 Top
Volotar Post Id



Майор


Сообщений всего: 58
Дата рег-ции: Июнь 2008  



Объяснения для beginner на пальцах.Подмигивающий

Цитата:
/*************************************************************************
ПРИМЕР ВКЛЮЧЕНИЯ СВЕТОДИОДА СИГНАЛОМ ВЫСОКОГО УРОВНЯ
Пример подключения на рисунке 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. Совет не в обиду: почитайте сначала литературу и многие вопросы сами исчезнутьУлыбка
 
 Top
kurt84 Post Id



Майор


Сообщений всего: 56
Дата рег-ции: Июль 2008  



Товарищ Volotar, спасибо Вам огромное за данные мне разъяснения на мой вопрос beginner'у по поводу того, не закомментировал ли он случайно всю программу Улыбка))

Про PD, DDRD я также в курсе. Вопрос был в том, определены ли они такими же лексемами в среде программирования и/или компиляторе, поставляемом с CodeVisionAVR C Compiler, как в WinAVR.

p.s.:
Просьба отвечать внимательно прочитав вопрос. Немного обидно, когда тебя принимают за идиота.
 
 Top
beginner Post Id


Рядовой


Сообщений всего: 16
Дата рег-ции: Июль 2008  



Да ""умных""ответов много, а разумного совета не одного.
Вот в таком виде заработало

#include <mega8.h>
void initialization (void) { /* Вызвать (== выполнить) функцию инициализации МК */
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
PORTD |= 1<<1; // установить "1" (высокий уровень) на выводе PD1
} // закрывающая скобка основной программы

НО ПОЧЕМУ?
\n\n(Добавление)
Цитата:
Текст программы закомментарован.


Мужики я програмку не коментировал.Как уже писал я взял готовую с этого сайта и попробовал обработать.
 
 Top
VCOM Супермодератор Post Id



Супермодератор


Сообщений всего: 660
Дата рег-ции: Март 2007  



Гхмы, действительно пачиму... И че прям вот без main а? И заработало?
 
 Top
beginner Post Id


Рядовой


Сообщений всего: 16
Дата рег-ции: Июль 2008  



Да заработало.Покрайней мере в такой форме в CodeVisionAVR C Compiler компиляция прошла успешно.?
 
 Top
digger Администратор Post Id



Администратор


Сообщений всего: 372
Дата рег-ции: Май 2006  



Все же, как мне кажется, лучше использовать классический вариант с использованием функции main. Улыбка

CODE:
#include <mega8.h>
#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]
 
 Top
Страниц (2): [1] 2 »
« С чего начать? »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru