搜索
bottom↓
回复: 6

atmega16内部AD多路采集

[复制链接]

出0入0汤圆

发表于 2012-7-11 20:35:43 | 显示全部楼层 |阅读模式
当我用atmega16内部AD一路采集信号时用到了AD的中断,我现在想是想三路测量,还要用到中断函数吗,新手上路,请大家多多指教???
#include <iom16v.h>
#include <macros.h>
#include "12864.h"
void adc_init(void)//ADC端口初始化
{
  DDRA &= ~BIT(0);//设置AD0端口为输入(一定要设置成输入)
  PORTA &= ~BIT(0);//PORTA |= BIT(0);(设置成1、0都可以,)
  ADMUX = 0X40;//参考电压为AVCC,ADC结果为有对齐,单端输入为ADC0
  ADCSRA = 0XEa;//ADCSRA=0XF8;ADC时钟分频为4分频
  SFIOR = 0X00;//设置为连续自由转换
  SREG |= BIT(7);//打开总中断
}

void adc_zh(uchar value_L,uchar value_H)
{
  long int value;
  int V;
  value = value_H * 256;//十六进制转换成十进制
  value = value + value_L;
  V =(int)(value*5000/1024);//转换成电压显示
  Lcd_DisplayOnenum(1,1,V);
}
void main()
{
lcdport_init();
lcd_init();
lcd_clr();
adc_init();
while(1);
}

#pragma interrupt_handler adc_isr:15
void adc_isr(void)//中断函数的服务程序
{
  uchar adc_H,adc_L;
  adc_L = ADCL;//读出低位
  adc_H = ADCH;//读出高位
  adc_zh(adc_L,adc_H);//将十六进制转换成十进制
}

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-7-11 22:25:58 | 显示全部楼层

出0入0汤圆

发表于 2012-7-19 21:43:03 | 显示全部楼层
其实只有一个内核  不能同时采集多路

出0入4汤圆

发表于 2012-7-20 10:12:49 | 显示全部楼层
本帖最后由 zhanyanqiang 于 2012-7-20 10:14 编辑

完全可以,我用主循环里面轮番切换端口和AD中断里面切换3次端口都实现了,反正实现了3路采集,其实是一个个来采集...只不过时间快,可以看做是一个时刻取了3个通道3个数据回来

出0入0汤圆

 楼主| 发表于 2012-7-20 21:17:10 | 显示全部楼层
恩,看了说明书后好好研究了一下,最后写出来了,谢谢你啊

出0入0汤圆

发表于 2013-7-9 23:07:33 | 显示全部楼层
帮帮忙http://www.amobbs.com/thread-5541729-1-1.html

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-24 01:21

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

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