UART串行通信接收字符然后传输字符

时间:2018-03-01 06:30:40

标签: input avr uart

我试图在C中编写一个程序,该程序从用户那里获取字符输入,将其保存到变量然后将其传输到串行端口。

我使用的是Romeo Board,Atmega328p和Arduino Serial Monitor。我知道电路板/串行监视器工作,因为我能够传输。我无法获得输入/接收方面的工作。

这是我的代码:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>


 int main(void){

    initUART(9600);


    while(1){

        unsigned char beta = receiveByte();
        transmitByte(beta);

        _delay_ms(1500);


    }
 }


 void initUART(unsigned int baud) {
   unsigned int ubrr = F_CPU/16/baud-1;  //Normal mode UBRR formula

   UBRR0H = (unsigned char) (ubrr >> 8); 
   UBRR0L = (unsigned char) ubrr;  

   UCSR0B = (1 << RXEN0) | (1 << TXEN0);  
   UCSR0C = (1 <<UCSZ00) | (1 <<UCSZ01);  
 }

 unsigned char receiveByte (void) {
   while ( !(UCSR0A &  (1 << RXC0)) );    
   return UDR0;  
 } 

我知道Serial.read()但不能使用它,因为它不在我实验室的范围内(实际上比这更复杂)

任何提示或线索将不胜感激。

0 个答案:

没有答案