#include <STC8H.H>
#include "led_segment.h"
/*ADC控制寄存器*/
#define ADC_POWER 0x80 //打开ADC电源
#define ADC_START 0x40 //ADC转换启动
#define ADC_FlAG 0x20 //ADC转换标志
#define ADC_CHS 0x00 //模拟通道选择0~1111
/*ADC配置寄存器*/
#define RESFMT 0x20 //转换结果右对齐,ADC_RES保存结果高4位,ADC_RESL保存结果低8位
#define SPEED 0x0f //ADC工作时钟频率0~1111
/*ADC时序控制寄存器*/
#define CSSETUP 0x80 //ADC通道选择时间控制
#define CSHOLD 0x60 //ADC通道选择保持时间控制
#define SMSPDUTY 0x1f //ADC模拟信号采样时间控制
void ADC_Init(void)
{
ADC_CONTR |= ADC_POWER | ADC_CHS; //打开ADC电源,选择模拟通道 P1.0
ADCCFG |= RESFMT | SPEED; //转换结果右对齐,ADC工作时钟频率SYSclk/2/16
ADCTIM |= CSSETUP | CSHOLD | SMSPDUTY;
}
void main (void)
{
P_SW2 |= 0x80; //使能访问 XFR
GPIO_Init();
ADC_Init();
while(1)
{
unsigned char temp;
unsigned int Result,V;
ADC_CONTR |= ADC_START;
do
{
temp = ADC_CONTR & ADC_FlAG;
}
while(!temp); //查询ADC完成标志
ADC_CONTR &= ~ADC_FlAG; //ADC完成标志位清零
Result = ADC_RES; //高四位
Result <<= 8;
Result |= ADC_RESL; //低八位
V = Result*0.12207; //(5/4096)*100
LED_7SEG_CAT_Display(V,2);
}
}
STC8H8K64U——ADC(查询)
最新推荐文章于 2024-04-02 13:06:40 发布