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

📄 485-pc-bus.c

📁 吐血奉献
💻 C
字号:
#include <pic.h>
#include<pic1687x.h>
#define  REDE	RD2//TRISD2=0;
#define  ADDR0	0x30
#define  ADDR1	0x31
#define  start	0x24
#define  end	0x2a
unsigned char recdata;
unsigned char r_buf[8];
unsigned char flag;
unsigned char rcount;
unsigned char i,j,k,x,y;



void send_serial(unsigned char count)			//串口发送
{   
		
		TXEN=1;  //发送使能发送功能
		TXREG=count;
		while(1)
		{
			if(TRMT==1)  break;
		}
		TXEN=0;
		
}

//系统初始化函数*/
void initial()
{
	INTCON=0x00;
	ADCON1=0x07;
	PIE1=0;
	PIE2=0;
}

//串行通信初始化程序*/
void sciinitial()
{
	TXSTA=0x04;
	RCSTA=0x80;
	TRISC=0x80;
	SPBRG=0x33;
	PIR1=0x00;
    PIE1=PIE1|0x20;  
    CREN=1;
    TXEN=1;
}
//485接收中断
void interrupt LOW_ISR()
{
	unsigned char a=1,flag_recover=0,flag_startrec=0;
   if(RCIF==1)
    {
      		RCIF=0;
			while(!flag_recover)
			{
				while(!RCIF);
				recdata = RCREG;
				RCIF=0;
				if((!flag_startrec)&&(recdata==start))
				{
					flag_startrec = 1;
				}
		
				if(flag_startrec)
				{
					r_buf[rcount] = recdata;
					rcount ++;
					if(recdata == end)
					{flag_recover = 1;}
				}
		
			}
	  //recdata=RCREG;

	  flag=1;
	}
}



//主函数
main()
{
  initial();
  sciinitial();
  TRISD2=0;	

  REDE=0;
  flag=0;
  INTCON=INTCON|0xc0;
	rcount=0;
   while(1)
   {
     if(flag==1)
      {
         flag=0;
		 REDE=1;
				if(rcount>4)
				{
					rcount=0;
					if((r_buf[1]==ADDR0)&&(r_buf[2]==ADDR1))
					{
						send_serial(66);
						send_serial(0x0a);
					}
					else
					{
						for(k=0;k<5;k++)
						send_serial(r_buf[k]);			
					}
				}
		 for(i=0;i<50;i++);
		 REDE=0;
      }

   }
}

⌨️ 快捷键说明

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