讲下这段程序的编程流程和目的#include "main.h" //#include "intrins.h" BYTE ad_ch; /*---------------------------- Software delay function ----------------------------*/ void Delay_ad(WORD n) { WORD x; while (n--) { x = 5000; while (x--); } } /*---------------------------- Initial ADC sfr ----------------------------*/ void InitADC() { ad_ch = 0x00; P1ASF = ad_ch; //选择相应的AD口 P1位置 ADC_RES = 0; //Clear previous result ADC_CONTR = ADC_POWER | ADC_SPEEDLL; Delay_ad(2); //ADC power-on and delay } /*---------------------------- Get ADC result ----------------------------*/ //int GetADCResult(void) //单个ad采集 int GetADCResult(BYTE ch)//多个ad采集 { unsigned int ad_date; ad_date = 0; // ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ad_ch | ADC_START; //单个ad采集 ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START; //多个ac采集 _nop_(); //Must wait before inquiry _nop_(); _nop_(); _nop_(); while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag ADC_CONTR &= ~ADC_FLAG; //Close ADC ad_date |= ADC_RES; ad_date <<= 2; ad_date |= ADC_RESL; return ad_date; //Return ADC result }
时间: 2023-08-25 07:12:06 浏览: 52
这段程序是关于单个或多个ADC采集的函数,其中包括了初始化ADC寄存器、软件延时函数、采集结果的函数。具体的编程流程如下:
1. 引入头文件 main.h 和 intrins.h。
2. 定义了一个变量 ad_ch,用于选择相应的AD口。
3. 编写了一个软件延时函数 Delay_ad,用于实现延时的功能。
4. 编写了一个初始化ADC寄存器的函数 InitADC,其中通过 P1ASF 寄存器选择相应的AD口,然后清除前一次结果,设置 ADC_CONTR 寄存器,最后延时 2 个周期。
5. 编写了一个获取ADC采集结果的函数 GetADCResult,其中通过 ADC_CONTR 寄存器设置 ADC_POWER 和 ADC_SPEEDLL 位,然后根据单个或多个ADC采集的需求选择相应的通道,然后延时 4 个周期等待采集结束,最后通过 ADC_RES 和 ADC_RESL 寄存器获取采集结果。
总的来说,这段程序的目的是实现单个或多个ADC采集的功能。需要注意的是,这里的 ADC_CONTR、ADC_RES 和 ADC_RESL 是单片机内部的寄存器,需要根据具体的单片机型号进行修改。
相关问题
#include intrins.h作用
#include intrins.h 是一个C语言头文件,它提供了一些内嵌汇编函数,可以在C语言程序中直接使用汇编指令。这些函数可以用于访问特殊的CPU指令集,如MMX、SSE、AVX等指令集,以及一些特殊的寄存器和操作。这个头文件通常用于编写高性能的程序,例如图像处理、音视频编解码等需要大量计算的应用程序。
#include <STC8H.h>#include <intrins.h> #include <math.h>#include <stdio.h>typedef unsigned char ucha
这段代码是一个C语言程序的头文件引用部分。具体解释如下:
1. `#include <STC8H.h>`:这是引用了一个名为STC8H的头文件,该头文件可能包含了一些与STC8H芯片相关的定义和函数声明。
2. `#include <intrins.h>`:这是引用了一个名为intrins.h的头文件,该头文件可能包含了一些与嵌入式系统中的特殊指令和操作相关的定义和函数声明。
3. `#include <math.h>`:这是引用了一个名为math.h的头文件,该头文件包含了一些与数学运算相关的函数声明和宏定义,例如数学函数sin、cos等。
4. `#include <stdio.h>`:这是引用了一个名为stdio.h的头文件,该头文件包含了一些与输入输出操作相关的函数声明和宏定义,例如printf、scanf等。
5. `typedef unsigned char ucha`:这是一个类型定义语句,将unsigned char类型重命名为ucha,方便在代码中使用ucha作为变量类型。