用avr的USART模块做串口测试,一直出现00 00 00 00...程序和测试结果贴在下面了,求大神指点。

#include<iom16v.h>#include<macros.h>#defineucharunsignedchar#defineuintunsignedint#de... #include <iom16v.h>#include <macros.h>#define uchar unsigned char#define uint unsigned int#define mclk 16000000/*mclk是晶振*/uchar rdata,flag=0;void delay(uint ms)//毫秒延时函数{ uint i,j; for(i=0;i<ms;i++) { for(j=0;j<1141;j++); }}void uart_init(uint baud){ UCSRB=0x00; UCSRA=0x00; //控制状态寄存器A,B清零 UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0); //写UCSRC:异步模式,禁止校验(没有校验位),1位停止位,8位数据位 baud=mclk/16/baud-1;//计算UBRR的值 UBRRL=baud; UBRRH=baud>>8; UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE); //接收、发送使能,<接收中断>使能 SREG=BIT(7); //全局中断使能 DDRD|=0X02; //激活PD1的第二功能:TXD}void uart_sendB(uchar data)//向主机发送数据{ while(!(UCSRA&(BIT(UDRE))));//UDRE置位,数据寄存器为空 UDR=data;//向UDR写数据 while(!(UCSRA&(BIT(TXC))));//TXC置位,发送结束 UCSRA|=BIT(TXC); //通过写1将TXC清零!(见课本316)}void main(){ uchar i=4; uchar j='a'; uart_init(19200);//USART初始化 uart_sendB(i); uart_sendB(j); }
而且把晶振从系统上拔下来以后也是这个结果。
展开
 我来答
百度网友a4e3cce
2015-07-28 · TA获得超过102个赞
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:110万
展开全部
既然是中断,接收数据是不是该在中断服务程序里面呢~~
追问
是啊,有一个接受数据的中断服务程序。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式