Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: установка бита
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
goodking
Привет! Объясните пожалуйста этот кусок программы из примера

Код
  Помимо вывода графики побайтно также существует возможность установки или сброса одного бита в байте по заданному адресу. Это позволяет управлять отдельными точками на экране. Ниже приведена функция, позволяющая засвечивать или гасить отдельный бит по заданному адресу.

void PutPixelXYLCD(unsigned char X,unsigned char Y,unsigned char bt)
{
unsigned int i;

i=(unsigned int)X/6;
i=(unsigned int)(LCD_GraphicHome)+(unsigned int)X/6+(unsigned int)Y*0x28;
SetAddrLCD((unsigned int)(LCD_GraphicHome)+(unsigned int)X/6+(unsigned int)Y*0x28);//Установка адреса

while ((GetStatusLCD()&0x03)!=0x03);
//Вывод точки.
if (bt)
Send8LCD(1,(0xf8|(5-(X-(X/6)*6))));
else
Send8LCD(1,(0xf0|(5-(X-(X/6)*6))));
}

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

void SetAddrLCD(unsigned int addr)
{

while ((GetStatusLCD()&0x03)!=0x03);
Send8LCD(0,(unsigned char)addr);
while ((GetStatusLCD()&0x03)!=0x03);
Send8LCD(0,(unsigned char)(addr>>8));
while ((GetStatusLCD()&0x03)!=0x03);
Send8LCD(1,0x24);
}



конкретно интересует


вот этот
Код
5-(X-(X/6)*6)))

момент ?? Для чего эти вычисления?
Сергей Борщ
Очевидно, что X-(X/6)*6 - остаток от деления X на 6. Зачем он вычисляется - надо смотреть систему команд контроллера дисплея.
smalcom
похоже на вычисление позиции точки в знакоместе
zltigo
Цитата(Сергей Борщ @ Apr 1 2010, 18:24) *
Очевидно, что X-(X/6)*6 - остаток от деления X на 6.

Наличие такого
X-(X/6)*6
вместо
X%6
однозначно свидетельствует о том, что изучения этот исходник не заслуживает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.