int main() { uint8_t mData = 0; uint8_t i = 0; uint8_t mPkt[10] = {0}; uint8_t mCheck = 0; SystemInit(); //Clock and PLL configuration /* Setup/Map the controller pins for LCD operation, In 4bit mode D0-D3 are P_NC(Not Connected) RS RW EN D0 D1 D2 D3 D4 D5 D6 D7*/ LCD_SetUp(P2_6,P2_7,P2_8,P_NC,P_NC,P_NC,P_NC,P0_24,P0_25,P0_26,P0_27); /* Specify the LCD type(2x16, 4x16 etc) for initialization*/ LCD_Init(2,16); /* Initialize All the Four UARTs with different Baud rate */ UART0_Init(9600); UART1_Init(9600); LCD_Clear(); LCD_Printf("Welcome,\nAWS Network"); DELAY_sec(3); UART0_Printf("channel Zero at 9600 baud\n\r"); while (1){ // packet format: AA C0 PM25_Low PM25_High PM10_Low PM10_High 0 0 CRC AB mData = UART1_RxChar(); DELAY_ms(2); // wait until packet is received if (mData == 0xAA){ // head1 ok mPkt[0] = mData; mData = UART1_RxChar(); if (mData == 0xc0){ // head2 ok mPkt[1] = mData; mCheck = 0; for (i = 0; i < 6; i++){ // data recv and crc calc mPkt[i + 2] = UART1_RxChar(); DELAY_ms(2); mCheck += mPkt[i + 2]; } mPkt[8] = UART1_RxChar(); DELAY_ms(1); mPkt[9] = UART1_RxChar(); if (mCheck == mPkt[8]){ // crc ok // Serial2.flush(); UART1_Init(9600); Pm25 = (uint16_t)mPkt[2] | (uint16_t)(mPkt[3] << 8); Pm10 = (uint16_t)mPkt[4] | (uint16_t)(mPkt[5] << 8); finalPm25 = Pm25/10; finalPm10 = Pm10/10; UART0_Printf("PM2.5:%2f PM10:%2f\n\r",finalPm25,finalPm10); LCD_Clear(); LCD_Printf("PM2.5:%f",finalPm25); LCD_GoToNextLine(); LCD_Printf("PM10:%f",finalPm10); return; } } } } }