CodeVision AVR в вопросах и ответах
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Лал, я не знал что это были массивы, точнее не задумывался что это они...
Если возникнут вопросы - посмотрите на мой аватар.
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Доктор доктор мне нужно зуб вырвать, - мне вас посоветовали.
-Хм так это во рту зубы оказывается? Никогда бы не подумал.

-Хм так это во рту зубы оказывается? Никогда бы не подумал.
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Коты, помогите?!
программа считывает char, а как мне из него по одному читать, делать с ним экшон, и так пока чар не кончится?
Например:
...
void Print(unsigned char BOSS) {
понятно что здесь надо ставить while(???){экшон;} но как компактно подсчитать не создав кучу переменных?
}
...
Print(BULKA);
Не хочется на самодельный экранчик выводить буквы по одной:)
Да, ещё... Почему не работает?
...
unsigned char AK[] = {
0b10111111,
...
};
...
if (PINB == AK[0] ) { ... } (PORTB=0xFF; DDRB=0x00; Если без массива ну там PD.0 == 1 && PD.1 ==0... То норм.)
программа считывает char, а как мне из него по одному читать, делать с ним экшон, и так пока чар не кончится?
Например:
...
void Print(unsigned char BOSS) {
понятно что здесь надо ставить while(???){экшон;} но как компактно подсчитать не создав кучу переменных?
}
...
Print(BULKA);
Не хочется на самодельный экранчик выводить буквы по одной:)
Да, ещё... Почему не работает?
...
unsigned char AK[] = {
0b10111111,
...
};
...
if (PINB == AK[0] ) { ... } (PORTB=0xFF; DDRB=0x00; Если без массива ну там PD.0 == 1 && PD.1 ==0... То норм.)
Если возникнут вопросы - посмотрите на мой аватар.
Re: CodeVision AVR в вопросах и ответах
я купил апельсин, а как мне по одному из него брать, делать с ним
, и так, пока апельсин не кончится?автор, пиши по-русски, пожалуйста!
извините, не удержался...
если((апельсин & (долька №1))==съели) кричать("ААА!");
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
0867532 писал(а):...
if (PINB == AK[0] ) { ... } (PORTB=
Если написать так:
0867532 писал(а):...
if (PINB == AK[0] ) { ... }; // (PORTB=
, то работать будет.
Docendo discimus
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Я это для сообщения вставил, Понятно что во1: меня редактор бы послал куда-подальше.
Во2: на я не совсем тупой, чтоб с ошибками код заливать в МК.
Во2: на я не совсем тупой, чтоб с ошибками код заливать в МК.
Если возникнут вопросы - посмотрите на мой аватар.
- Сериг
- Это не хвост, это антенна
- Сообщения: 1451
- Зарегистрирован: Пт фев 19, 2010 19:39:28
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
0867532 писал(а):Я так делаю:
Работает всегда правильно.
Коды чаров генерировал в этой проге:
http://rghost.ru/private/48590263/81d57 ... 58c21e9a72Код: Выделить всё
typedef unsigned char byte;
flash byte char0[8]={0x04, 0x14, 0x1F, 0x05, 0x04, 0x0A, 0x11, 0x11};//суваем то что сгенерировалось суда
flash byte char1[8]={0x04, 0x05, 0x1F, 0x14, 0x04, 0x0A, 0x11, 0x11};
flash byte char2[8]={0x1F, 0x11, 0x11, 0x11, 0x19, 0x11, 0x11, 0x11};
flash byte char3[8]={0x1F, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x1F};
flash byte char4[8]={0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04};
flash byte char5[8]={0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00};
flash byte char6[8]={0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00};
flash byte char7[8]={0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};
void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code<<3) | 0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}
void main(void) {
...
define_char(char0,0);
define_char(char1,1);
define_char(char2,2);
define_char(char3,3);
define_char(char4,4);
define_char(char5,5);
define_char(char6,6);
define_char(char7,7);
...
lcd_putchar(0);
lcd_putchar(1);
lcd_putchar(2);//Выводим сгенерированые чары на экран
lcd_putchar(3);
lcd_putchar(4);
lcd_putchar(5);
lcd_putchar(6);
lcd_putchar(7);
...
}
Тук-тук-тук!
Снова я с очередным вопросом:
Подскажите,что делать?!
Символы выводятся идеально правильно,только после перезагрузки мк путем сажания ресета на массу.
А при перезагрузке путем сброса питания,происходит такая фигня.
Спасибо!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Что-то Ваш дисплей не совсем похож на
ЗЫ: Цепь ресета как сделана ? Мож в ей проблемы...
Сериг писал(а):дисплей на контроллере HD44780
ЗЫ: Цепь ресета как сделана ? Мож в ей проблемы...
Re: CodeVision AVR в вопросах и ответах
Сериг а вы не вместе с 0867532?
Код тот для примера , а вы в нем ничего не делали?
Выложите свой. Или продолжайте на пальцах спрашивать..
Код тот для примера , а вы в нем ничего не делали?
Выложите свой. Или продолжайте на пальцах спрашивать..
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Сериг, а что у вас за LCD, как называется?
Если возникнут вопросы - посмотрите на мой аватар.
- Сериг
- Это не хвост, это антенна
- Сообщения: 1451
- Зарегистрирован: Пт фев 19, 2010 19:39:28
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
Аlex писал(а):Что-то Ваш дисплей не совсем похож наСериг писал(а):дисплей на контроллере HD44780![]()
ЗЫ: Цепь ресета как сделана ? Мож в ей проблемы...
Все по фен-шую...
Конденсатор 0,1 на землю, 10к к плюсу...
Дисплей wh2004d
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Попробуйте посадить ресет на землю, подать питание на девайс, затем отпустить ресет. Возможно, у Вас проблема связана не с внешним сбросом, а с первым пуском МК.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Из даташита:
Оно, конечно, в библиотеке это делается. Но тем не менее перед инициализацией дисплея в самом начале программы поставьте
Wait for more than 15 ms after VCC rises to 4.5 V
Оно, конечно, в библиотеке это делается. Но тем не менее перед инициализацией дисплея в самом начале программы поставьте
Код: Выделить всё
delay_ms(500);Docendo discimus
- Сериг
- Это не хвост, это антенна
- Сообщения: 1451
- Зарегистрирован: Пт фев 19, 2010 19:39:28
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
Аlex писал(а):Попробуйте посадить ресет на землю, подать питание на девайс, затем отпустить ресет. Возможно, у Вас проблема связана не с внешним сбросом, а с первым пуском МК.
Ок,спасибо,попробую. А что в таком случае делать?
Pyzhman стоит задержка 1000мс.
Re: CodeVision AVR в вопросах и ответах
Теоретический вопрос, чем отличаются две переменные друг от друга , которые вот так обьявлены
Код: Выделить всё
#define odin 44 //
unsigned char dva=44; //
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
odin - это не переменная, а константа, она не занимает оперативной памяти микроконтроллера.
dva - это переменная, под которую выделяется место в ОЗУ.
dva - это переменная, под которую выделяется место в ОЗУ.
Ставим плюсы: )
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
odin это даже и не константа
Хотя место, конечно, может занять во флеше. Да и в ОЗУ тоже может занять.
Docendo discimus
Re: CodeVision AVR в вопросах и ответах
Понимаю что это примитив , но сомнения и порождают у меня этот вопрос.
По месту нахождения ясно , а как тогда это может сказаться на арифметических действиях
Вот тут не понял, в чем будут ограничены действия
По месту нахождения ясно , а как тогда это может сказаться на арифметических действиях
Код: Выделить всё
#define odin 44 //
unsigned int dva=44; //
int summa=0;
// вариант №1
summa= (100+ (odin*dva))/odin;
// вариант №2
summa= (100+ (odin/dva))*dva;
// вариант №3
summa= (100+ (odin/dva))+odin;
Вот тут не понял, в чем будут ограничены действия
Re: CodeVision AVR в вопросах и ответах
ibiza11 писал(а):dva - это переменная, под которую выделяется место в ОЗУ.
интерестно, а почему для нее не используется один из РОН, а выделя6ется ячейка ОЗУ ?
Tell Me The Truth
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: CodeVision AVR в вопросах и ответах
FreshMan писал(а):почему для нее не используется один из РОН, а выделя6ется ячейка ОЗУ ?
Потому что РОН мало, а ОЗУ много. Чтобы выделился РОН, вроде надо написать register. Хотя не знаю как в CV.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]