?? eye124.c
字號:
/*********************************************************************
*這是在AT89C2051單片機上運行的程序,文件名為eye124.c
*功能:AT89C2051作為分站或從機與AT89C52總站或主機通訊,雙方均有RS485接口 ,
* AT89C2051用T1作波特率發生器, 波特率為9600,分站地址可設定(00-127),
* 配套總站或主機AT89C52通訊程序為TONGX3.C
**********************************************************************/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
void timedelay(uint timess);
uchar n;
uchar rbut[12];
uchar tbut[16];
uchar kc1,kc2,aa,coni,flag,addr;
sbit addr0=P1^0;
sbit addr1=P1^1;
sbit addr2=P1^2;
sbit addr3=P1^3;
sbit addr4=P1^4;
sbit addr5=P1^5;
sbit addr6=P1^6;
sbit addr7=P1^7;
sbit p34=P3^4;
sbit p35=P3^5;
sbit p37=P3^7;
void addr_re(void)
{
addr=0;
if(addr0==1)
{addr=addr+128;}
if(addr1==1)
{addr=addr+64;}
if(addr2==1)
{addr=addr+32;}
if(addr3==1)
{addr=addr+16;}
if(addr4==1)
{addr=addr+8;}
if(addr5==1)
{addr=addr+4;}
if(addr6==1)
{addr=addr+2;}
if(addr7==1)
{addr=addr+1;}
}
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!=16) {RI=0;TI=0;return;}
kc1=0;
p37=1; //恢復為接收方式
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;
p37=0; //準備發送
SCON=0xe8;
SBUF=addr; /* 01*/
TB8=0;
SM2=0;
RI=0;
TI=0;
}
if (SBUF!=addr) {RI=0; return;} /* 01*/
SM2=0;
RI=0;
}
void main()
{
SP=0x70;
p34=0; //red lamp
p35=1; //green lamp
timedelay(10000);
timedelay(10000);
addr_re();
kc1=0;
kc2=0;
EA=0;
flag=0;
tbut[0]=0x03;
tbut[1]=0x1;
tbut[2]=0x2;
tbut[3]=0x3;
tbut[4]=0x4;
tbut[5]=0x5;
tbut[6]=0x6;
tbut[7]=0x7;
tbut[8]=0x8;
tbut[9]=0x9;
tbut[10]=0xa;
tbut[11]=0xb;
tbut[12]=0xc;
tbut[13]=78;
tbut[14]=0x0;
TMOD=0x20;
PCON=0x0;
TL1=0xfd;
TH1=0xfd; //11.0592mhz,smod=0:1200==0xe8;9600==0xfd
TR1=1;
SCON=0xf0;
ES=1;
p37=1; //準備接收
EA=1;
while(1)
{
p34=1; // red
p35=0; // green
timedelay(10000);
timedelay(10000);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -