📄 analog.c
字号:
//-----------------------------------------------------------------------------
// Net ANALOG.C
//
// This module handles the analog inputs which are external temperature
// sensor, the on-chip temperature sensor, and operating voltage.
//-----------------------------------------------------------------------------
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <reg52.h>
#include "net.h"
#include "serial.h"
#include "analog.h"
#include <intrins.h>
sbit adclk=P1^5;
sbit addata=P1^6;
sbit adcs=P1^7;
#define uchar unsigned char
#define uint unsigned int
extern char xdata text[];
UINT idata cpu_temperature, air_temperature, cpu_voltage;
UCHAR idata mux_select;
/*********TLC549子程序***********************/
unsigned char ad(void) //TLC549的采样子程序
{
unsigned char i,sample_data;
bit ea_flag;
ea_flag=EA;
EA=0;
adcs=0;
_nop_();
_nop_();
if(addata==1)
{
sample_data=1;
}
else
{
sample_data=0;
}
for(i=0;i<7;i++)
{
sample_data=(sample_data<<1);
adclk=1;
_nop_();
_nop_();
adclk=0;
if(addata==1)
{
sample_data=(sample_data|0x01);
}
}
adclk=1;
_nop_();
_nop_();
adclk=0;
_nop_();
_nop_();
adcs=1;
EA=ea_flag;
return sample_data;
}
//--------------------------------------------------------------------------
// This function is a little state machine which reads one analog
// inputs at a time, out of the 3 possible inputs
// 1. On-chip temperature
// 2. External air temperature
// 3. CPU operating voltage
//--------------------------------------------------------------------------
void read_analog_inputs(void)
{
cpu_temperature=2500;
air_temperature=(uint)ad()*19;
cpu_voltage=50;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -