📄 eye121.c
字号:
/*********************************************************************
*这是在AT89C2051单片机上运行的程序,文件名为eye121.c
*功能:AT89C2051作为分站与主站W77E58通讯,双方均有RS485接口 ,AT89C2051
* 用T1作波特率发生器, 波特率为9600,配套主站W77E58程序为EYE5.C
**********************************************************************/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
void timedelay(uint timess);
uchar n;
uchar rbut[12];
uchar tbut[12];
uchar kc1,kc2,flag;
sbit p13=P1^3;
void timedelay(uint timess)
{
uint tj;
for (tj=timess;tj>0;tj--){;}
}
sio0() interrupt 4 using 1
{
if (RI==0) {
if (TI==0) {RI=0;TI=0;return;}
SBUF=tbut[kc1];
kc1++;
if (kc1!=10) {RI=0;TI=0;return;}
kc1=0;
p13=0; //恢复为接收方式
SCON=0xf0;
loo1:if (TI==0) goto loo1;
RI=0;
TI=0;
}
if (SM2==0) {
rbut[kc2]=SBUF;
kc2++;
if (kc2!=10) {RI=0;TI=0;return;}
rbut[1]=rbut[2]+rbut[3]+rbut[4]; //add check
if (rbut[1]!=rbut[5]) {flag=1; }
kc2=0;
p13=1; //准备发送
SCON=0xe8;
SBUF=0x01;/* 01*/
TB8=0;
SM2=0;
RI=0;
TI=0;
}
if (SBUF!=1) {RI=0; return;}/* 01*/
SM2=0;
RI=0;
}
void main()
{
SP=0x70;
timedelay(10000);
kc1=0;
kc2=0;
EA=0;
flag=0;
tbut[0]=0x01;/* 01*/
tbut[1]=0x03;
tbut[2]=0x1; /*tbut[2]-tbut[7]放6个字节 01*/
tbut[3]=0x2;
tbut[4]=0x3;
tbut[5]=0x4;
tbut[6]=0x5;
tbut[7]=0x6;
tbut[8]=21;
tbut[9]=0x0;
TMOD=0x20;
PCON=0x0;
TL1=0xfd;
TH1=0xfd; //11.0592mhz,smod=0:1200==0xe8;9600==0xfd
TR1=1;
SCON=0xf0;
ES=1;
p13=0; //准备接收
EA=1;
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -