PT100通过op07c芯片接到C8051F020芯片,用网上找的例程改的测到的温度室温只有8度,而且显示25以上就又称0了,大神们帮我看看是程序哪里不对
万分感谢
程序如下
#include <stdio.h>
#include <INTRINS.H>
#define uchar unsigned char
#define uint unsigned int
sfr16 ADC0= 0xbe; // ADC0 data
sfr16 ADC0GT = 0xc4; // ADC0 greater than window
sfr16 ADC0LT = 0xc6; // ADC0 less than window
sfr16 DAC0= 0xd2; // DAC0 data
sfr16 DAC1= 0xd5; // DAC1 data
//#define SYSCLK 22118400 // SYSCLK frequency in Hz
//#define SAMPLE_RATE 50000 // Sample frequency in Hz
//#define AMX0SL_AIN 0 // 0=AIN0....7=AIN7,8=TEMP
uint ADCdata;
bit ADCflag;
uchar volarray[3]; //读到的数值缓存
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// ADC0配置,ADC0BUSY为转换启动源, 并在转换完成时产生中断
//-----------------------------------------------------------------------------
void ADC0_Init (void)
{
AMX0CF = 0x60; // AMUX Configuration Register
AMX0SL = 0; // 第0个通道
ADC0CF = (22118400/50000)<< 3; // ADC conversion clock = .5MHz
ADC0CN = 0x80; // ADC Control Register
REF0CN = 0x03; // 启用内部基准源
EIE2 |= 0x02; // 启用 ADC 中断
}
//-----------------------------------------------------------------------------
// 显示子程序
//-----------------------------------------------------------------------------
void ADZH()
{
float Voltage;
int Vol;
uint temp;
if (ADCflag)
{
ADCflag=0;
Voltage=(ADCdata*2.4)/4096;
Vol=Voltage*100;
volarray[0]=Vol/100; //数码管第一位
temp=Vol%100;
volarray[1]=temp/10; //数码管第二位
volarray[2]=temp%10; //数码管第三位
AD0BUSY=1;
}
}
//-----------------------------------------------------------------------------
void ADCSH ()
{
ADC0_Init(); // init ADC
AD0BUSY=1;
}
//-----------------------------------------------------------------------------
// ADC0采样中断
//-----------------------------------------------------------------------------
void ADC0_ISR (void) interrupt 15
{
AD0INT = 0; // 清 ADC 中断标志位
ADCdata= ADC0; // ADC采样数据
ADCflag=1;
}
|