Страница 6 из 421
Добавлено: Ср ноя 28, 2007 12:58:36
lexmulya
Согласен. Напомню тем кто не знал что
& Поразрядное И
&& Логическое И
&= Присваивание с поразрядным И
Добавлено: Ср ноя 28, 2007 15:10:20
L29Ah
MetEl писал(а):
if(a<x<b){
ляляля}
Он тоже не выполняет...
Почитайте вы, наконец-то, книжку по С, может быть поймёте, что такое выражения и как они вычисляются... Могу лишь подсказать, что (a<x<b) эквивалентно ((a<x)<b), что эквивалентно ((0 или 1) < b)... "<" это тоже операция, как и всё в языке С. Это во всяких высокоуровневых языках у вас есть функция "<", которая принимает 2 аргумента - сравниваемые величины, и возвращает И/Л. А С - это всего лишь кроссплатформенный ассемблер. Обижаться на него и ругать нехороших компиляторов не стоит...
Добавлено: Пт ноя 30, 2007 01:41:53
Negor
Народ, я знаю у когото в закромах есть библиотека для работы с дисплеями на HD44780 под CodeVision... ато я тут парочку нашёл для WinAvr но при перекомпиляции требуется ещё куча библиотек, а в них ещё по кучке и в каждой незнакомые конструкции... вопщем проблемы вылезают быстрее чем я их устраняю... я бы использовал встроенный визард но мне надо в Mega8 использовать PORTC... вот такая вот проблема
Добавлено: Сб дек 01, 2007 01:05:25
Negor
НЕ дождался))) Переписал одну найденную WinAvr овскую под CodeVision. Теперь вот проблема с itoa()... вобщем есть число, а его надо вывести.
Код: Выделить всё
unsigned int i=10;
unsigned char *ch;
DDRC = 0xff;
DDRB = 0xff;
LCD_PORT = 0x00;
DDRD = 0xff;
PORTD = 0x00;
INIT_LCD();
itoa(i, ch);
PR_STR_LCD(ch);
Вот такой вот код... самое интересное что Proteus всё делает правильно а на реальном железе пусто. Но если сделать так
То всё норм, выводится слово...
вот на всяк случай
Код: Выделить всё
void PR_STR_LCD(unsigned char *ptr)
{
unsigned char k;
while (k=*ptr++) PRINT_LCD(k);
}
void WRITE_LCD(char value)
{
delay_us(MKS_PBYT);
WRITE_HIGH_NIBBLE(value);
_Epb();
WRITE_LOW_NIBBLE(value);
_E();
delay_us(MKS_BYTE);
}
void PRINT_LCD(char value)
{
SET_RS;
WRITE_LCD (value);
CLR_RS;
delay_us(MKS_BYTE);
}
Кто что могёт подсказать?[/code]
Добавлено: Сб дек 01, 2007 02:13:04
L29Ah
Negor писал(а):Кто что могёт подсказать?
Может быть, странный вопрос, но что у нас лежит в *ch после itoa? Ноль есть?
ЗЫЖ и вообще, преобразование цыферок в строку можно самому написать за пару минут (%10 + '0', /10)
Добавлено: Сб дек 01, 2007 15:40:26
Negor
Поповоду того что в *ch - а как я праверю? В протеусе всё работает а отладчиков для реального железа у мну нет.
А как твоим методом пользоватся по перегонке цифр в буквы я не понял...
Добавлено: Пн дек 03, 2007 12:45:25
benin
Сори, прерву Вашу беседу....
У мну вопрос по поводу codevisionavr, а вчастности - не стартует на WinXp x64. Кто-то сталкивался с такой проблемой ?? Есть варианты решения ? Google толком ничего не дал.....
Добавлено: Пн дек 03, 2007 16:39:44
lexmulya
А как твоим методом пользоватся по перегонке цифр в буквы я не понял...
Есть число в десятичной системе ты смотрешь остаток от деления на 10 а потом делишь на десять и так пока число не равно нулю...
Код: Выделить всё
char tmp_str[10]={'0','1','2','3','4','5','6','7','8','9'};
char new_str[];
while(chislo>0){
new_str=new_str+tmp_str[chislo%10];
chislo=chislo/10;
}
В результате в new_str будет символьное прнедставление числа(правда в обратном порядке)
П.С. Писал на скорую руку строго не судите)
Добавлено: Вт дек 04, 2007 00:35:41
Negor
Ну главное смысл я понял... но всё таки интересно почему в реальном железе не работает... и ещё - как делать чтоб экранчик на HD44780 писал по русски... русские буквы в нём есть но при заталкивании в него русского мимвола иероглифы вылетают
Добавлено: Вт дек 04, 2007 08:28:51
Aheir
Это уже обсуждали где-то на форуме. Суть в том, что у дисплея "русские" коды знакогенератора не совпадают теми, что в CVAVR'e. Между ними есть некое постоянное смещение, насколько я помню. Вот его и надо добавлять к символу при выводе.
Поищите, где это было..
Добавлено: Вт дек 04, 2007 10:19:09
lexmulya
А какой у тебя ЖК? если нашь Мелтовский то там просто режим переключить можно.
Добавлено: Вт дек 04, 2007 10:32:40
tych
Вот примеры вывода русский букв на LCD
http://kazus.ru/forum/topics/7202.html
Добавлено: Ср дек 05, 2007 14:34:39
Negor
Спасибо товарищи за помощ. Дисплей у мну Winstar WH1602D
CodeVisionAvr vs x64
Добавлено: Пт дек 14, 2007 14:31:43
benin
Появилась проблема:
CodeVisionAvr не запускается на x64 системе (Windows XP Prof x64 Edition SP2)... просто вываливается с ошибкой: "CodeVisionAVR C Compiler - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства."
Кто-то что-то может сказать по данному поводу... можно как-то запустить на х64 или будет ли поддержка в будущем ???
Добавлено: Пт дек 14, 2007 14:41:01
tych
На сайте производителя есть указание скачать примочку для Висты - наверно и вам она поможет.
Добавлено: Вс дек 16, 2007 21:49:36
benin
tych писал(а):На сайте производителя есть указание скачать примочку для Висты - наверно и вам она поможет.
Скачал, попробовал... не помогло 8( всё тож самое...
У них на сайте как раз и указано, что для Vista 32,.. про 64 не слова, ни про Висту ни про ХП.
Добавлено: Вт дек 18, 2007 21:16:24
lexmulya
MetEl писал(а):Гоняю счётчик, сам по себе. В обработчике его прерывания простое сложене переменных, просто часы считает(даже так).
Онако с переменными ничего непроисходит, если я не вхожу в функцию которая эти переменные просматривает. Ничего не трогаю и не меняю. Просто вхожу в фунцкию где отображаются эти перменные.Тогда они работают!!!
Чё не так? Есть и другие процессы которые осуществляются в это время (не мало, но и не так чтоб много...). Ну всё перепробывал...
Посоветуйте, на что обратить внимание! Стек, память, какиенить установки компилятора...
Ну что ещё?!
Если вы ее тока в 1 месте увеличиваете и больше нигде не применяете, то возможно оптимизация кода ее(переменную) просто убрала...
Добавлено: Вт дек 18, 2007 21:17:43
MetEl
А из определённой функциии эти переменные засылаюся в перезначиватель (в 10 СЕ) и возвращаютя обратно уже в других(глобальных) переменных. И эти переменные в 10-м формате отправляются в процедуру по подстановке символов, потом по сбору в (одно) страницу экрана.
Потом вся страница разом выводится на экран....
Может это слишком для МК?
А вам код зачем, компильнёте в чёмто другом?
Я вот ICCV пытаюся по пробывать.
Добавлено: Вт дек 18, 2007 21:19:03
MetEl
lexmulya писал(а):Если вы ее тока в 1 месте увеличиваете и больше нигде не применяете, то возможно оптимизация кода ее(переменную) просто убрала...
Да, тоько в обработчике прерывания.
А как эту заразу (оптимизацию) убрать?
Добавлено: Вт дек 18, 2007 21:23:40
MetEl
Оптимизейшен ливел - лоу.
?