需要一个简单模板程序

[复制链接]
1171|12
 楼主| ousj 发表于 2022-1-1 19:17 | 显示全部楼层 |阅读模式
microchip ADC采集程序
jlyuan 发表于 2022-1-1 19:19 | 显示全部楼层
你用的那个系列,不同型号有区别的
tian111 发表于 2022-1-1 19:22 | 显示全部楼层
自己到官网下载软件啊,也可以生成代码的
chuxh 发表于 2022-1-1 19:24 | 显示全部楼层
#include "pic.h"
#include "pic16f689.h"
#include "adc.h"
#include "init.h"
void AD_init(void)                        //ADRESH,ADRESL为AD结果存储器
{
        ADCON0 = 0Xa7;                        //选择通道9,左对齐参考电压为VDD,使能ADC
        ADCON1 = 0X00;                        //选择时钟为Fosc/2
        ANSELH |= 0X02;                        //将AN9,也就是RC7配置为模拟输入
        INTCON |= 0XC0;                        //使能全局非屏蔽中断,允许外设中断
        PIE1   |= 0X80;                        //运行ADC中断
        PIR1   |= 0X80;                        //AD转换器中断标志,AD转换完成,(必须用软件清零)
        
}
uint ADC_Value_ONE(void)        //ADC采集1次结果
{
        uint value=0;
        ADCON0 |=0X02;                        //将GO/DONE置1,启动AD转换
        while (ADCON0&0X02);        //查询GO/DONE位,如果为1等待转换完成,ADC转换完成,将GO/DONE置位0
        value = ADRESH;                        //读取ADC转换结果的高2位
        value = value<<8;                //将高2位左移8位
        value +=ADRESL;                        //低8位数据加入ADRESL值
        return value;
}
uint ADC_Value_more (void)        //AD多次采集取平均值
{
        uchar i=0;
        uint ADC_VALUE_ALL=0,mean_adc=0;
        for (i=0;i<ADC_NUM;i++)
        {
                ADC_VALUE_ALL+=ADC_Value_ONE();
        }
        mean_adc=ADC_VALUE_ALL/ADC_NUM;
        return mean_adc;
}
renyaq 发表于 2022-1-1 19:26 | 显示全部楼层
使用MCC插件可以自动生成。
heweibig 发表于 2022-1-1 19:28 | 显示全部楼层
这些基本的就用MCC生成吧,很方便
zyf部长 发表于 2022-1-1 19:30 | 显示全部楼层
不需要去掉一个最大值,去掉一个最小值么?
xxmmi 发表于 2022-1-1 19:32 | 显示全部楼层
".cinit" 有问题吧
yszong 发表于 2022-1-1 19:36 | 显示全部楼层
官网上应该都查得到这些资料
juventus9554 发表于 2022-1-1 19:43 | 显示全部楼层
XIDE + XC8 +MCC 可以完成大部分的事情了.
zhuhuis 发表于 2022-1-1 19:45 | 显示全部楼层
看你需要咯
dingy 发表于 2022-1-1 19:48 | 显示全部楼层
官网找资料,或者编译器自动生成。
 楼主| ousj 发表于 2022-1-1 19:50 | 显示全部楼层
嗯,预料中的结果,多谢大家啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

712

主题

7557

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部