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

📄 8-

📁 8路串口继电器
💻
字号:
#include "reg52.h"
sfr AUXR=0X8E;
sbit k1=P1^7;
sbit k2=P1^6;
sbit k3=P1^5;
sbit k4=P1^4;
sbit k5=P3^2;
sbit k6=P3^3;
sbit k7=P3^4;
sbit k8=P3^5;
#define uchar unsigned char
#define uint unsigned int
uchar Tdata[]={"a11111111c"};
uchar Rdata[]={"a11111111c"};
uchar a,b,c,d,e,f,g,h;
void UartInit(void);
void relay(void);
main()
{
	uchar i;
	P1|=0xf0;
	P3|=0x3c;
	a=1,b=1,c=1,d=1;
	e=1,f=1,g=1,h=1;
	UartInit();
	EA=1;
	while(1)
	{
		for(i=0;i<10;i++)
		{
			ES=0;
			SBUF=Tdata[i];
			while(!TI);
			TI=0;
			ES=1;
		}
		relay();
	}
}

void relay(void)
{
	if((Rdata[0]=='a')&(Rdata[9]=='c'))
	{
		if(Rdata[1]=='0')
			a=0,k1=0;
		if(Rdata[1]=='1')
		 a=1,k1=1;
		if(Rdata[2]=='0')
			b=0,k2=0;
		if(Rdata[2]=='1')
		 b=1,k2=1;
		if(Rdata[3]=='0')
			c=0,k3=0;
		if(Rdata[3]=='1')
		 	c=1,k3=1;
		if(Rdata[4]=='0')
			d=0,k4=0;
		if(Rdata[4]=='1')
			 d=1,k4=1;
		if(Rdata[5]=='0')
			e=0,k5=0;
		if(Rdata[5]=='1')
			 e=1,k5=1;	
		if(Rdata[6]=='0')
			f=0,k6=0;
		if(Rdata[6]=='1')
			 f=1,k6=1;	
		if(Rdata[7]=='0')
			g=0,k7=0;
		if(Rdata[7]=='1')
			 g=1,k7=1;	
		if(Rdata[8]=='0')
			h=0,k8=0;
		if(Rdata[8]=='1')
			 h=1,k8=1;		
	}
	Tdata[1]=d+'0';
	Tdata[2]=c+'0';
	Tdata[3]=b+'0';
	Tdata[4]=a+'0';
	Tdata[5]=e+'0';
	Tdata[6]=f+'0';
	Tdata[7]=g+'0';
	Tdata[8]=h+'0';
}
void UartInit(void)		//9600bps@11.0592MHz
{
	PCON &= 0x7f;		//波特率不倍速
	SCON = 0x50;		//8位数据,可变波特率
	AUXR |= 0x40;		//定时器1时钟为Fosc,即1T
	AUXR &= 0xfe;		//串口1选择定时器1为波特率发生器
	TMOD &= 0x0f;		//清除定时器1模式位
	TMOD |= 0x20;		//设定定时器1为8位自动重装方式
	TL1 = 0xD9;		//设定定时初值
	TH1 = 0xD9;		//设定定时器重装值
	ET1 = 0;		//禁止定时器1中断
	TR1 = 1;		//启动定时器1
}

com_interrupt(void) interrupt 4 using 3
{
	uchar j;
	if(RI)
	{
		RI=0;
		Rdata[j]=SBUF;
		j++;
		if(j==10)
			j=0;
	}
	if(TI)
		TI=0;
}

⌨️ 快捷键说明

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