Red de conocimiento informático - Computadora portátil - 51 microcontrolador comunicación serie programación en lenguaje c

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

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');

anillo=0;

romper

}

if(CASE2==0)

{

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

}

}

//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;

}