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

📄 text1.c

📁 15入15出继电器控制板
💻 C
字号:
/*--------------------------------------
芯片    :STC12C5A60S2
晶振    :11.0592MHZ
开发平台:KEIL
功能    :串口一或者串口二都可以通过上位机控制30路继电器
波特率  :9600BPS
日期    :11.5.19
注意    :下载完程序后请复位系统!!(切记!)
--------------------------------------*/

#include "STC12C5A60S2.h"
#include"jdq30.h"
#define  uchar unsigned char 
#define  uint  unsigned int 

uchar dat;


void init ()
{
   //串口2波特率
	TMOD = 0x20;	 			 //定时器1产生波特率

	SCON = 0x50;				 //方式1,8位数据,波特率可变

	TH1=TL1 = 0xfd;			 //波特率 9600

  //串口1波特率	
	S2CON = 0x50;				 //方式1,八位数据,可变波特率

	BRT=0XFD; 				 //设置波特率9600


	TR1=1;				 	 //启动定时器产生串口2波特率	

	AUXR=0x10;				 //启动串口1波特率发生器

	IP=0x00;				 //优先级默认

	EA=1; 				 //开总中断

	ES=1;					 //开串口1中断
	
	IE2=0x01;				 //开串口2中断

}

/*
       // 串口一 发送一个字符


void  uart1_txd(uchar x)
{
	SBUF = x;
}

//     串口二   发送一个字符
void  uart2_txd(uchar x)
{
	S2BUF = x;
}
*/


/*--------------------------------------
          延时函数
--------------------------------------*/
void delay ( uint t )
{
	uint i,j;

	for( i=0; i<t; i++)

	for( j=0; j<250; j++);
}


/*--------------------------------------
          主函数
--------------------------------------*/
void main()
{
  uchar k=10;
   P4SW|=0x20;		   //配置P4.5为IO口
   P4M0|=0x10;		   //配置P4.4为IO口
   P4M1|=0x10;
   P0=P1=P2=P3=0xff;
   P4|=0x30;
   init();//串口初始化
  
   while(1)
   {
	                      
	
	/********************************************************************
	                            接收数据判断函数
	*********************************************************************/
	switch(dat) //接收数据判断
	{
	
		case 'I': 
		          P0=P2=0;
				  P1&=0x0c;
				  P3&=0x03;
		          P4&=0xcf;
		          delay(200);
				  init();
			      break; //  全开
				  
		case 'i': 
		           P3=P1=P0=P2=0XFF;
		           P4|=0x30;
				   delay(k);	
				   break; //  全关
		
		case 'A': OUT1=0;delay(k);break;	   //  第一路开
		case 'B': OUT2=0;delay(k);break;	   //  第二路开
		case 'C': OUT3=0;delay(k);break;	   //  第三路开
		case 'D': OUT4=0;delay(k);break;	   //  第四路开
		case 'E': OUT5=0;delay(k);break;	   //  第五路开
		case 'F': OUT6=0;delay(k);break;	   //  第六路开
		case 'G': OUT7=0;delay(k);break;	   //  第七路开
		case 'H': OUT8=0;delay(k);break;	   //  第八路开
		case 'J': OUT9=0;delay(k);break;	   //  第九路开
		case 'K': OUT10=0;delay(k);break;	   //  第十路开
		case 'L': OUT11=0;delay(k);break;	   //  第十一路开
		case 'M': OUT12=0;delay(k);break;	   //  第十二路开
		case 'N': OUT13=0;delay(k);break;	   //  第十三路开		case 'O': OUT14=0;delay(k);break;	   //  第十四路开		case 'P': OUT15=0;delay(k);break;	   //  第十五路开
			
		case 'a': OUT1=1;delay(k);break;	   //  第一路关
		case 'b': OUT2=1;delay(k);break;	   //  第二路关
		case 'c': OUT3=1;delay(k);break;	   //  第三路关
		case 'd': OUT4=1;delay(k);break;	   //  第四路关
		case 'e': OUT5=1;delay(k);break;	   //  第五路关
		case 'f': OUT6=1;delay(k);break;	   //  第六路关
		case 'g': OUT7=1;delay(k);break;	   //  第七路关
		case 'h': OUT8=1;delay(k);break;	   //  第八路关
		case 'j': OUT9=1;delay(k);break;	   //  ...
		case 'k': OUT10=1;delay(k);break;	   //  ...
		case 'l': OUT11=1;delay(k);break;	   //  ...
		case 'm': OUT12=1;delay(k);break;	   //  ...
		case 'n': OUT13=1;delay(k);break;	   //  ...
		case 'o': OUT14=1;delay(k);break;	   //  ...
		case 'p': OUT15=1;delay(k);break;	   //  ...

	   default:break;					   //  跳出
   }

}	

}
/*--------------------------------------
         串口一 发送接收中断函数
--------------------------------------*/

void uart_isr()  interrupt 4 
{
	if( RI ) RI = 0;
	
	dat = SBUF;
	
	if( TI ) TI = 0;
}


/*--------------------------------------
      串口二    发送接收中断函数
--------------------------------------*/
void uart2_isr()  interrupt 8
{
   if( S2CON & 0x01 )
	 {
		S2CON &= ~0x01;
   		dat= S2BUF;
	 }

	if( S2CON & 0x02 )
	{
			S2CON &= ~0x02;
	}

}



















⌨️ 快捷键说明

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