📄 call7416.c
字号:
/****************************************************************/
/* 这是调用AD7416的汇编程序(AD7416A.ASM)的C51程序。 */
/* 文件名CALL7416.C。 */
/* 功能:本程序是通过调用汇编语言程序读出数字温度传感器AD7416 */
/* 芯片的温度值,温度值占两个字节但只有高1O位有效。测温范围 */
/* 是-55℃~125℃。本程序含有计算温度值和判断温度正负的部分。 */
/* 8片AD7416的地址依次是:90H,92H,94H,96H,98H,9AH,9CH,9EH。 */
/* 本程序适合AD7416 和51系列单片机的连接,晶振为12MHZ左右。 */
/****************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay1(uint x);
extern uint chai; //把全局变量chai声明为外部变量
extern uint a_func(uchar); //把a_func 声明为外部函数
uint idata wendu; //温度
uchar idata ZorF; //正还是负判断字节
uint idata mid1;
float idata Temperature;
uchar i,h,l,c,temp;
void delay1(uint x) //延时程序
{
uchar tw;
while (x-->0){
for (tw=0;tw<125;tw++){;}
}
}
void main() //主程序
{
SP=0xcf;
delay1(1000);
EA=0;
chai=a_func(0x90); // 将第1片AD7416的温度值读出,0x90为第1片AD7416的地址
mid1=chai; // 把它放入变量mid1中
h=mid1/256; // 以下是计算温度值和判断温度正负的部分。
l=mid1%256;
c=2; //循环两次
wendu=h;temp=l; //将高8位和低8位的前2位连接
while(c--)
{
if(temp&0x80)
{
wendu<<=1;
wendu|=0x0001;
}
else
{
wendu<<=1;
}
}
//以下判断温度正负
if(h&0x80) //若为负
{
wendu=wendu-0x01;
wendu=~wendu; //变回原码
wendu=wendu&0x03FF;
Temperature=wendu*0.25;
ZorF=0;
}
else //若为正
{
Temperature=wendu*0.25;
ZorF=1;
}
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -