搜索
bottom↓
回复: 3

马老师你好,对照书上第十三章的USART的程序, MEGA 16 USART接收不到,请帮我看看,谢谢了!

[复制链接]

出0入0汤圆

发表于 2009-9-2 23:18:20 | 显示全部楼层 |阅读模式
我使用的是ICCAVR6。25,对照书上例子,将TXC与RXC两个脚直接连接起来,程序发送0-15,RX接收后显示,可是结果只显示0,我看了好几天了,不明白,马老师能帮我看看指点一下吗?谢谢你了!
按理说没有问题啊。。。
#include<iom16v.h>
#include<macros.h>

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#define BAUD 9600
#define CRYSTAL  4000000

#define FRAMING_ERROR (1<<FE)   //接收帧错
#define PARITY_ERROR (1<<PE)  //校验错误
#define DATA_OVERRUN (1<<DOR) //接收数据溢出错
#define DATA_REGISTER_EMPTY (1<<UDRE)   //数据寄存器空



#pragma data:code  
const  table_duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
           0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};
const  table_wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

#pragma interrupt_handler USART_RXC:12  //RX接收中断涵数

void USART_RXC()
{
   
   uchar status,data;
   UCSRB&=~BIT(RXCIE);//RXCIE
   status=UCSRA;
   data=UDR;
   
   if(status&(FRAMING_ERROR|PARITY_ERROR|DATA_OVERRUN)==0)
        PORTC=table_duan[data];
   UCSRB|=BIT(RXCIE);

}
void USTART_TXC(uchar data)   //数据发送
{
   
   while(!(UCSRA&DATA_REGISTER_EMPTY));
   UDR=data;
}
void init_usart()  //初始化
{
   PORTD=0X03;
   DDRD=0X02;
   
   UCSRA=0X00;
   UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);//10011000
   UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
   UBRRH=0;// 晶振使用4M,波特率9600
   UBRRL=25;//
   
}

void delay(uint z) //延时函数
{
    uint x,y;
for(x=0;x<z;x++)
  for(y=0;y<5;y++);
}
void main()
{
   uchar i=0;
   DDRA=0X0f;
   PORTA=table_wei[0]; //数码管位选
   DDRC=0xff;
   PORTC=table_duan[0]; //数码管段选
   
   init_usart();
   SEI();
   while(1)
   {  
        
       if(i++==15)i=0;
   USTART_TXC(i);
   delay(5000);
   
   }
}

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2009-9-3 01:04:34 | 显示全部楼层
问题找到了,呵呵,if(status&(FRAMING_ERROR|PARITY_ERROR|DATA_OVERRUN)==0) 这句有问题呀。。。原来里面要加括号,否则会选判断测试等于0再与。晕,基本功不扎实啊,以后要多练啊!打扰马老师了,不好意思。。

出0入0汤圆

发表于 2009-9-3 22:28:09 | 显示全部楼层
跟我犯得错误一样啊 自己能检查出来 很不容易啊

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-16 07:38

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

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