⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc0_temp.c

📁 C8051F340开发板开发的通过调试片外电阻的值
💻 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 + -