AVR Studio4中ATMEGA128串口程序发什么都显示的00

AVRATMEL128芯片,用STCISP烧写于电脑相连,发1也好发a也好,电脑串口助手都显示00,发什么返什么也试了,也是不管发什么返的都是00,急请大神指点:程序如下... AVR ATMEL128芯片,用STC ISP烧写于电脑相连,发1也好发a也好,电脑串口助手都显示00,发什么返什么也试了,也是不管发什么返的都是00,急请大神指点:程序如下:
void uart_init(uint baud)
{
SREG&=~BIT(7);
UCSR0B=0x00;
UCSR0A=0x00; //控制寄存器清零
UCSR0C=0X06;//0000 0110(1<<URSEL0)|(0<<UPM00)|(3<<UCSZ00);
//选择UCSRC,异步模式,禁止
// 校验,1位停止位,8位数据位
baud=mclk/16/baud-1; //波特率最大为65K
UBRR0L=baud;
UBRR0H=baud>>8; //设置波特率
UCSR0B=0X98;//(1<<TXEN0)|(1<<RXEN0)|(1<<RXCIE0); //接收、发送使能,接收中断使能1001 1000
SREG|=BIT(7); //全局中断开放
PORTE = 0xFF; //设置RXD0和TXD0
DDRE |= 0x02; //配置TX为输出(很重要)
}
void uart_sendB(uchar data)
{
while(!(UCSR0A&(BIT(UDRE0)))) ;
UDR0=data;
while(!(UCSR0A&(BIT(TXC0))));
UCSR0A|=BIT(TXC0);
}
void usart0_RX_interrupt(void)
{
UCSR0B&=~BIT(RXCIE0);
rdata=UDR0;
flag=1;
UCSR0B|=BIT(RXCIE0);
}
void main(void)
{
uchar i=4;
uchar j='a';
uart_init(19200);;
while(1)
{
uart_sendB(1);
delay(10);

//uart_sendB(j);
//delay(10);
// if(flag==1)
// {
// uart_sendB(rdata);
// flag=0;
// }
}

}
晶振是11059200 波特率:19200 烧写的熔丝位
展开
 我来答
清铃烨华
2015-03-07 · 超过28用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:43.7万
展开全部
void uart_sendB(uchar data)

{
while(!(UCSR0A&(BIT(UDRE0)))) ;
UDR0=data;
while(!(UCSR0A&(BIT(TXC0))));
UCSR0A|=BIT(TXC0);
}
你把这个函数改成:
void uart_sendB(uchar data)

{
while(!(UCSR0A&(BIT(UDRE0)))) ;
UDR0=data;
}
你不要对TXC0进行操作,只要这个TXC0=1,就会立马跳入中断中,进入中断TXC0会自动清零的。
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
查晓筠0i5
2015-02-17 · TA获得超过2753个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:5143万
展开全部
关注这个问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式