搜索
bottom↓
回复: 5

USART通信收发的结果不一致,困扰很长时间,大家指点一下...

[复制链接]

出0入0汤圆

发表于 2013-5-7 18:10:39 | 显示全部楼层 |阅读模式
#include <mega16.h>
unsigned char data;
bit flag = 0;

void Port_Init()
{
    DDRD = 0X02;
    PORTD = 0X03;
}
void USART_Init(unsigned int xtal,unsigned int baud)
{   
   
    UBRRH =  (xtal/16/baud-1)>>8;
    UBRRL =  (xtal/16/baud-1) ;
   
    UCSRA = 0X00;
    UCSRB = (1<<TXEN)|(1<<RXEN)|(1<<RXCIE);
    UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);

}


void USART_Transmit(unsigned char data)
{
    while(!(UCSRA & (1<<UDRE)))  ;
    UDR = data;
   
   
}

interrupt [USART_RXC] void usart_rx_isr(void)
{
   
    data = UDR;  
    flag = 1;
   
   
}

void main()
{  
   
    unsigned char xtal = 12000000 , baud = 9600;
    Port_Init();
    USART_Init(xtal,baud);
    #asm("sei")
   
    while(1)
    {   
        if(flag)
        {
         flag = 0;
         USART_Transmit(data);
         
        }
    }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-5-12 00:29:29 | 显示全部楼层
改成下面的试试
UBRRH = (((_F_CPU/BAUD)/16)-1)/256;       
UBRRL = (((_F_CPU/BAUD)/16)-1)%256;

出0入76汤圆

发表于 2013-5-12 00:37:42 | 显示全部楼层
unsigned char xtal = 12000000 , baud = 9600;这么显示 的错误 .....

出0入0汤圆

发表于 2013-5-13 11:14:02 | 显示全部楼层
将“  unsigned char xtal = 12000000 , baud = 9600;“改为
#define XTAL 12000000
#define BAUD 9600
试一下,因为你初始化变量时,明显移除了,unsigned char的范围是0~255.

出0入0汤圆

 楼主| 发表于 2013-5-13 22:27:18 | 显示全部楼层
ben001 发表于 2013-5-13 11:14
将“  unsigned char xtal = 12000000 , baud = 9600;“改为
#define XTAL 12000000
#define BAUD 9600

也就是12000000超过了unsigned char的范围的了吧

出0入0汤圆

发表于 2013-5-23 14:48:56 | 显示全部楼层
对没错!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 23:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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