?? 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 + -