soloxin 发表于 2013-5-8 17:48:48

我用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:22

注释掉报错的两句还报错不?

soloxin 发表于 2013-5-8 18:53:43

marshallemon 发表于 2013-5-8 18:32 static/image/common/back.gif
注释掉报错的两句还报错不?

注释掉就不报错了,直接写十六进制就没问题

marshallemon 发表于 2013-5-8 20:41:11

soloxin 发表于 2013-5-8 18:53 static/image/common/back.gif
注释掉就不报错了,直接写十六进制就没问题

把你的宏定义中的unsigned char 去掉试试

soloxin 发表于 2013-5-8 21:40:53

marshallemon 发表于 2013-5-8 20:41 static/image/common/back.gif
把你的宏定义中的unsigned char 去掉试试

还是不行,我这格式是按照马潮老师书里面的格式来得

soloxin 发表于 2013-5-8 21:59:54

marshallemon 发表于 2013-5-8 20:41 static/image/common/back.gif
把你的宏定义中的unsigned char 去掉试试

我找着问题了,
#define BAUD    9600            //波特率采用9600bps
#define XTAL 12000000            //系统时钟4MHz
宏定义BAUD和XTAL要大写就好了
非常感谢你帮助我解答问题{:handshake:}

eduhf_123 发表于 2013-5-8 22:30:31

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;

把这两行的分号去掉,注意这里其实大小写并没有关系。

soloxin 发表于 2013-5-13 22:25:20

eduhf_123 发表于 2013-5-8 22:30 static/image/common/back.gif
#definextal12000000L ;
#definebaud   9600L;



哦,知道了,非常的感谢
页: [1]
查看完整版本: 我用CVAVR编译出现问题,大家帮我排除一下故障