⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 call7416.c

📁 单片机C语言教程
💻 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 + -