Hello,
I am trying to serially transmit data to PC from my baby-o. I am using my programmer’s TX and RX pins (switching the jumper to serial transmission). To test the link I am using the following code:
#define F_CPU 20000000//CPU clock
#define BAUD 9600//baud rate for UART
#define MYUBRR (F_CPU/16/BAUD-1)//baud rate variable for UART hardware
#include <avr/io.h>
#include <avr/interrupt.h>
volatile unsigned char newSerCmd=0;
volatile unsigned char serCmd;
void USART_Init(unsigned int ubrr){//Initialize USART hardware & settings for Serial Radio
UBRR0H=(unsigned char)(ubrr>>8);//set buad rate
UBRR0L=(unsigned char) ubrr;
UCSR0B=(1<<RXEN0)|(1<<TXEN0);//enable reciever & transmitter, recieve interrupt
UCSR0B|=(1<<RXCIE0);
UCSR0C=(3<<UCSZ00);//Set frame format for 8bit with 1 stop
}
void USART_Trans (unsigned char data){//Transmit a byte of data over USART
while(!(UCSR0A&(1<<UDRE0)));//wait for transmition to complete
UDR0=data;
}
ISR(USART_RX_vect){//USART Byte reieved
serCmd=UDR0;
newSerCmd=1;
}
int main(){
USART_Init(MYUBRR);
USART_Trans('H');
USART_Trans('i');
USART_Trans(0X0D);//Carriage Return
sei();//enable global interrupts
while(1){
if(newSerCmd){
USART_Trans('T');
USART_Trans('e');
USART_Trans('s');
USART_Trans('t');
USART_Trans(0X0D);//Carriage Return
newSerCmd=0;
}
}
return 0;
}
from nexisnet post in:
And it works fine!
Now, if I want to serially transmit an 8-bit character variable (e.g. char b=128;) and I want its content (128) to appear on my terminal screen and not the ASCII character that the value represents. How could I do that?
I am sure it is something very simple.
Thank you,
Akis