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