求助:高手帮我看下我的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转换后的结果怎么付给串口查询啊 ?????????急!!!!!!!!!!!!!!!! 前两句就错了
不好意思。
页:
[1]