Re: Помогите опознать дисплей.
Всем привет.
//выводит символ из массива
//Рисует слева направо,сверху вниз.
void vuvodFont_1(char c) //вход. данные - символ
{
unsigned char ax=a; //переписуем глобальные координаты курсора в переменные,чтоб не повредить их
unsigned char by=b; //при отработке циклов вывода массива
int aaa=0; //переменная будет принимать данные из массива
unsigned char q=sootv(c);//инициируем пер-ную адресом массива где хранится "изображение" символа "(char c)"
for(by=0;by‹font_h;by++) //цикл вывода строки шрифта,font_с=12-высота шрифта это кол-во строк по 10 пикселей в каждой.Шрифт 10х12 пикселей.
{ //прорисовка строк идёт по колонкам
aaa=RU_font_10x12 [q] [by] ; //записуем в ааа нужное значение строки (2 байта) и вы водим старшим битом
//вперёд (так шрифт рисовал,выводить проще)
for(ax=0;ax‹font_c;ax++)//цикл вывода колонок (битов) строки шрифта,font_h=10 пикселей-ширина шрифта (кол-во колонок пикселей).Шрифт 10х12 пикселей.
{ //то-есть выводя значения колонок строки,мы рисуем строку.
if(aaa & 0x8000) nlcd_Pixel(a+ax,b+by, BLACK);//проверяем нужный бит,если=1 зажигаем выбранный цвет
//и переходим к след-щему пикселю.
aaa ‹‹= 1; //подготавливаем к проверке следующий бит
} //вывод строки закончен,переходим к следующей
}
}
Кусок рабочего кода,шот написал,теперь сам не вьеду((.Вопрос по этой строке: if(aaa & 0x8000) nlcd_Pixel(a+ax,b+by, BLACK);
я передаю в функцию параметры с вычислением:a+ax,b+by.Причём переменная а и b обьявленны глобально.Глобальные переменные изменяются или при такой передаче работают их копии?По логике работы должны быть копии.Спасибо.
|