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

📄 call7416.lst

📁 单片机C语言教程
💻 LST
字号:
C51 COMPILER V8.02   CALL7416                                                              08/10/2007 12:00:04 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE CALL7416
OBJECT MODULE PLACED IN CALL7416.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CALL7416.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /****************************************************************/
   2          /* 这是调用AD7416的汇编程序(AD7416A.ASM)的C51程序。           */
   3          /* 文件名CALL7416.C。                                           */
   4          /* 功能:本程序是通过调用汇编语言程序读出数字温度传感器AD7416   */
   5          /*    芯片的温度值,温度值占两个字节但只有高1O位有效。测温范围  */
   6          /*    是-55℃~125℃。本程序含有计算温度值和判断温度正负的部分。 */
   7          /*    8片AD7416的地址依次是:90H,92H,94H,96H,98H,9AH,9CH,9EH。  */
   8          /*    本程序适合AD7416 和51系列单片机的连接,晶振为12MHZ左右。   */
   9          /****************************************************************/
  10          #include <reg52.h>
  11          #define uchar unsigned char
  12          #define uint unsigned int
  13          
  14          void delay1(uint x);
  15          extern  uint chai;            //把全局变量chai声明为外部变量
  16          extern  uint a_func(uchar);   //把a_func 声明为外部函数
  17          
  18          uint idata wendu;             //温度
  19          uchar idata ZorF;             //正还是负判断字节
  20          uint idata mid1;
  21          float idata Temperature;
  22          uchar i,h,l,c,temp;
  23          
  24          void delay1(uint x)           //延时程序
  25          {
  26   1       uchar tw;
  27   1       while (x-->0){
  28   2       for (tw=0;tw<125;tw++){;}
  29   2       }
  30   1      }
  31          
  32          void main()                   //主程序
  33          {
  34   1            SP=0xcf;
  35   1            delay1(1000);
  36   1            EA=0;
  37   1            chai=a_func(0x90);    // 将第1片AD7416的温度值读出,0x90为第1片AD7416的地址
  38   1            mid1=chai;            // 把它放入变量mid1中
  39   1            h=mid1/256;           // 以下是计算温度值和判断温度正负的部分。
  40   1            l=mid1%256;
  41   1            c=2;                  //循环两次
  42   1            wendu=h;temp=l;       //将高8位和低8位的前2位连接
  43   1                                  
  44   1            while(c--)
  45   1             {
  46   2            if(temp&0x80)
  47   2               {
  48   3                wendu<<=1;
  49   3                wendu|=0x0001;
  50   3                }
  51   2            else
  52   2                {
  53   3                wendu<<=1;
  54   3                }
  55   2              }
C51 COMPILER V8.02   CALL7416                                                              08/10/2007 12:00:04 PAGE 2   

  56   1            //以下判断温度正负
  57   1            if(h&0x80)     //若为负
  58   1            {
  59   2            wendu=wendu-0x01;
  60   2            wendu=~wendu; //变回原码
  61   2            wendu=wendu&0x03FF;
  62   2            Temperature=wendu*0.25;
  63   2            ZorF=0;
  64   2            }
  65   1            else        //若为正
  66   1            {
  67   2            Temperature=wendu*0.25;
  68   2            ZorF=1;
  69   2             }
  70   1            while(1);
  71   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    216    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   IDATA SIZE       =      9    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -