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

📄 clock_ds1307.lst

📁 一个流量控制仪器的源码
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.07   CLOCK_DS1307                                                          07/08/2004 05:56:12 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE CLOCK_DS1307
OBJECT MODULE PLACED IN .\Output\CLOCK_DS1307.obj
COMPILER INVOKED BY: M:\Keil\C51\BIN\C51.EXE CLOCK_DS1307.C ROM(COMPACT) BROWSE MODP2 DEBUG OBJECTEXTEND CODE LISTINCLUD
                    -E SYMBOLS PRINT(.\List\CLOCK_DS1307.lst) OBJECT(.\Output\CLOCK_DS1307.obj)

stmt level    source

   1          /***********************************************************************************
   2          
   3          DS1307时钟芯片控制程序  DS1307.C
   4          
   5          MCU 型号: Philips P89C668
   6          时钟频率: 11.0592 MHz
   7          接口方式: I2C 100KHz
   8          开发环境: Keil C51 V7.07a       
   9          开发日期: 2003.11.09
  10          程序编写: 鲍方
  11                  
  12          ***********************************************************************************/
  13          
  14          #include <REG668.H>
   1      =1  /*-------------------------------------------------------------------------
   2      =1  REG668.H
   3      =1  
   4      =1  Header file for Philips 8xC668
   5      =1    
   6      =1  Copyright (c)2002 Keil Elektronik GmbH and Keil Software, Inc.
   7      =1  All rights reserved.
   8      =1  -------------------------------------------------------------------------*/
   9      =1  
  10      =1  #ifndef __REG668_H__
  11      =1  #define __REG668_H__
  12      =1  
  13      =1  /*  BYTE Registers  */
  14      =1  sfr ACC         = 0xE0;
  15      =1  sfr AUXR        = 0x8E;
  16      =1  sfr AUXR1       = 0xA2;
  17      =1  sfr B   = 0xF0;
  18      =1  sfr CCAP0H      = 0xFA;
  19      =1  sfr CCAP1H      = 0xFB;
  20      =1  sfr CCAP2H      = 0xFC;
  21      =1  sfr CCAP3H      = 0xFD;
  22      =1  sfr CCAP4H      = 0xFE;
  23      =1  sfr CCAP0L      = 0xEA;
  24      =1  sfr CCAP1L      = 0xEB;
  25      =1  sfr CCAP2L      = 0xEC;
  26      =1  sfr CCAP3L      = 0xED;
  27      =1  sfr CCAP4L      = 0xEE;
  28      =1  sfr CCAPM0      = 0xC2;
  29      =1  sfr CCAPM1      = 0xC3;
  30      =1  sfr CCAPM2      = 0xC4;
  31      =1  sfr CCAPM3      = 0xC5;
  32      =1  sfr CCAPM4      = 0xC6;
  33      =1  sfr CCON        = 0xC0;
  34      =1  sfr CH          = 0xF9;
  35      =1  sfr CL          = 0xE9;
  36      =1  sfr CMOD        = 0xC1;
  37      =1  sfr DPH         = 0x83;
  38      =1  sfr DPL         = 0x82;
  39      =1  sfr IEN0        = 0xA8;
  40      =1  sfr IEN1        = 0xE8;
C51 COMPILER V7.07   CLOCK_DS1307                                                          07/08/2004 05:56:12 PAGE 2   

  41      =1  sfr IP          = 0xB8;
  42      =1  sfr IPH         = 0xB7;
  43      =1  sfr P0          = 0x80;
  44      =1  sfr P1          = 0x90;
  45      =1  sfr P2          = 0xA0;
  46      =1  sfr P3          = 0xB0;
  47      =1  sfr PCON        = 0x87;
  48      =1  sfr PSW         = 0xD0;
  49      =1  sfr RCAP2H      = 0xCB;
  50      =1  sfr RCAP2L      = 0xCA;
  51      =1  sfr SADDR       = 0xA9;
  52      =1  sfr SADEN       = 0xB9;
  53      =1  sfr S0BUF       = 0x99;
  54      =1  sfr S0CON       = 0x98;
  55      =1  sfr SP  = 0x81;
  56      =1  sfr S1DAT       = 0xDA;
  57      =1  sfr S1IST       = 0xDC;
  58      =1  sfr S1ADR       = 0xDB;
  59      =1  sfr S1STA       = 0xD9;
  60      =1  sfr S1CON       = 0xD8;
  61      =1  sfr TCON        = 0x88;
  62      =1  sfr T2CON       = 0xC8;
  63      =1  sfr T2MOD       = 0xC9;
  64      =1  sfr TH0         = 0x8C;
  65      =1  sfr TH1         = 0x8D;
  66      =1  sfr TH2         = 0xCD;
  67      =1  sfr TL0         = 0x8A;
  68      =1  sfr TL1         = 0x8B;
  69      =1  sfr TL2         = 0xCC;
  70      =1  sfr TMOD        = 0x89;
  71      =1  sfr WDTRST      = 0xA6;
  72      =1  
  73      =1  /*  BIT Registers  */
  74      =1  
  75      =1  sbit  CY     =   PSW^7;
  76      =1  sbit  AC     =   PSW^6;
  77      =1  sbit  F0     =   PSW^5;
  78      =1  sbit  RS1    =   PSW^4;
  79      =1  sbit  RS0    =   PSW^3;
  80      =1  sbit  OV     =   PSW^2;
  81      =1  sbit  UD     =   PSW^1;
  82      =1  sbit  P      =   PSW^0;
  83      =1  
  84      =1  sbit  AD7    =   P0^7;
  85      =1  sbit  AD6    =   P0^6;
  86      =1  sbit  AD5    =   P0^5;
  87      =1  sbit  AD4    =   P0^4;
  88      =1  sbit  AD3    =   P0^3;
  89      =1  sbit  AD2    =   P0^2;
  90      =1  sbit  AD1    =   P0^1;
  91      =1  sbit  AD0    =   P0^0;
  92      =1  
  93      =1  sbit  TF1    =   TCON^7;
  94      =1  sbit  TR1    =   TCON^6;
  95      =1  sbit  TF0    =   TCON^5;
  96      =1  sbit  TR0    =   TCON^4;
  97      =1  sbit  IE1    =   TCON^3;
  98      =1  sbit  IT1    =   TCON^2;
  99      =1  sbit  IE0    =   TCON^1;
 100      =1  sbit  IT0    =   TCON^0;
 101      =1  
 102      =1  sbit  SDA     =   P1^7;
C51 COMPILER V7.07   CLOCK_DS1307                                                          07/08/2004 05:56:12 PAGE 3   

 103      =1  sbit  SCL     =   P1^6;
 104      =1  sbit  CEX2    =   P1^5;
 105      =1  sbit  CEX1    =   P1^4;
 106      =1  sbit  CEX0    =   P1^3;
 107      =1  sbit  ECI     =   P1^2;
 108      =1  sbit  T2EX    =   P1^1;
 109      =1  sbit  T2      =   P1^0;
 110      =1  
 111      =1  sbit  SM0    =   S0CON^7;
 112      =1  sbit  FE     =   S0CON^7;
 113      =1  sbit  SM1    =   S0CON^6;
 114      =1  sbit  SM2    =   S0CON^5;
 115      =1  sbit  REN    =   S0CON^4;
 116      =1  sbit  TB8    =   S0CON^3;
 117      =1  sbit  RB8    =   S0CON^2;
 118      =1  sbit  TI     =   S0CON^1;
 119      =1  sbit  RI     =   S0CON^0;
 120      =1  
 121      =1  sbit  CR2    =   S1CON^7;
 122      =1  sbit  ENS1   =   S1CON^6;
 123      =1  sbit  STA    =   S1CON^5;
 124      =1  sbit  STO    =   S1CON^4;
 125      =1  sbit  SI     =   S1CON^3;
 126      =1  sbit  AA     =   S1CON^2;
 127      =1  sbit  CR1    =   S1CON^1;
 128      =1  sbit  CR0    =   S1CON^0;
 129      =1  
 130      =1  sbit  AD15    =   P2^7;
 131      =1  sbit  AD14    =   P2^6;
 132      =1  sbit  AD13    =   P2^5;
 133      =1  sbit  AD12    =   P2^4;
 134      =1  sbit  AD11    =   P2^3;
 135      =1  sbit  AD10    =   P2^2;
 136      =1  sbit  AD9     =   P2^1;
 137      =1  sbit  AD8     =   P2^0;
 138      =1  
 139      =1  sbit  EA     =   IEN0^7;
 140      =1  sbit  EC     =   IEN0^6;
 141      =1  sbit  ES1    =   IEN0^5;
 142      =1  sbit  ES0    =   IEN0^4;
 143      =1  sbit  ET1    =   IEN0^3;
 144      =1  sbit  EX1    =   IEN0^2;
 145      =1  sbit  ET0    =   IEN0^1;
 146      =1  sbit  EX0    =   IEN0^0;
 147      =1  
 148      =1  sbit  ET2    =   IEN1^0;
 149      =1  
 150      =1  sbit  RD      =   P3^7;
 151      =1  sbit  WR      =   P3^6;
 152      =1  sbit  T1      =   P3^5;
 153      =1  sbit  T0      =   P3^4;
 154      =1  sbit  INT1    =   P3^3;
 155      =1  sbit  INT0    =   P3^2;
 156      =1  sbit  TXD     =   P3^1;
 157      =1  sbit  RXD     =   P3^0;
 158      =1  
 159      =1  sbit  TF2    =   T2CON^7;
 160      =1  sbit  EXF2   =   T2CON^6;
 161      =1  sbit  RCLK   =   T2CON^5;
 162      =1  sbit  TCLK   =   T2CON^4;
 163      =1  sbit  EXEN2  =   T2CON^3;
 164      =1  sbit  TR2    =   T2CON^2;
C51 COMPILER V7.07   CLOCK_DS1307                                                          07/08/2004 05:56:12 PAGE 4   

 165      =1  sbit  CT2    =   T2CON^1;
 166      =1  sbit  CP     =   T2CON^0;
 167      =1  
 168      =1  #endif
  15          #include <I2C.H>
   1      =1  /*******************************************************************
   2      =1  P89C668 单片机硬件I2C 软件包I2C.H 主方式
   3      =1  
   4      =1  668 的硬件I2C 接口定义在P1.6,P1.7 上,分别为P1.6=SCL;P1.7=SDA; (开漏输出)
   5      =1  相应寄存器      地址寄存器S1ADR --用于存放自身从地址(从方式时才有用)。
   6      =1                  数据寄存器S1DAT --接收/发送数据用。
   7      =1                  控制寄存器S1CON --用于硬件I2C 的设置使能、启动、结束,
   8      =1                                  应答控制,中断标志等。
   9      =1                  状态寄存器S1STA --指示I2C 总线的操作状态码,高5 位有效
  10      =1                                  若I2C 中断志置位,可查询此寄存器判断
  11      =1                                  总线情况。
  12      =1                                  
  13      =1  !此软件包是以查询方式完成各种总线操作的,在使用前应对总线进行检查,并
  14      =1  使用看门狗,以防等待总线而造成死机。
  15      =1  
  16      =1  !系统工作主频不要高于12MHz
  17      =1  
  18      =1  *******************************************************************/
  19      =1  
  20      =1  
  21      =1  #ifdef uchar 
           =1   #define READYDEF_uchar 1   /*宏uchar已定义*/
           =1 #else  
  24      =1    #define uchar unsigned char
  25      =1  #endif
  26      =1  
  27      =1  #define DS1307_ADDRESS 0xD0                 // I2C write address of DS1307
  28      =1  
  29      =1  
  30      =1  struct DS1307_time                            // define a structure to store
  31      =1  {                                             // date and time in
  32      =1    uchar seconds;
  33      =1    uchar minute;
  34      =1    uchar hour;
  35      =1    uchar weekday;
  36      =1    uchar day;
  37      =1    uchar month;
  38      =1    uchar year;
  39      =1    uchar control;
  40      =1  
  41      =1  //  bit clock_halt;
  42      =1  //  bit mode_12hour;
  43      =1  
  44      =1  };
  45      =1  
  46      =1  
  47      =1  /*******************************************************************
  48      =1                          检查总线是否正常
  49      =1  功能:   进行I2C 总线的初始化前的检查
  50      =1          如果返回0,表示总线有误。
  51      =1          如果返回1,表示总线正常。
  52      =1  *******************************************************************/
  53      =1  extern bit I2C_CheckBus();
  54      =1  
  55      =1  /*******************************************************************
  56      =1                          申请总线
  57      =1  功能: 进行I2C 总线的初始化--包括时钟速率,I2C 使能,发送起始信号等
C51 COMPILER V7.07   CLOCK_DS1307                                                          07/08/2004 05:56:12 PAGE 5   

  58      =1  *******************************************************************/
  59      =1  extern void I2C_GetBus();
  60      =1  
  61      =1  /*******************************************************************
  62      =1                          发送数据函数
  63      =1  功能: 用于向总线发送数据。
  64      =1  *******************************************************************/
  65      =1  extern void I2C_Send(uchar c);
  66      =1  
  67      =1  
  68      =1  /*******************************************************************
  69      =1                          向无子地址器件发送字节数据函数
  70      =1  函数原型: bit I2C_SendByte(uchar sla,ucahr c);
  71      =1  功能:   从启动总线到发送地址、数据,结束总线的全过程,从器件地址sla,
  72      =1          待发送的数据c ,如果返回1 表示操作成功,否则操作有误。
  73      =1  ********************************************************************/
  74      =1  extern bit I2C_SendByte(uchar sla,uchar c);
  75      =1  
  76      =1  
  77      =1  /*******************************************************************
  78      =1                          向有子地址器件发送多字节数据函数
  79      =1  函数原型: bit I2C_SendStr(uchar sla,uchar suba,ucahr *s,uchar no);
  80      =1  功能:   从启动总线到发送地址、子地址、数据、结束总线的全过程。从器件
  81      =1          地址sla、子地址suba、发送内容是s、指向的内容发送no个字节。
  82      =1          如果返回1,表示操作成功,否则操作有误。
  83      =1  ********************************************************************/
  84      =1  extern bit I2C_SendStr(uchar sla,uchar suba,uchar *s,uchar no);
  85      =1  
  86      =1  
  87      =1  /*******************************************************************
  88      =1                          向无子地址器件读字节数据函数
  89      =1  函数原型: bit I2C_RcvByte(uchar sla,ucahr *c);
  90      =1  功能:   从启动总线到发送地址,读数据,结束总线的全过程,从器件地
  91      =1          址sla、返回值在c。
  92      =1          如果返回1,表示操作成功,否则操作有误。
  93      =1  ********************************************************************/
  94      =1  extern bit I2C_RcvByte(uchar sla,uchar *c);

⌨️ 快捷键说明

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