Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo implementar la comunicación serie entre microcontroladores AT89C52

Cómo implementar la comunicación serie entre microcontroladores AT89C52

#includelt;reg52.hgt;

#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

//////////////////////////////////////*/

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

{

para( ;t! =0;t--);

}

/*************************** ********

************************************/

anular retraso( anular firma

ed int uso)

{

int i;

for(;usegt;0;use--)

{

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;

}

}

led=1

}

}

SBUF=0xaa; //enviar identificador

mientras(!

}