Преобразование типов при передаче переменных в процедуру - C (СИ)
Формулировка задачи:
Есть код
Почему то l и h неправильно передаются в функцию GLCD_WriteData.
Но если написать GLCD_WriteData(0x1F), то все работает
void GLCD_WriteData(unsigned char dataToWrite)
{
SED1335_DATA_PORT = dataToWrite;
SED1335_DATA_DIR = 0xFF;
SED1335_CONTROL_PORT &= ~(SED1335_CS | SED1335_A0 | SED1335_WR);
asm("nop");
SED1335_CONTROL_PORT |= (SED1335_CS | SED1335_A0 | SED1335_WR);
}
void Set_X_Y(int x,int y)
{
//unsigned char l,h=0;
unsigned int line=0;
line=x*240+y;
unsigned char l=line&0x00FF;
unsigned char h=((line&0xFF00)>>8);
GLCD_WriteCommand(0x46);
GLCD_WriteData(l);
GLCD_WriteData(h);
POS_X=x;
POS_Y=y;
}Решение задачи: «Преобразование типов при передаче переменных в процедуру»
textual
Листинг программы
unsigned char l=line&0x00FF; unsigned char h=((line&0xFF00)>>8);
Объяснение кода листинга программы
- Переменная
lineсодержит значение, которое будет использоваться в коде. - Результат операции
line&0x00FFсохраняется в переменнойl. - Результат операции
((line&0xFF00)>>8)сохраняется в переменнойh.