PIC16F877 and UART mikroC example

In this example we will show a basic example of reading and writing text to the UART (serial) using a PIC. We will use this in later examples when we look at sensors and we will output via a serial port.

Our test setup is an Open16F877A development board from Waveshare, we will show an example in mikroC Pro for Pic and I am using a PicKit 3.5 programmer to upload the hex file

 

Parts List

Name link
Open16F877A kit Open16F877A Package B # PIC16F877A-I/P PIC16F877A PIC 8-bit RISC Evaluation Development Board +14 Accessory Modules

 

Layout

 

Trying to find some good parts but as stated i connect a PL2303 module from Waveshare to the USART connection of the Waveshare Open16f877a

The connection is as follows

  • VCCIO ↔ 3.3V or 5V output (the module is powered from USB, onboard jumper should be shorted to 3.3V or 5V)
  • GND ↔ GND
  • TXD ↔ MCU.RX (signal direction: MCU.RX << PL2303 << PC.TX)
  • RXD ↔ MCU.TX (signal direction: MCU.TX >> PL2303 >> PC.RX)

 

Code Examples

The following example is written in MikroC – we all also include another example which we haven’t tested

char uart_rd;
 
void main() {
  //ANSEL  = 0;                     // Configure AN pins as digital
  //ANSELH = 0;
 
  UART1_Init(9600);               // Initialize UART module at 9600 bps
  Delay_ms(100);                  // Wait for UART module to stabilize
 
  UART1_Write_Text("Start");
  UART1_Write(13);
  UART1_Write(10);
  UART1_Write_Text("PIC UART example in MIKROC");
  UART1_Write(13);
  UART1_Write(10);
 
  while (1) {                     // Endless loop
    if (UART1_Data_Ready()) {     // If data is received,
      uart_rd = UART1_Read();     // read the received data,
      UART1_Write(uart_rd);       // and send data via UART
    }
  }
}

This is the example that comes from Waveshare – untested

/*
*
*
* File                : USART.c
* Hardware Environment:	OpenPIC16F877A && rs232 &&  5v voltage && 4M crystal oscillator
* Build Environment   : MPLAB IDE && sscom32
* Version             : V8.76
* By                  : Zhou Jie
*
*                                  (c) Copyright 2011-2016, WaveShare
*                                       http://www.waveShare.net
*                                          All Rights Reserved
*
*
*/
#include<pic.h>         
 __CONFIG(0xFF32);        
 
 
void main()
 {
  TRISC=0X0;                 
  SPBRG=0XC;                 
  TXSTA=0X24;               
  RCSTA=0X90;               
  RCIE=0X1;                  
  GIE=0X1;                   
  PEIE=0X1;                
  while(1)                 
   {;}
  }
 
 
void interrupt usart(void)
  {
   if(RCIE&&RCIF)           
     {
      TXREG=RCREG;          
     }
   }

Output

Open a terminal program like TeraTerm, choose the com port of the PL2303 and check for messages -if you type a key it should be repeated back to the terminal

You should see something like this

Download

 

Share
SHARE
Previous articleChipkit Max32 and TEA5767 radio example
Next articleChipkit and BME680 environmental sensor example