Cómo implementar la comunicación serie entre microcontroladores AT89C52
#includelt;intrins.hgt;
marca de bits;
uchar buf[20];
uchar count_rx;
void main( void)
{
TMOD=0x21;
TH1=0xfd;
TL1=0xfd;
TH0=(65536-1000)/256
TL0=(65536-1000)256; ;
ET0=1;
PCON=0x00;
SCON=0x50;
TR1=1; p> ES=1;
EA=1;
while(1); //esperando recibir
}
/ *////// //////////////////////////////
Programa de recepción de puerto serie p >
//////////////////////////////////////*/
void uart_rx(void)
{
uchar i, j
led=0
while(!RI)
{
j;
if(jgt; 200)
{
j=0; }
}
RI=0;
buf[0]=SBUF
if(buf[0]==0xaa; )
{
for(i=0;ilt;7;i)
{
while(!RI);
RI=0;
buf[i]=SBUF
}
led=1; }
}
/////////////////////////////////// //// ////////
Lo siguiente se utiliza para enviar
#include lt;reg51.h gt;
#include lt;intrins.hgt ;
bandera de bits;
uchar buf[20];
uchar count_rx;
uchar tiempo[7 ];
//typedef unsigned char uchar;
//------------------------- ------- ---------------
retraso nulo(unsigned int t) // retraso 40us
{ p>
para( ;t! =0;t--);
}
/*************************** ********
************************************/
anular retraso( anular firma
ed int uso)
{
int i;
for(;usegt;0;use--)
{ p>
i--;
}
}
}
void main(void)
{
uchar i, j; //, j, k;
uchar tt[2];
TMOD=0x20;
TH1=0xfd
TL1=0xfd
PCON=0x00
SCON= 0x50; ;
TR1=1;
ES=1;
EA=1
mientras(1)
<; p> {if(keyy==0)
led=1;
retraso(200);
retraso(250); ).
led=1;
Retraso(6000);
EA=0;
I2C_Gets(0xd0, 0x00, 7; , tiempo);
Retraso(6000);
for(j=0; jlt; 1; j )
{
led=0;
SBUF=0xaa; //enviar identificador
while(!TI);
TI=0;
for(i=0;ilt;7;i)//enviar datos, 7 bytes
{
TI=0;
p> SBUF=tiempo [i];
retraso(50);
mientras(!TI
TI=0;
}; p>
}
led=1
}
}
SBUF=0xaa; //enviar identificador p>
mientras(!
}