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

📄 485.c

📁 这是个485程序!可以直接与电表的485接口连接进行采集电表的数据!!是一个很不错的程序
💻 C
字号:
#include <W77E58.H>
#define uchar unsigned char
#define uint  unsigned int
#define A ACC
#define P PSW^0
typedef unsigned char  BYTE; 
BYTE txdata[14]={0x68,0x23,0x15,0x03,0x00,0x00,0x00,0x68,0x01,0x02,0x43,0xc3,0x14,0x16};
BYTE rxdata[18];

sbit P16=P1^6;

/*************************
串口初始化
*************************/
void uart()
  {
   TMOD = 0X20;
   TH1 = 0xE8;
   TL1 = 0xE8;
   TR1 = 1;
   SCON1 = 0xD0;
   PCON = 0x00;
  SCON = 0xD0; 
       }


/*******************************
主程序                          
*******************************/
void main (void)
   {
//   uchar a;    
   uchar temp;
   uchar i;
     uart();
 
  while(1)
 {
  P16=1;  // 485置发送禁止,接收允许
 
  while(RI1==0)
      RI1=0;
    temp=SBUF1; //PC 通过串口1 发数据
	 RI1=0;
 if(temp==0x01) //如果PC传来的数据为 01  就向串口0发送数据
     {    
        for(i=0;i<14;i++) //传送14个数据协议
      {
     A= txdata[i]; //做偶校验
     if(P==1)
       TB8=1;
     else 
       TB8=0;
      SBUF0=txdata[i] ;//串口0向电表发送协议
	 while(TI==0);
         TI=0;
            }
   
          }

     
 /*    P16=0;      // 485置发送允许,接收禁止
   
     for(i=0;i<19;i++)
     {  
       while(RI==0);
       RI=0;
  
	   rxdata[i]=SBUF0;//把串口0接收的电表数据存放到接收缓冲区,总共19个
		 RI=0;
                }
    
	for(i=0;i<19;i++) 
         {
            SBUF1=rxdata[i];//通过串口1把接收的电表数据传到PC 上
             while(TI1==0);
              TI1=0;
                        }*/ 
             
                      }
                
			    	 }

⌨️ 快捷键说明

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