You are on page 1of 4

#include <pic.

h>

#include <pic16f877a.h>

#include <xc.h>

#include <stdio.h>

#include <stdlib.h>

#define _XTAL_FREQ 20000000

#pragma config FOSC = HS

#pragma config WDTE = OFF

#pragma config PWRTE = OFF

#pragma config BOREN = OFF

#pragma config LVP = OFF

#pragma config CPD = OFF

#pragma config WRT = OFF

#pragma config CP = OFF

void UART_Init(void)

TXSTAbits.BRGH = 1;
TXSTAbits.SYNC = 0;

SPBRG = 129;

TXSTAbits.TXEN = 1;

RCSTAbits.SREN = 1;

RCSTAbits.SPEN = 1;

TXSTAbits.TX9 = 0;

RCSTAbits.RX9 = 0;

RCSTAbits.CREN = 1;

PIR1bits.RCIF = 1;

PIR1bits.TXIF = 1;

INTCONbits.PEIE = 1;

INTCONbits.GIE = 1;

void UART_Put_Char(unsigned char dl)

while(PIR1bits.TXIF == 0);

TXREG = dl;

void UART_Put_String(unsigned char *dl)

while(*dl)

while(PIR1bits.TXIF == 0);

TXREG = *dl++;

char UART_Data_Ready()

return RCIF;
}

char UART_Read()

while (!RCIF);

return RCREG;

void main(void)

TRISBbits.TRISB0 = TRISBbits.TRISB1 = TRISCbits.TRISC7 = 1;

TRISBbits.TRISB2 = TRISBbits.TRISB3 = TRISCbits.TRISC6 = 0;

UART_Init();

unsigned char kt;

while(1)

{if(PORTBbits.RB0 == 0)

UART_Put_String("xuan truong ");

__delay_ms(500);

else if(PORTBbits.RB1 == 0)

UART_Put_String("tdh 1");

__delay_ms(500);

if(UART_Data_Ready())

kt = UART_Read();

if(kt=='1')

{
PORTBbits.RB2 = 1;

PORTBbits.RB3 = 0;

else if(kt=='2')

PORTBbits.RB3 = 1;

PORTBbits.RB2 = 0;

return;

You might also like