打印
[活动专区]

【赛元95F】 + 8、SC95F8617 ADC测试

[复制链接]
586|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tlled|  楼主 | 2020-3-25 12:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
ADC, ni, AI, ui, AC
    测试下ADC功能。

    一、硬件电路

    使用ADC3端口来采集模拟电压。
     

    二、程序

    2.1、main.c


#include "config.h"

void main(void)
{
        uint i=0;
        uint adc_val;
        Init_led();
        Init_key();
        Init_uart(32, 9600);
        Init_rs485();
        uart_chl(1);   //usb-ttl
        adc_test();
        while(1)
        {
        }
}

    2.2、adc.c
#include "config.h"

bit adcflag = 0;

void Init_adc(uchar chl)
{
        ADCCON = 0X80|chl;
        if(chl<8)     //EADC
        {
                ADCCFG0=1<<chl;
        }
        else
        {
                ADCCFG1=1<<(chl-8);
        }
        //EADC=1;
        ADCCON &= ~(0X20);
        //IE |= 0X40;
        EA=1;
}

void ADC_Interrupt(void) interrupt 6
{
        ADCCON &= ~(0X20);   
        adcflag = 1;
}

//uint ADC_Readdata(uchar chl)
//{
//        uint adcvalue=0;
//        Init_adc(chl);
//        ADCCON |= 0X40;   
//        while(!adcflag);
//        adcflag=0;
//        adcvalue = (ADCVH<<4)+(ADCVL>>4);
//        return adcvalue;
//}

void  adc_test(void)
{
        uint adcvalue=0;
        uint i;
       
        Init_adc(3);
        while(1)
        {
                ADCCON |= 0x40;   
                //while(!adcflag);
                while(!(ADCCON&0x20));
                ADCCON &= ~(0X20);
                adcflag=0;
                adcvalue = (ADCVH<<4)+(ADCVL>>4);
                uart_send_char(adcvalue>>8);
                uart_send_char(adcvalue);
                for(i=0;i<50000;i++);
        }
       
}


    2.3、adc.h
#ifndef _ADC_H_
#define _ADC_H_

#define IC_MODEL  SC95F8617

void  adc_test(void);
       

#endif



    三、测试结果

    调整电位器,串口输出的数据变化。
   












使用特权

评论回复

相关帖子

沙发
21ic小喇叭| | 2020-3-25 14:31 | 只看该作者
感谢分享,奖励您100家园币,家园币可以兑换礼品或抽奖,欢迎体验~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

125

主题

690

帖子

6

粉丝