⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 tecwell 2835 motion function 初始化及設定值 4channel 輸入 motion ebable
💻 C
📖 第 1 页 / 共 2 页
字号:
// Others

PCON   = 0x00;
PCON2  = 0x00;
AUXR   = 0x00;
AUXR1  = 0x00;
AUXR2  = 0x00;
WDTCR  = 0x00;
STRETCH= 0x00;
EVRCR  = 0x00;

// ISP

//IFD    = 0x00;
//IFADRH = 0x00;
//IFADRL = 0x00;
//IFMT   = 0x00;
//SCMD   = 0x00;
//ISPCR  = 0x00;

}

//-----------------------------------------------------------------------------


//unsigned int interruptcnt;
//unsigned char sec32ms=0;
void timer0 (void) interrupt 1// using 2 
{
	static	unsigned char counter=0;


	//12mhz  --->  32hz
//	TH0 = (65536 -31250) / 256 ;//= 0x50
//	TL0 = (65536 -31250) % 256 ;//= 0x38

   //22.1184mhz --> 32hz
	TH0 = (65536 -57600) / 256 ;//= 0x50
	TL0 = (65536 -57600) % 256 ;//= 0x38

	////Rec_timout++;
	if(Rec_timout!=0)
	{
		Rec_timout++;
		if(Rec_timout==0)
			Rec_over = 1;
		////{
		////	Rec_timout = 0;
		////}
	}


	counter++;
	if(counter>=16)//0.5sec
	{
		counter=0;

		if(MotionSettingMode)
			IndexPartToggle = TRUE;


		//TranSwitch = 0xff;
		//if(!flag)
		//{
		//	flag=1;
		//	P34 = 1;
		//	P34 = 0;
		//	delay_50us();
		//	P34 = 1;
		//	///DEV_TW2835_Init();
		//	//main_111();
		//}
		
	}
//	UP32ms=1;
}


//unsigned int interruptcnt;
//unsigned char sec32ms=0;
void timer1 (void) interrupt 3 //sing 3 
{
//	static	char counter=0;

//	if(counter)
//	{
//	   	counter=0;
//		LED_R_on();

//	}
//	else
//	{
//	   	counter=1;
// 		LED_R_off();

//	}

//	TH0 = (65536 -31250) / 256 ;//= 0x50
//	TL0 = (65536 -31250) % 256 ;//= 0x38

//if (++interruptcnt == 4000) { /* count to 4000 */
//second++; /* second counter */
//interruptcnt = 0; /* clear int counter */
//	counter++;
//	if(counter>=64)
//	{
//		counter=0;
//		TranSwitch = 0xff;
//	}
}


void Uart_intr(void) interrupt 4
{

   	if(SCON & 0x01)
	{//receive down flag
     //clear flag
		Receiveff[RecCNT] = SBUF;  			
		SCON &= 0xfe; 
 		if(RecCNT>=32)
   			RecCNT=0xff;
		RecCNT++;
		Rec_timout = 0xf0;			
   	}
}

void init_timer0(void)
{


//	T2CON = 0x34;
//	SCON  = 0x70;				//0x50

//	TI = 0;						//Clear UART Tx and Rx	  /
//	RI = 0;
//	TCON = 0x34;
//	TMOD = 0x34;	

//	TF2 = 0;					
//	TR2 = 1;					//Enable Timer2


// 	TF0 = 0;					
		//************************************************
		//******	Set Timer0 for time interval	******
		//************************************************
	S_TMOD |= 0x01;					//Timer0 working in Mode 1

	//TH0=0x85;					//Timer0 working in Mode 1 and set 20m sec.
	//TL0=0xee;					//Working 12MHz 1/12M * 12 = 1us
								// 31.25ms = 1*31250
//	TH0 = (65536 -31250) / 256 ;//= 0x50
//	TL0 = (65536 -31250) % 256 ;//= 0x38

	//TH0 = (65536 -15625) / 256;
	//TL0 = (65536 -15625) % 256 ;

	 ///22.1184mhz
	 ///   22.1184*10^6/12 = 1843200   1843200/32=57600
	TH0 = (65536 -57600) / 256 ;//= 0x50
	TL0 = (65536 -57600) % 256 ;//= 0x38


  	IE = 0x82;//0X8A // EA, Timer0, Timer 1
   //砞﹚ Timer0 , Timer1 常琌 Mode1
   //TMOD= 0x11;




	TR0 = 1;					//Enable Timer 0	
	//TR1 = 1;
}


///////////////////////////////////////////////////
//
//	Function:Init_UART()
//  Initial UART at Mode 1 and use Timer1 at mode 2
//  We set buad rete is 4800
//  11MHz / 12 / 16 / 4800 = 11.93 => 12
//  TH = 256-12 = 0xf4
//
///////////////////////////////////////////////////
//
//  Initial UART2 at Mode 1 and use Timer1 at mode 2
//  We set buad rete is 4800
//  11MHz / 12 / 16 / 4800 = 11.93 => 12
//  S2BRT = 256-12 = 0xf4
//
///////////////////////////////////////////////////
void Init_Uart_12(void)
{
#if BAUDRATE == B_2400
//  11MHz / 12 / 32 / 2400 => 12
    S_TMOD |= 0x20;                                  //Set Timer1 Mode 2
    SCON=0x50;                                  //Set UART Mode 1
    TH1=0xf4;                                   //Set UART to operate at buad rate 9600
    TL1=0xf4;
    TR1 =1;                                     //Start Timer1
//Uart2
    S2CON=0x50;                                 //Set UART Mode 1
    S2BRT=0xf4;                                 //Set UART to operate at buad rate 9600
    AUXR2|=0x10;
#elif BAUDRATE == B_4800
//  11MHz / 12 / 16 / 4800 => 12
    S_TMOD |= 0x20;                                  //Set Timer1 Mode 2
    SCON=0x50;                                  //Set UART Mode 1
    PCON=0x80;                                  //Set SMOD = 1 (Double Baud rate)
    TH1=0xf4;                                   //Set UART to operate at buad rate 9600
    TL1=0xf4;
    TR1 =1;                                     //Start Timer1
//Uart2
    S2CON=0x50;                                 //Set UART Mode 1
    S2BRT=0xf4;                                 //Set UART to operate at buad rate 9600
    AUXR2=0x08;                                 //SMOD = 1,TX12 = 0 (/12)
    AUXR2|=0x10;                                //TR = 1
#elif BAUDRATE == B_9600
//  11MHz / 12 / 16 / 9600 => 6
    TMOD=0x20;                                  //Set Timer1 Mode 2
    SCON=0x50;                                  //Set UART Mode 1
    PCON=0x80;                                  //Set SMOD = 1 (Double Baud rate)
    TH1=0xfa;                                   //Set UART to operate at buad rate 9600
    TL1=0xfa;
    TR1 =1;                                     //Start Timer1
//Uart2
    S2CON=0x50;                                 //Set UART Mode 1
    S2BRT=0xfa;                                 //Set UART to operate at buad rate 9600
    AUXR2=0x08;                                 //SMOD = 1,TX12 = 0 (/12)
    AUXR2|=0x10;                                //TR = 1
#elif BAUDRATE == B_19200
//  11MHz / 32 / 19200 => 18
    S_TMOD |= 0x20;                                  //Set Timer1 Mode 2
    SCON=0x50;                                  //Set UART Mode 1
    TH1=0x10;//0xee;                                   //Set UART to operate at buad rate 9600
    TL1=0x10;//0xee;   
    TR1 =1;                                     //Start Timer1
//Uart2
//    S2CON=0x50;                                 //Set UART Mode 1
//    S2BRT=0xee;                                 //Set UART to operate at buad rate 9600
//    AUXR2=0x44;                                 //T1X12 = S2TX12 = 1
//    AUXR2|=0x10;                                //TR = 1
#elif BAUDRATE == B_38400
//  11MHz / 16 / 38400 => 18
    S_TMOD |= 0x20;                                  //Set Timer1 Mode 2
    SCON=0x50;                                  //Set UART Mode 1
    PCON=0x80;                                  //Set SMOD = 1 (Double Baud rate)
    TH1=0xee;                                   //Set UART to operate at buad rate 9600
    TL1=0xee;
    TR1 =1;                                     //Start Timer1
//Uart2
    S2CON=0x50;                                 //Set UART Mode 1
    S2BRT=0xee;                                 //Set UART to operate at buad rate 9600
    AUXR2=0x4c;                                 //SMOD = 1,T1X12 = S2TX12 = 1
    AUXR2|=0x10;                                //TR = 1
#elif BAUDRATE == B_57600
//  11MHz / 16 / 57600 => 12
    S_TMOD |= 0x20;                                  //Set Timer1 Mode 2
    SCON=0x50;                                  //Set UART Mode 1
    PCON=0x80;                                  //Set SMOD = 1 (Double Baud rate)
    TH1=0xf4;                                   //Set UART to operate at buad rate 9600
    TL1=0xf4;
    TR1 =1;                                     //Start Timer1
//Uart2
    S2CON=0x50;                                 //Set UART Mode 1
    S2BRT=0xf4;                                 //Set UART to operate at buad rate 9600
    AUXR2=0x4c;                                 //SMOD = 1,T1X12 = S2TX12 = 1
    AUXR2|=0x10;                                //TR = 1
#elif BAUDRATE == B_115200
//  11MHz / 16 / 115200 => 6
    S_TMOD |= 0x20;                                  //Set Timer1 Mode 2
    SCON=0x50;                                  //Set UART Mode 1
    PCON=0x80;                                  //Set SMOD = 1 (Double Baud rate)
    TH1=0xfa;    //0xfa                               //Set UART to operate at buad rate 9600
    TL1=0xfa;	 //0xfa
    TR1 =1;                                     //Start Timer1
//Uart2
    S2CON=0x50;                                 //Set UART Mode 1
    S2BRT=0xfa;                                 //Set UART to operate at buad rate 9600
    AUXR2=0x4c;                                 //SMOD = 1,T1X12 = S2TX12 = 1
    AUXR2|=0x10;                                //TR = 1
#elif BAUDRATE == B_230400
//  11MHz / 16 / 230400 => 3
    S_TMOD |= 0x20;                                  //Set Timer1 Mode 2
    SCON=0x50;                                  //Set UART Mode 1
    PCON=0x80;                                  //Set SMOD = 1 (Double Baud rate)
    TH1=0xfd;                                   //Set UART to operate at buad rate 9600
    TL1=0xfd;
    TR1 =1;                                     //Start Timer1
//Uart2
    S2CON=0x50;                                 //Set UART Mode 1
    S2BRT=0xfd;                                 //Set UART to operate at buad rate 9600
    AUXR2=0x4c;                                 //SMOD = 1,T1X12 = S2TX12 = 1
    AUXR2|=0x10;                                //TR = 1
#endif
	//TEST
}

void Transbuffclr(void)
{
   char i;

   for(i=0;i<32;i++)
   		Transmitbuff[i]=0;  
}

void TranSmitNow(void)
{
   char i;

   if(TranSwitch!=0)
   {
	   for(i=0;i<32;i++)
	   {
			SBUF = 	Transmitbuff[i];   	
	        while(TI == 0){}    //Write transmitting has been finished
	        TI = 0;

			if(i >= 1)
			{
				if( Transmitbuff[i]==0xff)
				{
					///Transbuffclr();	
					TranSwitch = 0x00;		
					break;
				}
			}


	   }
   }
}

void Receivebuffclr(void)
{
   char i;

   for(i=0;i<32;i++)
   		Receiveff[i]=0;  

}

void ReceiveNow(void)
{
   char i;
   char t_buf[11]={ 0x55,0xaa,0,'o','k',0,0,0,0,0 ,0xff};

	if(Rec_over==1)
	{
		if((Receiveff[0] == 0x55) && (Receiveff[1] == 0xaa) && (Receiveff[10] == 0xff))
		{		
			//send ok to  sender
			Transbuffclr();
			TranSwitch = 0xff;
			RecFUNWK = t_buf[2] = Receiveff[2];
 			for(i=0;i<11;i++)
   				Transmitbuff[i] = t_buf[i];  
		}
		RecCNT = 0;
		Receivebuffclr();
		Rec_over=0;	
	}
}

 
void R_FUN_WORK(void)
{
	if(RecFUNWK != 0)
	{
		if(RecFUNWK == 1)
		{
			//initial into first screen
		  	//Ap_channel_select(1);
			P34 = 1;
			P34 = 0;
			delay_50us();
			P34 = 1;
			main_111();
		}
		else if(RecFUNWK == 2)
		{
			//Ap_channel_select(2);
			key_2();

		}
		else if(RecFUNWK == 3)
		{
		   	//Ap_channel_select(3);
			key_3();
		}
		else if(RecFUNWK == 4)
		{
			//Ap_channel_select(4);
			key_4();
		}
		else if(RecFUNWK == 5)
		{
			//Ap_channel_select(5);
			key_5();
		}
		else if(RecFUNWK == 6)
		{
		   	//Ap_channel_select(3);
			key_6();
		}
		else if(RecFUNWK == 7)
		{
			//Ap_channel_select(4);
			key_7();
		}
		else if(RecFUNWK == 8)
		{
			//Ap_channel_select(5);
			key_8();
		}	
		else if(RecFUNWK == 9)
		{
			//Ap_channel_select(5);
			key_9();
		}	
		else if(RecFUNWK == 0x0a)
		{
			//Ap_channel_select(5);
			key_10();
		}						
		else if(RecFUNWK == 0x0b)
		{
			key_11();
		}
		else if(RecFUNWK == 0x0c)
		{
			key_12();
		}
		else if(RecFUNWK == 0x0d)
		{
			key_13();
			//{
			//	unsigned char _read_value_=0;
			//
			//	ReadAsicByte(DVC_PG1,0x5f,(unsigned char *)&_read_value_);
			//	RecFUNWK = 0;
			//}

		}


		RecFUNWK = 0;			
	}
}


void IRQ_CHECK(void)
{
	if(!P16)///LOW TRIGGER AND TEST
	{
		if(Flg_MotionStart == TRUE)
		{
			Flg_MotionStart = FALSE;	
	   		key_2();
		}
	}
}



void InitComms(void)
{
//  initialize communication port
#if 0	//11.059
	S_TMOD = (S_TMOD & 0x0F)|0x20;	/* 砞﹚ Timer 1 to MODE #2 */

	SCON = 0x50;                 	/* 砞﹚ Serial Mode 1 */

	TL1 = 0xfd;                   	/* TH1=TL1 = 256 - (freq / (32 * 12 * BAUD)) */
	TH1 = 0xfd;                   	/* BAUD RATE = 9600 ; ㄏノ

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -