标题:
请教一下单片机代码读取P1.0 P1.1adc为啥读取不到数值
[打印本页]
作者:
宏达工控
时间:
2025-7-26 12:41
标题:
请教一下单片机代码读取P1.0 P1.1adc为啥读取不到数值
#include <STC15F2K60S2.H>
void InitADC(void)
{
P1ASF = 0x03;
ADC_RES = 0;
ADC_CONTR = 0x80;
_nop_(); // 等待ADC稳定
_nop_();
_nop_();
_nop_();
}
unsigned int GetADCResult(unsigned char ch)
unsigned int result;
ADC_CONTR = (ADC_CONTR & 0xF8) | (ch & 0x07);
ADC_CONTR |= 0x08;
_nop_();
_nop_();
while (!(ADC_CONTR & 0x10));
ADC_CONTR &= ~0x10;
result = (ADC_RES << 2) | (ADC_RESL & 0x03);
return result;
}
void main(void)
{
unsigned int voltage = 0; //
unsigned int current = 0; //
while(1)
{
// 采集电压值(通道0:P1.0)
voltage = GetADCResult(0);
// 电压转换.最大数3000
voltage = (voltage * 3000) / 1023; //3000
//voltage = 2999;
// 采集电流值(通道1:P1.1)
current = GetADCResult(1);
current = (current * 1000) / 1023;
}
作者:
WL0123
时间:
2025-7-26 16:37
P1M0 = 0x00; P1M1 = 0x03; 设置P1.0、P1.1为高祖模式
#include <STC15F2K60S2.H>
#include <intrins.h>
void InitADC(void)
{
P1ASF = 0x03;
ADC_RES = 0;
ADC_RESL = 0;
ADC_CONTR = 0x80;
_nop_(); // 等待ADC稳定
_nop_();
_nop_();
_nop_();
}
unsigned int GetADCResult(unsigned char ch)
{
unsigned int result;
ADC_CONTR = (ADC_CONTR & 0xF8) | (ch & 0x07);
ADC_CONTR |= 0x08;
_nop_();
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & 0x10));
ADC_CONTR &= ~0x10;
result = (ADC_RES << 2) | (ADC_RESL & 0x03);
return result;
}
void main(void)
{
unsigned int voltage = 0; //
unsigned int current = 0; //
P1M0 = 0x00; P1M1 = 0x03;
InitADC();
while(1)
{
// 采集电压值(通道0:P1.0)
voltage = GetADCResult(0);
// 电压转换.最大数3000
voltage = ((long)voltage * 3000) / 1024; //3000
//voltage = 2999;
// 采集电流值(通道1:P1.1)
current = GetADCResult(1);
current = ((long)current * 1000) / 1024;
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1