Преобразование типов при передаче переменных в процедуру - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть код
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;
}
Почему то l и h неправильно передаются в функцию GLCD_WriteData. Но если написать GLCD_WriteData(0x1F), то все работает

Решение задачи: «Преобразование типов при передаче переменных в процедуру»

textual
Листинг программы
unsigned char l=line&0x00FF;
unsigned char h=((line&0xFF00)>>8);

Объяснение кода листинга программы

  1. Переменная line содержит значение, которое будет использоваться в коде.
  2. Результат операции line&0x00FF сохраняется в переменной l.
  3. Результат операции ((line&0xFF00)>>8) сохраняется в переменной h.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.455 из 5
Похожие ответы