📄 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 + -