void main(void) { // rst=0; nop(); nop(); nop(); // rst=1; textsize=graphicsize=size_lie/8*size_hang;// textsize_l=textsize;// textsize_h=textsize>>8;// graphicsize_h=graphicsize>>8; graphicsize_l=graphicsize; text_startaddr=0x0000; text_startaddr_h=text_startaddr>>8;// text_startaddr_l=text_startaddr; graphic_startaddr=text_startaddr+textsize;// graphic_startaddr_h=graphic_startaddr>>8;// graphic_startaddr_l=graphic_startaddr; double_byte_parameter(text_startaddr_l,text_startaddr_h,0x40);//TEXT double_byte_parameter((size_lie/8),0x00,0x41); double_byte_parameter(graphic_startaddr_l,graphic_startaddr_h,0x42); double_byte_parameter((size_lie/8),0x00,0x43); no_parameter(0x80);//TEXT OR GRAPHIC no_parameter(0xa3);// CGRAM(); while(1) { all_display(1,0x00); no_parameter(0x98);//TEXT OFF ,GRAPHIC ON display_map(&sch); delay1s(); display_8HO(&graphich8o); delay1s(); no_parameter(0x94); //TEXT ON,GRAPHIC OFF all_display(0,0x00); displayHZ(); delay1s(); all_display(0,0x00); display8hotext(); delay1s(); } }
void LCD_SC_DisplayRemainGas(void) { uint32_t gas = 5; uint8_t gas_bcd[6] = {0}; gas = DataMem_GetRemainGas(); Covertu32To6bitBCD(gas,gas_bcd); if(!lcd_is_on) { LCD_SC_Init(); lcd_is_on = 1; } disp_icon |= DISP_STERE_ICON; lcd_disp_info.is_disp_digits = 1; lcd_disp_info.is_disp_dot = 1; lcd_disp_info.is_disp_icon = 1; lcd_disp_info.p_disp_contex = gas_bcd; lcd_disp_info.disp_contex_len = sizeof(gas_bcd); lcd_disp_info.disp_dot_num = 4; lcd_disp_info.p_disp_icon = &disp_icon; LCD_SC_Init(); LCD_SC_Display(&lcd_disp_info); LCD_SC_DoDisp(); delay1s(10); disp_icon &= 0; memset(&lcd_disp_info, 0, sizeof(lcd_disp_info_t)); LCD_SC_Display(&lcd_disp_info); /* Initialize the LCD */ LCD_Cmd(DISABLE); LCD_DeInit(); }
//============================================================================= // //============================================================================= void MonitorMCU(void) { BYTE ret, i, j; BYTE idx; BYTE argv_num1, argv_num2; //, argv_num3; //if ( argc>2) { BKFYI: It will hurt a speed // argv_num1 = a2h( argv[2] ); // if ( argc>3 ) { // argv_num2 = a2h( argv[3] ); // if (argc > 4) { // argv_num3 = a2h( argv[4] ); // } // } //} //---------------------- Write SFR ----------------------- if( !stricmp( argv[1], "Ws" ) ) { if( argc < 4 ) { Printf(" ----> Missing parameter !!!"); return; } argv_num1 = a2h( argv[2] ); argv_num2 = a2h( argv[3] ); ret = WriteSFR(argv_num1, argv_num2); if( echo ) { Printf("\nMCU SFR Write: %02bx=%02bx (%02bx) ", argv_num1, argv_num2, ret); for(i=0; i<8; i++) { if( ret & 0x80 ) Puts("1"); else Puts("0"); ret <<=1; } } } //---------------------- Read SFR ------------------------ else if( !stricmp( argv[1], "Rs" ) ) { if( argc < 3 ) { Printf(" ----> Missing parameter !!!"); return; } argv_num1 = a2h( argv[2] ); ret = ReadSFR(argv_num1); if( echo ) { Printf("\nMCU SFR Read: %02bx=%02bx ", argv_num1, ret); for(i=0; i<8; i++) { if( ret & 0x80 ) Puts("1"); else Puts("0"); ret <<=1; } } } //---------------------- Dump SFR ------------------------ else if( !stricmp( argv[1], "Ds" ) ) { Printf("\nDump DP8051 SFR"); for (j=0x8; j<=0x0f; j++) { Printf("\nSFR %02bx: ", j*0x10); for(i=0; i<8; i++) Printf("%02bx ", ReadSFR(j*0x10+i) ); Printf("- "); for(; i<16; i++) Printf("%02bx ", ReadSFR(j*0x10+i) ); } } //---------------------- Bitwise SFR control--------------------- else if( !stricmp( argv[1], "Bs" ) ) { Printf("\nSorry!!"); } //---------------------- Dump SFR map--------------------- else if( !stricmp( argv[1], "SFR" ) ) { BYTE len; DWORD UsedTime; UsedTime = SystemClock; Printf("\nDump DP80390 SFR"); for(j=0x00; j < 0x80; j++) { idx = j+0x80; for(i=0; i < 0x80; i++) { if(SFR_map[i].idx == idx) break; //success if(SFR_map[i].idx == 0) { i = 0x80; break; //fail } } if((j&0x07) == 0) Puts("\n"); if(i != 0x80) { Printf("%02bx:%05s",SFR_map[i].idx, SFR_map[i].name); len = TWstrlen(SFR_map[i].name); len = 5-len; //max 5. for(i=0; i < len; i++) Puts(" "); Printf(":%02bx ",ReadSFR(idx)); } else { //Printf("--:-----:--_"); //Printf(" "); Printf(" ..... "); } } UsedTime = SystemClock - UsedTime; Printf("\nUsedTime:%ld.%ldsec", UsedTime/100, UsedTime%100 ); } //---------------------- Dump xdata ---------------------- else if( !stricmp( argv[1], "Wx" ) ) { WORD addr; if( argc < 4 ) { Printf(" ----> Missing parameter !!!"); return; } addr = a2h( argv[2] ); argv_num2 = a2h( argv[3] ); *(BYTE xdata *)(addr) = argv_num2; ret = *(BYTE xdata *)(addr); if( echo ) { Printf("\nMCU XDATA Write: %04x=%02bx (%02bx) ", addr, argv_num2, ret); } } //---------------------- Dump xdata ---------------------- else if( !stricmp( argv[1], "Rx" ) ) { WORD addr; if( argc < 3 ) { Printf(" ----> Missing parameter !!!"); return; } addr = a2h(argv[2]); ret = *(BYTE xdata *)(addr); if( echo ) { Printf("\nMCU XDATA Read: %04x=%02bx ", addr, ret); } } //---------------------- Dump xdata ---------------------- else if( !stricmp( argv[1], "Dx" ) ) { //data BYTE xdata *osddata = (BYTE xdata *)0xc002; WORD addr=0x0000, len=0x100; if( argc>=3 ) addr = a2h(argv[2]); if( argc>=4 ) len = a2h(argv[3]); Printf("\nDump DP8051 XDATA 0x%04x ", addr); for (j=0; j<len/0x10; j++) { Printf("\nXDATA %04x: ", (WORD)(addr+j*0x10) ); for(i=0; i<8; i++) Printf("%02bx ", *(BYTE xdata *)(addr + j*0x10+i) ); Printf("- "); for(; i<16; i++) Printf("%02bx ", *(BYTE xdata *)(addr + j*0x10+i) ); } } //---------------------- Enable WDT ------------------------ #if defined(SUPPORT_WATCHDOG) || defined(DEBUG_WATCHDOG) else if( !stricmp( argv[1], "WDT" ) ) { if(argc > 2) { if( argv[2][0]=='1' ) { BYTE mode; if(argc > 3) mode=a2h(argv[3]); else mode = 0; EnableWatchdog(mode); Printf("\nWatchdog Timer is enabled. mode:%bx", mode); } else if( argv[2][0]=='2' ) { Puts("Watchdog test...."); RestartWatchdog(); Puts("start...."); SFR_EWDI = 0; delay1s(1,__LINE__); delay1s(1,__LINE__); delay1s(1,__LINE__); delay1s(1,__LINE__); delay1s(1,__LINE__); delay1s(1,__LINE__); delay1s(1,__LINE__); //system reset before you here. Puts("..FAIL"); } else { DisableWatchdog(); Printf("\nWatchdog Timer is disabled."); } } else { Puts("\nWatchdog "); if(SFR_WDCON & 0x02) Puts("On"); else Puts("Off"); #ifdef SUPPORT_WATCHDOG Puts(" with SUPPORT_WATCH"); #endif #ifdef DEBUG_WATCHDOG Puts(" with DEBUG_WATCH"); #endif } } #endif //---------------------- Enable INT ------------------------ else if( !stricmp( argv[1], "IE" ) ) { if ( argc < 3 ) { Puts("\nMCU IE n 1/0 - MCU interrupt en/disable #n "); return; } argv_num1 = a2h( argv[2] ); if( argv[3][0]=='1' ) { EnableExtInterrupt( argv_num1 ); Printf("\nInterrupt #%d is enabled.", argv_num1); } else { DisableExtInterrupt( argv_num1 ); Printf("\nInterrupt #%d is disabled.", argv_num1); } } //---------------------- Extended INT ------------------------ else if( !stricmp( argv[1], "DE" ) ) { Printf("\nEnable DE-end Interrupt"); SFR_IE1 = 0; // Clear Pending Interrupt SFR_EX1 = 1; // Enable Interrupt } //---------------------- Extended INT ------------------------ else if( !stricmp( argv[1], "EI" ) ) { extern DWORD ExtIntCount; if( argc < 3 ) { Printf("\nMCU extend Interrupt Status: %02bx, count: %ld", EXINT_STATUS, ExtIntCount ); ExtIntCount = 0; #ifdef DEBUG_ISR Printf(" MCU %04x", MCU_INT_STATUS); MCU_INT_STATUS = 0; #endif return; } argv_num1 = a2h( argv[2] ); EXINT_STATUS &= argv_num1; } //---------------------- INTERRUPT Counter--------------------- #ifdef DEBUG_ISR else if( !stricmp( argv[1], "INTC" ) ) { BYTE i; WORD counter; for(i=0; i <= 20; i++) { SFR_EA=0; counter = INTR_counter[i]; //read INTR_counter[i]=0; //clear SFR_EA=1; if(counter) { Printf("\n%02bd:%d",i,counter); } } } #endif #ifdef DEBUG_UART else if( !stricmp( argv[1], "UART" ) ) DEBUG_dump_uart0(); #if 0 { BYTE i; if(UART0_OVERFLOW_counter) { Printf("\nUART0 Overflow:%bd",UART0_OVERFLOW_counter); UART0_OVERFLOW_counter = 0; //clear } if(UART0_MAX_counter) { Printf("\nUART0 Max:%bd",UART0_MAX_counter); UART0_MAX_counter = 0; //clear } Printf("\nRS_buf[%bd], RS_in:%bd RS_out:%bd",RS_BUF_MAX,RS_in,RS_out); for(i=0; i < RS_BUF_MAX; i++) Printf(" %02bx", RS_buf[i]); } #endif #endif //---------------------- Interrupt Help ------------------------ else if( !stricmp( argv[1], "INT" ) ) {
void main() { delay1s(); AUXR = AUXR|0x40; // T1, 1T Mode // IE2 |= ESPI; EXTI0_Init(); //4432的中断设置 UART_Init(); //波特率9600 SPI_Init(MASTER); delay1s(); SI4432_Init(); SI4432_SetRxMode(); //接收模式 ADC_Init(AFPORT_P1_4); delay1s(); #if MULTI_SENSOR SendString("ROMID Search...\r\n"); SendROMID(DS18B20_SearchRomID()); SendString("\r\n"); //调试信息时候用 #endif //----------------------------------------------------- EA = 1; //注意:外设初始化完再开中断! while(1) { if(Trans_RevPakFin) { Trans_RevPakFin = 0; //液位采集计算 ADC_STARTCOV(ADC_CH4,ADC_SPEED_540T); while(!(g_sensor_sta1&PRS_RDY)); //等待压力采集完成 //温度采集计算 // TemperDatHandle(); //液位开关采集 sensor_data.possw = POSSW; //流量开关采集 // sensor_data.flow = FLOW; //打包 if(1==Pak_Handle()) { g_sensor_sta1 = 0; //清除所有传感器标志位 LED2 = 0; SendString("valid cmd received.\r\n"); delay200ms(); LED2 = 1; } } //********************code for test************************************** // DATA_Cmd_ACK(); // LED2 = 0; // SendString("valid cmd received.\r\n"); // delay200ms(); // LED2 = 1; // ADC_STARTCOV(ADC_CH4,ADC_SPEED_540T); // while(!(g_sensor_sta1&PRS_RDY)); //等待压力采集完成 // sprintf("level: %d:\r\n",); // SendString("level: %s:\r\n"); // sensor_data.flow = FLOW; // SendString("flow data:\r\n"); // SendByteASCII(sensor_data.flow); // SendString("\r\n"); // delay1s(); // delay1s(); //********************end of code for test************************************** }//end of while }//end of main
/** * @brief Main program. * @param None * @retval None */ void main(void) { CLK_Config(); FlashInit(); sim(); // disable interrupts GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast); GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast); GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast); GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast); GPIO_Init(GPIOE, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast); GPIO_Init(GPIOF, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast); GPIO_Init(GPIOG, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast); delay1s(5); #ifdef DEBUG AppTrace_Init(); printf("\r\nSTM8L152 Start ...\r\n"); #endif LED_Init(); LED1_ON(); scheduler_init(); // Build count init event count_event.eCount_event = COUNT_INIT; app_sched_event_put(&count_event,sizeof(count_event),count_event_handler); // Build key init event key_event.eKey_event = KEY_INIT; app_sched_event_put(&key_event,sizeof(key_event),key_event_handler); // Build the valve standby event valve_event.eValve_event = VALVE_STANDBY_EVENT; app_sched_event_put(&valve_event,sizeof(valve_event),valve_event_handler); // Build the LCD init event lcd_event.eLcd_event = LCD_INIT; app_sched_event_put(&lcd_event,sizeof(lcd_event),lcd_event_handler); // Build the beeper init event beeper_event.eBeeper_event = BEEPER_INIT; app_sched_event_put(&beeper_event,sizeof(beeper_event),beeper_event_handler); // Build the cc1120 Init event cc112x_event.eCC112x_event = CC112X_INIT_EVENT; app_sched_event_put(&cc112x_event,sizeof(cc112x_event),cc112x_event_handler); // Build the IC card Init event ic_card_event.eIC_event = IC_CARD_INIT; app_sched_event_put(&ic_card_event,sizeof(ic_card_event),ic_event_handler); // Build the IC card Init event battery_event.eBattery_event = INT_BATTERY_EVENT; app_sched_event_put(&battery_event,sizeof(battery_event),battery_event_handler); // enable interrupts rim(); LED1_OFF(); // Infinite loop while (1) { app_sched_execute(); app_evt_wait(); } }
/*********************************************************************** * @brief Handles the event for LCD displaying. * @param None * @retval None ************************************************************************/ void lcd_event_handler(void * p_event_data, uint16_t event_size) { lcd_event_t * lcd_event_tmp = p_event_data; uint8_t temp[6] = {8,8,8,8,5,6}; uint32_t u32temp = 654321; switch(lcd_event_tmp->eLcd_event) { case LCD_INIT: #ifdef LCD_DEBUG printf("LCD_INIT ...\r\n"); #endif LCD_SC_Init_A(); LCD_SC_DeInit(); break; case lCD_HANDLE: #ifdef LCD_DEBUG printf("lCD_HANDLE ...\r\n"); #endif if(!lcd_is_on) { LCD_SC_Init(); lcd_is_on = 1; } disp_icon |= (DISP_VALVE_CLOSE_ICON | DISP_STERE_ICON); lcd_disp_info.is_disp_digits = 1; lcd_disp_info.is_disp_dot = 1; lcd_disp_info.is_disp_icon = 1; lcd_disp_info.p_disp_contex = temp; lcd_disp_info.disp_contex_len = sizeof(temp); lcd_disp_info.disp_dot_num = 2; lcd_disp_info.p_disp_icon = &disp_icon; LCD_SC_Init(); LCD_SC_Display(&lcd_disp_info); LCD_SC_DoDisp(); delay1s(2); disp_icon &= 0; memset(&lcd_disp_info, 0, sizeof(lcd_disp_info_t)); LCD_SC_Display(&lcd_disp_info); /* Initialize the LCD */ LCD_Cmd(DISABLE); LCD_DeInit(); lcd_event.eLcd_event = LCD_DEINIT; app_sched_event_put(&lcd_event,sizeof(lcd_event),lcd_event_handler); break; case LCD_DISPLAY_REMAIN_GAS: #ifdef LCD_DEBUG printf("LCD_DISPLAY_REMAIN_GAS ...\r\n"); #endif LCD_SC_DisplayRemainGas(); lcd_event.eLcd_event = LCD_DEINIT; app_sched_event_put(&lcd_event,sizeof(lcd_event),lcd_event_handler); break; case LCD_DEINIT: #ifdef LCD_DEBUG printf("LCD_DEINIT ...\r\n"); #endif /* Initialize the LCD */ LCD_Cmd(DISABLE); LCD_DeInit(); LCD_SC_DeInit(); lcd_is_on = 0; break; default: break; } }