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... То норм.)
Если возникнут вопросы - посмотрите на мой аватар.
я купил апельсин, а как мне по одному из него брать, делать с ним
автор, пиши по-русски, пожалуйста!
извините, не удержался...
если((апельсин & (долька №1))==съели) кричать("ААА!");
Если написать так:0867532 писал(а): ...
if (PINB == AK[0] ) { ... } (PORTB=
, то работать будет.0867532 писал(а): ...
if (PINB == AK[0] ) { ... }; // (PORTB=
Docendo discimus
- Реклама
Я это для сообщения вставил, Понятно что во1: меня редактор бы послал куда-подальше.
Во2: на я не совсем тупой, чтоб с ошибками код заливать в МК.
Во2: на я не совсем тупой, чтоб с ошибками код заливать в МК.
Если возникнут вопросы - посмотрите на мой аватар.
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); ... }
Тук-тук-тук!
Снова я с очередным вопросом:
Подскажите,что делать?!
Символы выводятся идеально правильно,только после перезагрузки мк путем сажания ресета на массу.
А при перезагрузке путем сброса питания,происходит такая фигня.
Спасибо!
- Вложения
-
- image.jpg
- Что происходит после сброса питания
- (132.83 КБ) 313 скачиваний
-
- image.jpg
- Как должно быть
- (44.23 КБ) 240 скачиваний
Что-то Ваш дисплей не совсем похож на
ЗЫ: Цепь ресета как сделана ? Мож в ей проблемы...
Сериг писал(а):дисплей на контроллере HD44780
ЗЫ: Цепь ресета как сделана ? Мож в ей проблемы...
- Сообщения: 351
- Зарегистрирован: Пн сен 12, 2011 12:13:46
Сериг а вы не вместе с 0867532?
Код тот для примера , а вы в нем ничего не делали?
Выложите свой. Или продолжайте на пальцах спрашивать..
Код тот для примера , а вы в нем ничего не делали?
Выложите свой. Или продолжайте на пальцах спрашивать..
Сериг, а что у вас за LCD, как называется?
Если возникнут вопросы - посмотрите на мой аватар.
Все по фен-шую...Аlex писал(а):Что-то Ваш дисплей не совсем похож наСериг писал(а):дисплей на контроллере HD44780![]()
ЗЫ: Цепь ресета как сделана ? Мож в ей проблемы...
Конденсатор 0,1 на землю, 10к к плюсу...
Дисплей wh2004d
Попробуйте посадить ресет на землю, подать питание на девайс, затем отпустить ресет. Возможно, у Вас проблема связана не с внешним сбросом, а с первым пуском МК.
Из даташита:
Оно, конечно, в библиотеке это делается. Но тем не менее перед инициализацией дисплея в самом начале программы поставьтеWait for more than 15 ms after VCC rises to 4.5 V
Код: Выделить всё
delay_ms(500);Docendo discimus
Ок,спасибо,попробую. А что в таком случае делать?Аlex писал(а):Попробуйте посадить ресет на землю, подать питание на девайс, затем отпустить ресет. Возможно, у Вас проблема связана не с внешним сбросом, а с первым пуском МК.
Pyzhman стоит задержка 1000мс.
Теоретический вопрос, чем отличаются две переменные друг от друга , которые вот так обьявлены
Код: Выделить всё
#define odin 44 //
unsigned char dva=44; //
odin - это не переменная, а константа, она не занимает оперативной памяти микроконтроллера.
dva - это переменная, под которую выделяется место в ОЗУ.
dva - это переменная, под которую выделяется место в ОЗУ.
Ставим плюсы: )
odin это даже и не константа
Хотя место, конечно, может занять во флеше. Да и в ОЗУ тоже может занять.
Docendo discimus
Понимаю что это примитив , но сомнения и порождают у меня этот вопрос.
По месту нахождения ясно , а как тогда это может сказаться на арифметических действиях
Вот тут не понял, в чем будут ограничены действия
По месту нахождения ясно , а как тогда это может сказаться на арифметических действиях
Код: Выделить всё
#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;
интерестно, а почему для нее не используется один из РОН, а выделя6ется ячейка ОЗУ ?ibiza11 писал(а):dva - это переменная, под которую выделяется место в ОЗУ.
Tell Me The Truth
Потому что РОН мало, а ОЗУ много. Чтобы выделился РОН, вроде надо написать register. Хотя не знаю как в CV.FreshMan писал(а):почему для нее не используется один из РОН, а выделя6ется ячейка ОЗУ ?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]


