📄 adc0_temp.c
字号:
//内部温度传感器调试程序//
//ADC0_TEMP.c
#include "C8051F340.h"
typedef unsigned int uint;
typedef unsigned char uchar;
typedef unsigned long ulong;
bit isnewdata;
uint kk;
float temp;
idata float t[20];//存放温度检测数据,为20个数据
// Peripheral specific initialization functions,
// Called from the Init_Device() function
void PCA_Init()
{
PCA0MD &= ~0x40;
}
void ADC_Init()
{
REF0CN = 0x0E; // Enable voltage reference VREF
AMX0P = 0x04; // Positive input starts as P2.5
AMX0N = 0x1F; // Single ended mode(neginput = gnd)
ADC0CF = 0xF8; // SAR Period 0x1F, Right adjusted
ADC0CN = 0x80; // Continuous converion on AD0BUSY=1
EIE1 |= 0x08;
}
void Port_IO_Init()
{
P2MDIN = 0xDF; // P2.5 set as analog input
P2SKIP = 0x20; // P2.5 skipped by crossbar
XBR0 = 0x00;
XBR1 = 0x40; // Enable Crossbar
}
// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
PCA_Init();
ADC_Init();
Port_IO_Init();
}
void main(){
char i;
Init_Device();
AD0BUSY=1;//ADC0启动
i=0;
while(1){
if(AD0INT){//由该位查询ADC0转化值是否更新
AD0INT=0;
kk=ADC0H*256;
kk+=ADC0L;//可用sfr16一次性读取
temp=(float)kk/1024;
temp*=3.4;
t[i]=temp;//将温度检测值存入长度为20的数组中
i++;
AD0BUSY=1;//ADC0启动
if(i>19)
i=0;//在此设断点,观察程序运行结果
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -