zhming 发表于 2008-4-2 15:26:55

求助:高手帮我看下我的ad转换到串口的程序!!!!!!

小弟的程序:
#define fosc 10000000            //外接 10MHZ晶振   ATMEGA48
#define baud 9600                  //设置波特率9600   
#define MYUBRRfosc/16/baud-1   //宏定义常量
#define N 8

/*               端口初始化函数            */
void port_init(void)
            {
               DDRC= 0xFF;       //ad的端口作输入
               PORTC = 0xde;       //ad的端口不使能上拉电阻
             }
unsigned int ADC_Convert(void)         //AD 采样函数
{
                unsigned int ADC_value;
                unsigned char temp1, temp2;
                ADCSRA |= _BV(ADEN);    //使能ADC
                ADMUX = 0x40;         //现采用外部参考电压改为0x40, 0通道数据采集。
                ADCSRA |= 0x06;         //64分频
                ADCSRA |= _BV(ADSC);    //ADSC置1,启动单次转化
                _delay_loop_1(50);
                while(!(ADCSRA & _BV(ADIF)));                //等待转化结束
                ADCSRA |= _BV(ADIF);                //清除中断标志
                temp1 = ADCL;                              //先读低字节
                temp2 = ADCH;
                ADC_value = temp2;
                ADC_value <<= 8;
                ADC_value |= temp1;
                ADCSRA = 0;             //关闭ADC
                return(ADC_value);
}               



/*                   UART初始化                  */         
void uart_init(unsigned int ubrr)
{
               UCSR0B=(1<<RXEN0)|(1<<TXEN0);//允许发送和接收
               UBRR0L=(unsigned char)ubrr;
               UBRR0H=(unsigned char)ubrr>>8;
               UCSR0C=(1<<USBS0)|(3<<UCSZ00);//8位数据+2位STOP位
}
/*                  uart 发送                  */
void uart_transmit(unsigned char c)
{         
               while (!(UCSR0A&(1<<UDRE0)));
                        UDR0=c;   
}

/*               uart 接受                  */         
unsigned char uart_receive(void)
{
               while(!(UCSR0A& (1<<RXC0)));
                        return UDR0;
}               

/*                        字符串输出函数                  */         
int puts(char *s)
{
                while (*s)
                {
                              uart_transmit(*s);
                              s++;
                     }
                   putchar(0x0a);//回车换行
                   putchar(0x0d);
                   return 1;
}

void main( )
{
   uart_init(MYUBRR);      //初始化UART函数
   port_init();            //端口初始化函数
   while(1)
   {
    charvalue=0x0;
        value=ADC_Convert();   //

    uart_transmit(uart_receive());
       
    }
   
}
不知道AD转换后的结果怎么付给串口查询啊 ?????????急!!!!!!!!!!!!!!!!

zhming 发表于 2008-4-3 17:18:19

前两句就错了
不好意思。
页: [1]
查看完整版本: 求助:高手帮我看下我的ad转换到串口的程序!!!!!!