Giao tiếp UART giữa 2 PIC with XC8 (part2)

12:12:00 AM
Trong bài đăng trước mình đã hướng dẫn các bạn về lý thuyết về giao tiếp UART trong pic16f877a. Cụ thể là xuất 1 chuỗi ký tự và một ký tự lên màng hình. Còn trong bài này mình sẽ hướng dẫn các bạn cách giao tiếp giữa 2 con Pic. Pic Master sẽ truyền dữ liệu sang cho Pic Slave như trong hình.


Giao tiếp UART giữa 2 PIC with XC8



Ai chưa hiểu hì quay lại bài đăng trước đọc lại lý thuyết rồi qua bài này nha. Link 
http://chiasedientu.blogspot.com/2015/08/uart-with-xc8.html

Đây là code Master

#define _XTAL_FREQ 8000000
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <pic16f877a.h>
#include "uart.h"
// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

void main(void)

{
  TRISB = 0xFF; //PORTB as Input
  nRBPU = 0;
  UART_Init(9600);

  do

  {
    UART_Write(PORTB);
    __delay_ms(100);
  }while(1);
}


Đây là code Svale

#define _XTAL_FREQ 8000000
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <pic16f877a.h>
#include "uart.h"

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)
void main(void)
{
   TRISB = 0x00; //PORTB as Output
   UART_Init(9600);

   do
   {
      if(UART_Data_Ready())
        PORTB = UART_Read();

       __delay_ms(100);

   }while(1);
}

Share this

Related Posts

Previous
Next Post »