我怀着"独乐乐不如众乐乐"的朴素想法,再稍夹杂能收获一些赞甚至粉丝的私心,于昨晚分享了用于4-20mA电流检测模块的A/D转换的源代码。有网友评论说代码风格感人,也有网友评论没有因为硬件驱动层、中间适配层、业务逻辑层,代码不可描述,还有网友说这硬件怎么敢豪言跟超越某宝上的板子,甚至有网友说,看到代码直接操作寄存器,如果他是我的老板,直接就把我开除了。

今天再花一点时间来自卖自夸我们的代码。A/D转换模块代码由一个.h文件和.c文件组成。.h文件用于需要开放使用的外部变量和外部函数的声明,以及宏定义。.c文件用于定义变量,函数实现等软件分为两个层级:1.硬件驱动层,通过寄存器操作对A/D、定时器、DMA进行初始化,主要包括fnADC_InitTimer,fnADC_InitDMA,

没有具体的型号吗?从这个寄存器的名字看应该是跟AD有关PCFG应该是端口配置寄存器作用是使端口在数字端口和模拟端口之间进行选择。你的pic应该是16位的吧ADxPCFGL:端口配置寄存器的低位字bit150PCFG<15:0>是选择端口是否为模拟输入1端口引脚处于数字模式,使能端口读输入,ADC输入多路开关连接到AVSS(也就是作为普通I/O口)0端口引脚处于模拟模式,禁止端口读输入,ADC采样引脚电压(用于模拟输入)注1:对于没有16路模拟输入的器件,所有PCFG位都由用户读/写。

仅供参考:#include
X轴减小sbitjia1P1^2;//Y ,Y轴增加sbitjian1P1^3;//Y,Y轴减小//ADCsbitSTARTP2^7;//ADC转换启动sbitOEP2^6;//ADC输出使能sbitEOCP2^5;//ADC转换状态标志//变量与数组chara[107];//ADC数据采样缓存uintg0,dianya1;//采样频率。