东软单片机-ES7P213x——ADC模块

  • gms
    了解作者
  • C/C++
    开发工具
  • 6.1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 5 积分
    下载积分
  • 1
    下载次数
  • 2022-06-26 17:05
    上传日期
东软单片机-ES7P213x——ADC模块程序
adc.zip
  • adc
  • adc.hrccproj
    2.3KB
  • main.c
    3KB
  • adc.sln
    876B
  • adc.suo
    13.5KB
内容介绍
/********************************************************* *Copyright (C), 2021, Shanghai Eastsoft Microelectronics Co., Ltd. *文件名: adc *作 者: AE Team *版 本: V1.0 *日 期: 2021/12/08 *描 述: ADC程序例程 1.使用ES7P2131芯片的ADC模块,采用查询方式实现对模拟输入电压的数字量转换。ADC转换包括采样和转换两个过程。 2.本例程实现对AIN0通道进行模数转换,测量的数字量保存在ADC_AIN0变量中。 *备 注: 适用于ES7P2131 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。 **********************************************************/ #include <hic.h> unsigned char g_adc_value_h; unsigned char g_adc_value_l; unsigned int ADC_Data; //AD转换结果 unsigned int ADC_AIN0[100]; //AIN3通道转换结果数组 unsigned char j; /******************************************************** 函数名: void ram_clear(void) 描 述: 通用RAM区清零子程序 输入值: 无 输出值: 无 返回值: 无 **********************************************************/ void ram_clear(void) { GIE = 0; for(IAAH = 0; IAAH < 0x04; IAAH++) { for(IAAL = 0; IAAL < 0xFF; IAAL++) { IAD = 0x00; } IAD = 0x00; //clr_wdt(); } } /********************************************************* 函数名: void convert_adc(void) 描 述: ADC转换程序 输入值: 无 输出值: 无 返回值: 无 **********************************************************/ void convert_adc(void) { ADTRG = 1; while(ADTRG); g_adc_value_h = ADCRH; g_adc_value_l = ADCRL; } /********************************************************* 函数名: void main() 描 述: 主函数 输入值: 无 输出值: 无 返回值: 无 **********************************************************/ void main() { ram_clear(); //初始化RAM PBS = 0x3F; //AIN4~9设置为模拟端口 PES = 0xF0; //AIN0~3设置为模拟端口 PBT = 0x3F; //AIN4~9设置为输入端口 PET = 0xF0; //AIN0~3设置为输入端口 ADCHS3 = 0; //选择AD模拟通道0 ADCHS2 = 0; ADCHS1 = 0; ADCHS0 = 0; //SMPON = //采样软件控制位 SMPS = 1; //硬件采样使能 //ADTRG = //转换启动位 //ADEN = //ADC使能位 //ADCTL0 = ADLPEN = 0; //高速高功耗模式 ADVREFNS = 0; //负参考源选择位 VSS ADVREFPS = 0; //正参考源选择位 VDD //ADVREFVS = //ADBITSEL1 = 1; //转换值选择位 12位 //ADBITSEL0 = 1; //ADCTL1 = ADFM = 1; //结果低位对齐 ADCKS2 = 0; //转换时钟频率(Tadclk)选择位 8分频 ADCKS1 = 1; ADCKS0 = 1; ADST1 = 1; //采样时间选择位 8个时钟采样 ADST0 = 0; //ADVREF_CHOPEN = //内部参考电压斩波器使能位 ADVREF_EN = 1; //内部参考电压模块使能位 //ADCTL2 = ADEN = 1; convert_adc(); //第1次转换值不准,需丢弃 convert_adc(); //第2次转换值不准,需丢弃 j = 0; while (1) { __Asm CWDT; // 喂狗 convert_adc(); // 获得ADC转换值 ADC_Data = ((unsigned int)g_adc_value_h) << 8; ADC_Data += g_adc_value_l; ADC_AIN0[j] = ADC_Data; j++; if(j > 100) { j = 0; } } }
评论
    相关推荐