MORE RELATED

GROOMIX INFO
Blogs & Articles
MENU
. . .

programming

views : 611

Software Uart for AVR microcontroller tested on 1200 baud rate

Here is copy and paste code for Software UART. In many system design, we need more than one serial communication like GSM module and BT module. To connect these module with a single microcontroller, we need two UART port which is generally not available in AVR microcontroller. I could not found any code while Searching for Software UART code in google. So,i made software uart code for myself. Now, i am share this code so you need not to suffer from it. Following are the copy and paste code for you.

Software Uart code for AVR microcontroller tested on 1200 baud rate

//START -set baud rate for 1200bps
unsigned char min_bit_length = 83;
void send_byte(char send_byte){
    char i;
    //start bit
    output_port4 &=~(1<<utx);
    for(i=0; i<min_bit_length; i++){_delay_us(10);}//1 bit delay
   

 //1 bit
    if(send_byte & 0b00000001){output_port4 |= (1<<utx);} else{output_port4 &=~(1<<utx);}
    for(i=0; i<min_bit_length; i++){_delay_us(10);}//1 bit delay
//2 bit
    if(send_byte & 0b00000010){output_port4 |= (1<<utx);} else{output_port4 &=~(1<<utx);}
    for(i=0; i<min_bit_length; i++){_delay_us(10);}//1 bit delay
//3 bit
    if(send_byte & 0b00000100){output_port4 |= (1<<utx);} else{output_port4 &=~(1<<utx);}
    for(i=0; i<min_bit_length; i++){_delay_us(10);}//1 bit delay
//4 bit
    if(send_byte & 0b00001000){output_port4 |= (1<<utx);} else{output_port4 &=~(1<<utx);}
    for(i=0; i<min_bit_length; i++){_delay_us(10);}//1 bit delay
//5 bit
    if(send_byte & 0b00010000){output_port4 |= (1<<utx);} else{output_port4 &=~(1<<utx);}
    for(i=0; i<min_bit_length; i++){_delay_us(10);}//1 bit delay
//6 bit
    if(send_byte & 0b00100000){output_port4 |= (1<<utx);} else{output_port4 &=~(1<<utx);}
    for(i=0; i<min_bit_length; i++){_delay_us(10);}//1 bit delay
//7 bit
    if(send_byte & 0b01000000){output_port4 |= (1<<utx);} else{output_port4 &=~(1<<utx);}
    for(i=0; i<min_bit_length; i++){_delay_us(10);}//1 bit delay
//8 bit
    if(send_byte & 0b10000000){output_port4 |= (1<<utx);} else{output_port4 &=~(1<<utx);}
    for(i=0; i<min_bit_length; i++){_delay_us(10);}//1 bit delay
//stop bit
    output_port4 |= (1<<utx);
    for(i=0; i<min_bit_length; i++){_delay_us(10);}//1 bit delay
}
void send_string(char send_string[]){
    unsigned char i=0;      // iterating variable
    unsigned char LENGHT = 0;// length of the word
    for(i=0;i<500; i++){
      if(send_string[i] == NULL){break; }
      LENGHT++;
    }
    i=0;
    while(i<LENGHT){send_byte(send_s tring[i]);i++;}
}

//END
#define output_ddr DDRD
#define output_port4 PORTD
//in main()
//initialize this port
output_ddr |= (1<<utx);//as output port
output_port4 |= (1<<utx);//pull up because in idle time uart tx line is high


while(1 ){//main while
send_string("testing transmitter of software uart");// this will send out and you can see it on pc terminal
_delay_ms(1000);   
   
}

Above code is made for avr microcontroller and its crystal 12Mhz. for any doubt, ask me in comment below.

Posted By :
Mr. Unique

2017-08-16/00:12:20

Share this Page

Comments...

More :programming

programming
Arduino UNO tachometer coding with variable resistor and DC motor speed control
views :182

p

programming
Here is the code to interface 2 serial devices with AVR
views :161

p

programming
Software Uart for AVR microcontroller tested on 1200 baud rate
views :611

p

programming
ATMEL STUDIO-While loop conditioning issues
views :228

p

programming
ATMEL STUDIO-While loop is not working using interrupt incremented conditioning
views :293

p

programming
Copy and paste code for facebook share button in your websites
views :351
programming
How to program atmel 8051 family microcontroller? (step by step)
views :244
programming
Embedded program code in C language for Digital Voltmeter for AVR microcontroller
views :314
programming
Assemby program code for Automatic Door Opening System (8051 family microcontroller)
views :228
programming
Very simple and accurate Seven Segment Display program Code in Embedded C language
views :260

p

programming
Highway vehicle speed detector or checker Embedded C language code in MikroC AVR Framework also applicable for 8051 Microcontroller
views :152

p

programming
Assembly program for accurate 1 second delay function
views :181
programming
What is Embedded system programming?
views :156

Latest Updates

kya transformer dc pe work kr skta h..?
views :0

kya transformer dc pe work kr skta h..?
views :136

kya transformer dc pe work kr skta h..?
views :0
Breaking News
Best internet Recharge Plans than jio..!
views :214
Engineering Project Ideas
Vehicle Theft Protection Using Gsm
views :191
Engineering Project Ideas
DTMF Controlled Robot or Mobile Controlled Robot
views :138
Engineering Project Ideas
Digital Clock With Home Appliances Control Using Microcontroller
views :99
Engineering Project Ideas
Cooking Monitor
views :195
Engineering Project Ideas
Boundary Security System(Wireless)
views :144
Engineering Project Ideas
Automatic Garage Parking System
views :138

---More To Do---

This pages is developed to give users a genuine web materials of all types throughout the world. Many articles, by experts are publishing here, every hours. You can publish your topics as well as you can comment on all posted topics and learn more. Many types of topics are published here like Technology based ( Electronics, Electricals, Mechanicals, civil engineering, computer science, programming and software development, Assemply language codings), Health like medicine, healthy diets, Homeopathy etc) and many types of latest news updates.


All content, design, and layout are Copyright © 2016 - Digital Photography Review All Rights Reserved. Reproduction in whole or part in any form or medium without specific written permission is prohibited.

MORE TO DO