打印
[AVR单片机]

atmega128串口收发程序出错

[复制链接]
2906|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zydlyq|  楼主 | 2011-7-18 21:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zydlyq 于 2011-7-19 19:39 编辑

写了一个串口收发的程序,就是把收到的值再发回去,但是总是收到和发送的值不一样,要么就是收不到。还请高人指点!!谢谢!!!!
#include <avr/io.h>
#include <avr/interrupt.h>
#define uchar unsigned char
#define uint unsigned int
#define FOSC 16000000
#define BUAD 9600
#define MYBUBRR FOSC/16/BUAD-1
//#define data 11010


void USART_Init (uint ubrr)
{
    /*Set buad rate*/
    UBRR0H=(uchar)(ubrr>>8);
    UBRR0L=(uchar)ubrr;
    /*Enable receive and transmitter*/
    UCSR0B=(1<<RXEN)|(1<<TXEN);
    /* Set frame format :8data,2stop bit*/
    UCSR0C=(1<<USBS)|(3<<UCSZ0);
    DDRE=0x02;
}

void USART_Transmit(uchar c)
{
    /*wait for empty transmit buffer*/
    while(!(UCSR0A&(1<<UDRE0)));
    /*Put data into buffer,sends the data*/
    UDR0=c;
}
uchar USART_Receive(void)
{
    /*Waite fro data to be received*/
    while(!(UCSR0A&(1<<RXC0)));
    /*Get and return received data from buffer*/
    return UDR0;
}

int main(void)
{
    while(1)
    {
        USART_Init(MYBUBRR);
        USART_Transmit(USART_Receive());
    }
}

相关帖子

沙发
zydlyq|  楼主 | 2011-7-18 22:13 | 只看该作者
补充一下,串口线用的是usb转串口。

使用特权

评论回复
板凳
xutianbai| | 2011-7-21 10:08 | 只看该作者
接收口寄存器设置加上拉电阻试试

使用特权

评论回复
地板
zydlyq|  楼主 | 2011-7-22 16:33 | 只看该作者
3# xutianbai 谢谢了,找出毛病了。不过还是谢谢!!

使用特权

评论回复
5
大山ahu| | 2011-7-28 10:48 | 只看该作者
4# zydlyq

太没公德心了,找出问题,也不跟大伙说说。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

313

帖子

1

粉丝