示例#1
0
/*****************************************************************
功能:初始化自动清扫
*****************************************************************/
void Init_Sweep(void)
{					 
    /******初始化显示***********/
    clr_display();
    Dis_On = TRUE;            //显示标志。
    Dis_PrOn = TRUE; 			//预约天数亮
    Dis_HourOn = TRUE; 		//小时亮
    Dis_MinuteOn = TRUE; 		//分钟亮
    Dis_ColOn = TRUE; 		//时间点亮
    Dis_WeekOn = TRUE; 		//星期亮
    Dis_SpeedOn = TRUE; 		//速度亮
    Dis_PowerOn = TRUE; 		//电池图标亮
    Dis_ChargeOn = FALSE ;		//充电图标亮
	Dis_ColGlint = TRUE ;	    //显示时间点为闪烁
	Dis_AuGlint = TRUE;
	
	Dis_SpeedGo = TRUE; 
	/******初始化设置的值********************/
	gsv_work_mode.work_mode = SWEEP;	 //工作模式为清扫
	mode.mode = SWEEP;
	clr_ram();
    Enable_Sweep();
	Enable_earth();
	Enable_wall();
	enable_hwincept();//允许红外接收电源
	Reset_Speed_Send();  //允许红外发送  
	Display_Real();
	Init_Action();
	mode.step = 0xfe;
	WriteWorkState();
}
void main(){ 
	
	Setup_IOports();
	atod_init();
	_delay(200);
	lcd_init();
	Serial_Init();
	Timer1_Init();
	enableInterrupt();

	clr_display();
	printf("Body Temperature ");
	position(2,1);
	printf(" and Heart Rate  ");
	__delay_ms(5000);
		
	clr_display();
	
	while(1){				
		switch (Mode){
			case  0 :			
				a2d_read();				
				__delay_ms(100);
				check_pc();
			break;
			case 1 :			
				Tx_Control = 1;
				Serial_Print( "*#DREQ=123" );
				Serial_NewLine();
				Tx_Control = 0;		
			break;
			case 2 :
				Tx_Control = 1;
				Serial_Print( "*#123=" );				
				Serial_NewLine();				
				Tx_Control = 0;	
			break;
			case 3 :
				Tx_Control = 1;				
				Serial_Print( "*#123=" );							
				Tx_Control = 0;	
				
				position(1,1);
				printf("Data request... ");
				position(2,1);
				printf("                ");
							
			break;
			case 4 :
				Tx_Control = 1;				
				Serial_NewLine();
				Tx_Control = 0;	
								
			case 5 :
				clr_display();			
			break;
			default:
			
			break;
		}	
	}
}
void interrupt isr(){	
	if(TMR1IF==1){	
		msecond ++;
		if(msecond == 10){
			second ++;
			//enableInterrupt();
					
			LED1 = !LED1;
			msecond = 0;
			if( second == 60){
				minute ++;
				lcd_init();					
				clr_display();			
				second = 0;
				/*~~~~~ write data to eeprom for time period ~~~~~*/
				int x;
				x = minute%time_period ;
				if ( x == 0){
					//eeprom_temp();
					//nop(); 
				}				
				/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
		
				if( minute == 60){
					minute = 0;
					hour ++;
					if( hour == 24)	hour == 0;
				}
			}
		}		
		TMR1IF	= 0;
		TMR1L	= 0xB0;
		TMR1H	= 0x3C;
	} 
	if( RCIF == 1){		
		if ((FERR == 0) && (OERR == 0))		// no error
		{						
			wtmp = RCREG;			
			if( RCREG=='*' || j > BUFFER_SIZE-1 ){
				j=0;
			}
			buffer[j] = RCREG;
			j ++;					
     	}
     	else // error occoured
	    {              
	          CREN = 0;	// clear error
	          FERR = 0;
	          wtmp = RCREG;
	          wtmp = RCREG;
			  CREN = 1;	// enable again
	     } 
	     RCIF = 0;   
	}	
   	if(OERR == 1)
	{
 		CREN = 0;	// clear error
     	//RCSTA.2 = 0;	//Clear framming error
        wtmp = RCREG;
        wtmp = RCREG;
		CREN = 1;	// enable again
	}
	
}