реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Редактирование строки на ЖКИ., Ввод времени в RTC
alux
сообщение Dec 18 2007, 21:26
Сообщение #31


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



MT12864J ks0108

Добавлено

Простите за тупой вопрос. Как в переменной обнулить переменное число бит? Допустим, надо обнулить 6 мл. бит. Тогда просто делаем логическое И с 0хс0. А если число бит, которые необходимо обнулить, величина переменная? Первое, что пришло на ум, сдвинуть вправо на Х-бит. Затем влево на Х-бит. А можно ли одним движением это сделать? Это все к тому, что необходимо перед выводом символа на экран складывать с считанным байтом. А высота символов может быть разная.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Dec 19 2007, 15:50
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Примерный смысл дойдёт из конструкции.
Код
maska =0x3;
if((X & 2)==0)
{
   maska = 0x30;
   ColorX <<= 4;
   ch <<= 4;
}
if((X & 1)==0)
{
   maska <<=2;
   ColorX <<=2;
   ch <<=2;
}


Формируется сразу и маска и сдвиг.
Вы, как я понял на границу выравниваетесь. То есть у вас повреждения могут быть внизу. А у меня текст или картинка выводится с любой точки. У меня посложнее - есть градации яркости, но принцип понятен.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 19 2007, 19:21
Сообщение #33


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(alux @ Dec 18 2007, 23:26) *
А если число бит, которые необходимо обнулить, величина переменная?
Если контроллер имеет аппаратную поддержку сдвигов, то можно так: value &= ~ ( (1 << n) - 1); (n - число маскируемых бит). Если не имеет - то массив констант, в котором хранятся маски.
Код
uint8_t const Mask[] = { 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00 };
    value &= Mask[n];


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th August 2025 - 11:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016