51 microcontrolador comunicación serie programación en lenguaje c
#include lt; REG52.Hgt;
#define uchar unsigned char
#define uint unsigned int
sbit ring=P3 ^7;
bit CASE1=P2^0;
bit CASE2=P2^1;
sbit CASE3=P2^2;
sbit CASE4=P2^3;
uchar se=0, re=0
uchar temp=0;
espera nula (uint cnt)
{
while(--cnt);
}
//Programa de envío de puerto serie
void enviar(uchar se)
{
SBUF=se; //Enviar datos
mientras(TI == 0);
TI = 0;
}
//Programa de recepción de puerto serie
uchar recibir(void)
{
re=SBUF; //Recibir datos
mientras(RI==0);
RI=0;
devolver
}
//Inicialización del puerto serie
void sinti(void)
{
SCON = 0x50 ; p>
TMOD |= 0x20;
TH1 = 0xFD;
TR1 = 1;
EA = 1; ES = 1 ;
}
retraso nulo(int cnt)
{
while(--cnt);
}
//Programa principal
int main (void)
{
int i;
sinti(); //Programa de inicialización del puerto serie
ring=1
while(1)
{
mientras (1)
{
if(CASE1==0)
{
enviar('a'); p>
anillo=0;
romper
}
if(CASE2==0)
{ p>
enviar('b');
anillo=0;
romper
}
if(CASE3; ==0)
<p> {
enviar('c');
anillo=0;
romper
}
if(CASE4==0)
{
enviar('d');
ring=0
romper; ;
}
}
if(ring==0)
{
espera(60000) ;
anillo=1;
}
para(i=0; ilt; 10000; i
}); p>
}
//Programa de interrupción del puerto serie
void UART_SER (void) interrupción 4 //Programa de servicio de interrupción en serie
{
if(RI) //Determina si se genera una interrupción de recepción
{
RI=0 //El bit de bandera se borra
temp=SBUF ;
}
if(TI) //Si es un indicador de envío, borrelo
TI=0;
}