12887.lst

来自「数据采集系统的好参考资料,高精度的传感器采集系统」· LST 代码 · 共 76 行

LST
76
字号
C51 COMPILER V7.50   12887                                                                 09/13/2006 09:30:06 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 12887
OBJECT MODULE PLACED IN 12887.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12887.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //-------------------------------------------------------------------
   2          //12887驱动程序,程序定义p2.6作为芯片的片选,根据实际情况可进行修改
   3          //程序与外部的接口是指针变量dt,可有调用程序提供
   4          //-------------------------------------------------------------------
   5          #include"absacc.h"
   6          #define mca XBYTE[0xbf0a]
   7          #define mcb XBYTE[0xbf0b]
   8          #define mcc XBYTE[0xbf0c]
   9          #define mcd XBYTE[0xbf0d]
  10          unsigned char xdata *addr=0xbf00;   //定义addr为基地址指针
  11          unsigned char bdata buf;
  12          sbit uip=buf^7;
  13          
  14          unsigned char at[6]={6,9,7,4,2,0};              //时标寄存器地址缓冲区,依次为年月日时分秒
  15          //----------------------------------------------------------------------------
  16          //函数:void init_12887(void)
  17          //功能:12887初始化函数
  18          //----------------------------------------------------------------------------
  19          void DS12887_init(void) 
  20          {
  21   1         mca=0x2f;      //时钟频率为32.768kHz,中断周期500ms
  22   1         buf=mcc;       //读寄存器C,清零中断请求标志
  23   1         buf=mcd;       //读寄存器D,使VRT=1,数据有效
  24   1         mcb=0x76;      //允许中断,时标为二进制码,12小时方式 
  25   1      }
  26          //-------------------------------------------------------------------------
  27          //函数:void Write_12887(unsigned char *dt)
  28          //功能:12887写数据函数
  29          //参数:时间缓冲区
  30          //--------------------------------------------------------------------------
  31          void Write_12887(unsigned char *dt) 
  32          {
  33   1         unsigned char i;
  34   1         mcb|=0x80;                   //写禁止12887命令,b寄存器最高位置1
  35   1         for(i=0;i<6;i++)
  36   1            *(addr+at[i])=*(dt+i);
  37   1         mcb&=0x7f;                   //写允许12887命令使其工作,b寄存器最高位置0
  38   1      } 
  39          //--------------------------------------------------------------------------
  40          //函数:void Read_12887(unsigned char *dt)
  41          //功能:12887读数据函数
  42          //参数:数据读入时间缓冲区
  43          //---------------------------------------------------------------------
  44          void Read_12887(unsigned char *dt) 
  45          {
  46   1         unsigned char i;
  47   1         do{buf=mca;}while(uip);      //检测芯片是否处在更新周期阶段
  48   1         for(i=0;i<6;i++)
  49   1            *(dt+i)=*(addr+at[i]);
  50   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    138    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V7.50   12887                                                                 09/13/2006 09:30:06 PAGE 2   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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