/********************************************************************* * * LCD_X_WriteM1_16 * * Purpose: * Write multiple bytes to controller, with A0 = 1 */ void LCD_X_WriteM1_16(U16 * pData, int NumWords) { U8 data[2]; LCD_X_ClrCS(); data[0] = 0x72; // Start + WR Data LCD_X_WriteM(data, 1); for (; NumWords; NumWords--) { data[0] = (U8)(*pData >> 8); data[1] = (U8)(*pData); LCD_X_WriteM(data, 2); pData++; } LCD_X_SetCS(); }
/********************************************************************* * * LCD_X_ReadM1_16 * * Purpose: * Read multiple bytes from controller, with A0 = 1 */ void LCD_X_ReadM1_16(U16 * pData, int NumWords) { U8 data[5]; LCD_X_ClrCS(); data[0] = 0x73; // Start + RD Data LCD_X_WriteM(data, 1); LCD_X_ReadM (data, 5); // Dummy RD for (; NumWords; NumWords--) { LCD_X_ReadM(data, 2); *pData = (data[0] << 8) | data[1]; pData++; } LCD_X_SetCS(); }
/********************************************************************* * * LCD_X_ReadM1_16 * * Purpose: * Read multiple bytes from controller, with A0 = 1 */ void LCD_X_ReadM1_16(U16 * pData, int NumWords) { U8 data[4]; U32 v; if (NumWords != 4) return; LCD_X_ClrCS(); data[0] = 0x73; // Start + RD Data LCD_X_WriteM(data, 1); LCD_X_ReadM (data, 4); v = (data[1] << 16) | (data[2] << 8) | data[3]; *pData++ = (v & 0x03F000) >> 10; *pData++ = (v & 0xFC0000) >> 16; *pData++ = (v & 0x000FC0) >> 4; LCD_X_SetCS(); }