Atmega90can32/64/128串口详解(二)

来源:互联网 发布:鬼才大小姐 知乎 编辑:程序博客网 时间:2024/06/07 09:26
介绍完串口有关的寄存器然后介绍怎么使用Atmega90can32/64/128的串口。
主频:16MHZ
第一步:对串口进行初始化
void uart0Init(void)
{
    DDRE &= ~0x00;  //RX需要设为输入
    PORTE |= 0x00;   //RX 上拉
    DDRE |= 0x01;    //TX需要设为输出
    PORTE |= 0x01;   //TX 上拉
    UCSR0A = 0x00;
    UCSR0B = 0x00;   //设置波特率之前需要
关闭USART0的所有使用,包括使能和中断
    UCSR0C = 0x06;   //发送数据为8位
    UBRR0L = 0x67;      //波特率9600计算后所得
    UBRR0H = 0x00;
    UCSR0B = 0x98;
}
好了串口的初始化已经完成了下面就是对USART0的读写操作了
UCSR0A的 Bit5UDRE0 标志指出发送缓冲器UDR0是否准备好接收新数据。UDRE0=11说明缓冲器为,可以接收新数据,UDRE0标志也可用来产生寄存器空中断.复位后的UDRE0置位,表明发送器已经就绪。
void uputchar( char tx_data )
{
  while( (UCSRA & 1<<UDRE) == 0 );
  UDR =
tx_data;
}
void
uputcharString(char*data,charlength)
{
       
chari=0;
    for(i=0;i<length;i++)
    {
       
uputchar(*(data+i));
    }
}
好了,函数已经写好了,下面我们来试一下


#include<avr/io.h>
#include "simfun.h"
#include "uart.h"

char data[4]={0x01,0x02,0x03,0x04};

int main (void)
{
    uart0Init();
    while(1)
    {
        uputchar(0x00);
        delay_s(1);
        uputcharString(data,4);
    }
       
}

ok!编译通过,用串口线连到PC上用串口调试助手调试能看到接受的数据
0 0
原创粉丝点击