?? tongx3.c
字號:
/*********************************************************************
*文件名: tongx3.c
*功 能:AT89C52與N臺AT89C2051通訊,雙方均有RS485接口 ,AT89C52用T2作
* 波特率發生器, 波特率為9600,配套89C2051程序為EYE124.C
**********************************************************************/
#include <reg52.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
sbit p14=P1^4;
uchar idata kc1,kc2,aa,iii;
uchar idata rbut2[36];
uchar idata tbut[12];
uchar idata rbut[16];
uint idata r;
void timedelay(uint timess);
sio0() interrupt 4
{
one:if (SM2==0) goto noar;
if (SBUF!=aa) goto noads;
SM2=0;
noads:RI=0;
TI=0;
return;
noar:;
rbut[kc2]=SBUF;
kc2++;
if (kc2!=16) goto noads;
SM2=1;
goto noads;
}
void timedelay(uint timess)
{
uint tj;
for (tj=timess;tj>0;tj--){;}
}
void intrbut(void)
{
uchar coni;
for (coni=0;coni<3;coni++)
{
rbut[coni]=0;
}
rbut[2]=0x87; //8888888
rbut[3]=0xa2;
rbut[4]=0x38;
rbut[5]=0x87; //8888888
rbut[6]=0xa2;
rbut[7]=0x38;
rbut[8]=0x87; //8888888
rbut[9]=0xa2;
rbut[10]=0x38;
rbut[11]=0x87; //8888888
rbut[12]=0xa2;
rbut[13]=0x38;
}
void communi(void) /* RS-485 通訊 */
{
uchar coni;
kc1=0;
kc2=0;
aa=0;
intrbut();
for (coni=0;coni<10;coni++)
{
tbut[coni]=0x00;
}
tbut[2]=01;
tbut[3]=02;
tbut[4]=03;
tbut[5]=tbut[2]+tbut[3]+tbut[4]; //add check
TR2=1;
for (coni=0;coni<64;coni++)
{
aa=coni+1;
p14=1; //準備發送
timedelay(20000);
SCON=0xe8;
ES=0;
EA=0;
SBUF=aa;
loo1:if (TI==0) goto loo1;
TI=0;
SCON=0xe0;
SBUF=tbut[kc1];
kc1++;
if (kc1!=11) goto loo1;
kc1=0;
p14=0; //準備接收
SCON=0xf0;
ES=1;
EA=1;
r=0;
loo:;
if (kc2!=16) {r++; if(r>65530) {goto sss;} else {goto loo;}}
sss:;
kc2=0;
if(r>65530) {intrbut();}
for (iii=0;iii<12;iii++)
{
rbut2[(aa-1)*12+iii]=rbut[2+iii];
}
}
TR2=0;
EA=1;
}
void main(void)
{
SP=0xdf;
timedelay(10000);
EA=0;
kc1=0;
kc2=0;
T2CON=0; //11.0592mhz,9600=ffdc;1200=fee0h
T2IE=1; //12.0mhz, 9600=ffd9h;1200=fec8h
T2RSE=1;
RCAP2H=0xff;
RCAP2L=0xdc;
EA=1;
communi();
while(1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -