我用CVAVR编译出现问题,大家帮我排除一下故障
#include <mega16.h>#definextal12000000L ;
#definebaud 9600L;
#definebaud_setting (unsigned int)((unsigned long)xtal/(16*(unsigned long) baud)-1)
#definebaud_h(unsigned char)(baud_setting>>8)
#definebaud_l(unsigned char) (baud_setting)
unsigned char data ;
bit flag;
void Port_Init()
{
DDRD = 0X02;
PORTD = 0X03;
}
void USART_Init()
{
//unsigned int temp;
UCSRA = 0X00;
UCSRB = (1<<TXEN)|(1<<RXEN)|(1<<RXCIE);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
//temp = (xtal/baud/16)-1;
UBRRH =baud_h;
UBRRL =baud_l;
/********************
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x4D;
*********************/
}
void USART_Transmit(unsigned char data)
{
while(!(UCSRA & (1<<UDRE)));
UDR = data;
while(!(UCSRA&(1<<TXC)));
UCSRA |= (1<<TXC) ;
}
interrupt void usart_rx_isr(void)
{
flag = 1;
data = UDR;
}
void main()
{
Port_Init();
USART_Init();
#asm("sei")
while(1)
{
if(flag)
{
flag = 0;
USART_Transmit(data);
}
}
} 注释掉报错的两句还报错不? marshallemon 发表于 2013-5-8 18:32 static/image/common/back.gif
注释掉报错的两句还报错不?
注释掉就不报错了,直接写十六进制就没问题 soloxin 发表于 2013-5-8 18:53 static/image/common/back.gif
注释掉就不报错了,直接写十六进制就没问题
把你的宏定义中的unsigned char 去掉试试 marshallemon 发表于 2013-5-8 20:41 static/image/common/back.gif
把你的宏定义中的unsigned char 去掉试试
还是不行,我这格式是按照马潮老师书里面的格式来得 marshallemon 发表于 2013-5-8 20:41 static/image/common/back.gif
把你的宏定义中的unsigned char 去掉试试
我找着问题了,
#define BAUD 9600 //波特率采用9600bps
#define XTAL 12000000 //系统时钟4MHz
宏定义BAUD和XTAL要大写就好了
非常感谢你帮助我解答问题{:handshake:} soloxin 发表于 2013-5-8 21:59 static/image/common/back.gif
我找着问题了,
#define BAUD 9600 //波特率采用9600bps
#define XTAL 12000000 //系统时钟4MHz
宏定义BAUD和XTAL要大写就好了
非常感谢你帮助我解答问题{:handshake:}
#definextal12000000L ;
#definebaud 9600L;
把这两行的分号去掉,注意这里其实大小写并没有关系。 eduhf_123 发表于 2013-5-8 22:30 static/image/common/back.gif
#definextal12000000L ;
#definebaud 9600L;
哦,知道了,非常的感谢
页:
[1]