Software Serial

Dalam beberapa kasus dimana kita memerlukan lebih dari satu port UART, sementara dalam mikrokontroler yang kita gunakan, hanya tersedia satu UART, maka solusinya adalah memanfaatkan cara software serial. Saat mengirim, data di-konversi menjadi bit-bit serial, yang dikirim satu per satu dengan jarak waktu tertentu (tergantung baud rate yang digunakan). Begitu pun ketika proses menerima.

#include <mega8535.h>
#include <delay.h>

#define rxpin PINC.2
#define rxport PORTC.2
#define dirrx DDRC.2
#define txport PORTC.3
#define dirtx DDRC.3

#define bauduart 38400
#define gaptx (1000000/bauduart)-5 // adjust please
#define gaprx (1000000/bauduart)-12 // adjust please
#define gapseparo (500000/bauduart) // adjust please

void inituart(void)
{
   dirrx=0;
   rxport=1;
   dirtx=1;
   txport=1;
}

void txsend(unsigned char datatx)
{
   unsigned char i=0;
   
   #asm("wdr");
   txport = 0;
   delay_us(gaptx);
   do {
      txport = (datatx & 1);
      datatx >>= 1;   
      i++;
      delay_us(gaptx);
   } while(i<8);
   
   txport = 1;
   delay_us(gaptx);
}