搜索
bottom↓
回复: 1

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

[复制链接]

出0入0汤圆

发表于 2008-4-2 15:26:55 | 显示全部楼层 |阅读模式
小弟的程序:
#define fosc 10000000              //  外接 10MHZ晶振   ATMEGA48
#define baud 9600                  //设置波特率9600     
#define MYUBRR  fosc/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)
   {
    char  value=0x0;
        value=ADC_Convert();   //

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2008-4-3 17:18:19 | 显示全部楼层
前两句就错了
不好意思。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-4 00:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表