C8051F040内部温度传感器C程序
附录一://内部温度传感器调试程序////利用过采样实现16位精度////ADC0_TEMP_PRO.c#include <C8051F040.h>#define ADC0START temppage
附录一: //// 内部温度传感器调试程序 //16// 利用过采样实现位精度 //ADC0_TEMP_PRO.c #include<C8051F040.h> #defineADC0START temppage=SFRPAGE;SFRPAGE=0x00;AD0BUSY=1;SFRPAGE=temppage #defineSTACK_LEN128 //1281288 采样次,再将个数据总和除以 //1616bit 处理后的数据相当于个原始数据之和,在数值表现形式上为 typedefunsignedintuint; typedefunsignedcharuchar; typedefunsignedlongulong; sfr16RCAP2=0xca; sfr16RCAP3=0xca; sfr16RCAP4=0xca; sfr16TMR4=0xcc; sfr16TMR3=0xcc; sfr16TMR2=0xcc; sfr16PCA0CP0=0xfb; sfr16PCA0CP1=0xfd; sfr16PCA0CP2=0xe9; sfr16PCA0CP3=0xeb; sfr16PCA0CP4=0xed; sfr16PCA0CP5=0xe1; sfr16ADC0VAL=0xbe; sfr16ADC0GT=0xc4; sfr16ADC0LT=0xc6; uchartemppage; bitisnewdata; uintkk; floattemp; ucharstack_index; ulongtotal; xdatafloatt[20];//20 存放温度检测数据,为个数据 xdatauintmystack[STACK_LEN];// 过采样数据数组 voidadc0_mux(uchartype,ucharsour__); voidadc0_sour__(ucharsour__); voidp3anolog_ini(ucharport); voidHVDA_ini(uchargaind); voidadc0_ini(); voiddelay1ms(uinttime); voidconfig();

