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

📄 star_ctl.c

📁 基于STC12C5402芯片的 串口发送的控制
💻 C
字号:
#include "set_port.h"
#include <REG51.h>

void Tmr_Init(void) ;
void port_Init(void);
void UART_Init(void); 
void T5_DO(void);
void send_mode(uint8 i);
void enable_send(void);

uint8	modesel=1;
uint8	T5COUT=0;
uint16	KEY_COUT=0;
uint16	t0_cout=0;
uint16	KEY2_COUT=0;
uint16	KEY3_COUT=0;
uint8	send_sig=0;
uint8	modeoff=0;

main()
{  
	UART_Init();
	port_Init();
	Tmr_Init();
	while(1)
	{if(T5COUT==1)
		T5_DO();
	}
}

void Tmr_Init(void) 
{IP=0;
 IPH=0;
 TMOD=0x21;	   //定时1自动重载,定时0 16位定时
 TCON=0;	   //启动定时1,定时0,启动定时1即启动波特率
 TH0=0xd4;
 TL0=0x0d; 		//定时0延迟5MS
 TH1=0xF9;
 TL1=0xF9;

 EA=1;
 ET0=1;
 ET1=0;
 ES=0;
 TR1=1;
 TR0=1;
}
void port_Init(void) 
{RT_CON=1;	 //控制485芯片发送信号
 P1M1=0XF0;	 //p1高四位推挽输出
 P1M0=0X00;
 P3M1=0;	 //P3准双向I/O
 P3M0=0;
 LED1=1;
 LED2=0;
 LED3=0;
 LED4=0;
 TX=1;
}
void UART_Init(void) 
{	SCON=0X70;
	AUXR=0;
}


void Timer0_Interrupt(void) interrupt 1
{   
   TH0=0xd4;
   TL0=0x0d;
   T5COUT++; 
}

void T5_DO(void)
{   
	T5COUT=0;

	if(KEY1==0&KEY2==1)
	{KEY_COUT=0;KEY2_COUT=0;}
	if(modeoff==1)
	 {KEY_COUT=0;KEY2_COUT=0;}
	if(KEY1==0)
	  KEY_COUT++;	
	else
		{if(KEY_COUT>20)
		 	{modesel++;
		 	 t0_cout=0;
		 	if(modesel==6)
		 		modesel=1;
			 send_sig=1;
			}		 	
			KEY_COUT=0;
		}

	/*if(KEY2==0)
	  KEY2_COUT++;	
	else
		{if(KEY2_COUT>20)
		 	{modesel--;
		 	 t0_cout=0;
		 	if(modesel==0)
		 		modesel=5;
			 send_sig=1;
			}		 	
			KEY2_COUT=0;
		}		*/

	if(KEY2==1)
	  KEY2_COUT++;	
	else
		{if(KEY2_COUT>20)
		 	{modesel++;
		 	 t0_cout=0;
		 	if(modesel==6)
		 		modesel=1;
			 send_sig=1;
			}		 	
			KEY2_COUT=0;
		}

	if(KEY3==1)
	  KEY3_COUT++;	
	else
		{if(KEY3_COUT>20)
		 	{ t0_cout=0;
		 	if(modeoff==1)
		 		modeoff=0;
			else
				modeoff=1;

			 send_sig=1;
			}		 	
			KEY3_COUT=0;
		}


	   enable_send();

	   t0_cout++;
	   if(t0_cout>580)
	   	{t0_cout=0;
		if(modeoff==0)
		   send_mode(0);
		
		}
}
void enable_send(void)
{if(send_sig)
       {		if(modeoff==1)
				 {LED1=0;LED2=0;LED3=0;LED4=0;send_mode(6);}
				 else
	   		{if(modesel==1)
		  		{LED1=1;LED2=0;LED3=0;LED4=0;send_mode(1);}
		  	else if(modesel==2)
		  		{LED1=0;LED2=1;LED3=0;LED4=0;send_mode(2);}
		  	else if(modesel==3)
		  		{LED1=0;LED2=0;LED3=1;LED4=0;send_mode(3);}
		  	else if(modesel==4)
		  		{LED1=0;LED2=0;LED3=0;LED4=1;send_mode(4);}
			else if(modesel==5)
		  		{LED1=1;LED2=1;LED3=1;LED4=1;send_mode(5);}
			 }

			send_sig=0;
		}

}
void send_mode(uint8 i)
{ ES=0;TI=0;SBUF=i;
	while(!TI)
	{;}
	TI=0;

	TX=1;

}
























⌨️ 快捷键说明

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