
请看一下这个avr程序有什么问题?
这个程序有问题么?为什么我在调试的时候是没问题的,但是烧到单片机里就不对,PORTC上的led一直不亮,为什么啊#include<avr/io.h>#include<ut...
这个程序有问题么?为什么我在调试的时候是没问题的,但是烧到单片机里就不对,PORTC上的led一直不亮,为什么啊
#include <avr/io.h>
#include<util/delay.h>
#define uchar unsigned char
#define uint unsigned int
const uchar ledcode[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void USART_Init(unsigned int baud)
{
UBRR0H=(baud>>8);
UBRR0L=baud;
UCSR0A=0x20;
UCSR0B=(1<<TXEN0);
UCSR0C=0x06;
}
void USART_Transmit(unsigned char data)
{
while(!(UCSR0A&(1<<UDRE0))){;};
UDR0=data;
UCSR0A|=(1<<TXC0);
}
void Init_IO(void)
{
DDRC=0xFF;
}
int main(void)
{
uchar i;
Init_IO();
USART_Init(11);
while(1){
for(i=0;i<8;i++)
{USART_Transmit(ledcode[i]);
PORTC=ledcode[i];
_delay_ms(100);
}
}
} 展开
#include <avr/io.h>
#include<util/delay.h>
#define uchar unsigned char
#define uint unsigned int
const uchar ledcode[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void USART_Init(unsigned int baud)
{
UBRR0H=(baud>>8);
UBRR0L=baud;
UCSR0A=0x20;
UCSR0B=(1<<TXEN0);
UCSR0C=0x06;
}
void USART_Transmit(unsigned char data)
{
while(!(UCSR0A&(1<<UDRE0))){;};
UDR0=data;
UCSR0A|=(1<<TXC0);
}
void Init_IO(void)
{
DDRC=0xFF;
}
int main(void)
{
uchar i;
Init_IO();
USART_Init(11);
while(1){
for(i=0;i<8;i++)
{USART_Transmit(ledcode[i]);
PORTC=ledcode[i];
_delay_ms(100);
}
}
} 展开
2个回答
展开全部
程序看起来没啥问题。先把串口部分注释掉,就测试LED试试。如果还是不行,那就可能是熔丝位配置有问题了。
更多追问追答
追问
串口注释掉led可以亮,应当是usart初始化子程序有问题
追答
把串口发送函数的while语句前加一条点亮LED的语句,然后在UDR0=data;前面加一条熄灭LED的语句,看看能不能正常工作,如果LED能亮,但是不能熄灭,那就是while语句没有退出

2024-11-28 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡...
点击进入详情页
本回答由宿兴电子提供
展开全部
要么程序跑飞(这概率比较低),要么就是卡在usart-transmit()那个函数里,因为里面有个while语句,如果寄存器没满足要求的状态就一直在
while里跑了,自然无法跑到下面的跑马灯程序了。还有你那延时函数是空跑的还是用了定时器?
while里跑了,自然无法跑到下面的跑马灯程序了。还有你那延时函数是空跑的还是用了定时器?
更多追问追答
追问
谢谢,照里说应当不会,UCSR0A我开始初始化的就是0x20(和1<<URE0是相等的),他们与之后再非操作=0,应当跳出循环啊,然后数据传输之后又将UCSR0A的UDRE0位置高,所以应当不会死循环吧。还有延时函数是util/delay.h中的操作,应当是空跑不是用定时器的吧,这个问题大么?
追答
求delay.h里面的delay函数,还有你那个烧写器支持单步调试吗?最好单步走下就很清楚是死在那句程序上面了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询