独闷闷网

 找回密码
 立即注册
搜索
查看: 5124|回复: 0
收起左侧

[求助] ATMEGA128 串口问题

[复制链接]
发表于 2015-1-27 13:52:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我写了一个简单的串口程序,主要功能是不断发送一个字母 串口助手不断输出00

以下是源程序  求大神指点
#include <iom128v.h>
#include <macros.h>

#define uchar unsigned char
#define uint unsigned int

//串口0初始化
void uart_init0(int baud_rate,long int fosc)
{
        UCSR0A=0x00;     //控制寄存器A清零  不倍速
        UCSR0B=0x00;          //控制寄存器B清零
        UCSR0B|=(1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0);//允许发送和接收,并允许接收中断
        UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);                                /*8位数据、1 位停止、异步、无校验*/
        UBRR0H = (fosc/16/(baud_rate+1))/256;
        UBRR0L = (fosc/16/(baud_rate+1))%256;                                                                                /*波特率9600                                        */
}

//串口0发送一个数据
void uart_transmit0(unsigned char i)
{

        while (!(UCSR0A & (1<<UDRE0)));                                                /* 等待发送缓冲器为空                                */
        UDR0 = i;                                                                                        /* 发送数据                                                        */
}

void delay_s(void)
{
        uint i,j;
        for(i=0;i<1000;i++)
        {
                for(j=0;j<255;j++)
                ;
        }
}


void main()
{
        DDRE|=(1<<PE1);   //TX1引脚定义输出
        uart_init0(9600,16000000);    //设置波特率9600  晶振16MHz
        SEI();                                                                                                /*全局中断允许                                                */
        
        while(1)
        {
                delay_s();
                uart_transmit0('a');
                delay_s();
               
        }
}

QQ截图20150127134136.png
乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-12-12 10:18 , Processed in 0.182159 second(s), 22 queries .

快速回复 返回顶部 返回列表