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

📄 timer.lst

📁 利用DS3102时钟芯片跟12864液晶制作简单的多功能万年历
💻 LST
字号:
C51 COMPILER V8.02   TIMER                                                                 10/15/2008 11:59:32 PAGE 1   


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

line level    source

   1          //寄存器宏定义
   2          #include"at89x52.h"
   3          #define WRITE_SECOND              0x80
   4          
   5          #define WRITE_MINUTE                0x82
   6          
   7          #define WRITE_HOUR                   0x84
   8                                                                               
   9          #define READ_SECOND                0x81
  10          
  11          #define READ_MINUTE                 0x83
  12          
  13          #define READ_HOUR                     0x85
  14          
  15          #define WRITE_PROTECT             0x8E
  16          
  17          
  18          //位寻址寄存器定义
  19          
  20          sbit ACC_7 = ACC^7;
  21          
  22          //管脚定义
  23          
  24          sbit SCLK = P3^5;                   // DS1302时钟信号         7脚
  25          
  26          sbit DIO= P3^6;                      // DS1302数据信号         6脚
  27          
  28          sbit RST = P3^7;                        // DS1302片选                 5脚
  29          
  30          
  31          //地址、数据发送子程序
  32          
  33          void Write1302 ( unsigned char addr,dat )     
  34          
  35          {
  36   1      
  37   1             unsigned char i,temp;
  38   1      
  39   1             RST=0;                         //CE引脚为低,数据传送中止
  40   1      
  41   1             SCLK=0;                    //清零时钟总线
  42   1      
  43   1             RST = 1;                      //CE引脚为高,逻辑控制有效
  44   1      
  45   1             //发送地址
  46   1      
  47   1             for ( i=8; i>0; i-- ) //循环8次移位
  48   1      
  49   1             {     
  50   2      
  51   2                    SCLK = 0;
  52   2      
  53   2                    temp = addr;
  54   2      
  55   2                    DIO = (bit)(temp&0x01);          //每次传输低字节
C51 COMPILER V8.02   TIMER                                                                 10/15/2008 11:59:32 PAGE 2   

  56   2      
  57   2                    addr >>= 1;                //右移一位
  58   2      
  59   2                    SCLK = 1;
  60   2      
  61   2             }
  62   1      
  63   1             
  64   1      
  65   1      //发送数据
  66   1      
  67   1             for ( i=8; i>0; i-- ) 
  68   1      
  69   1             {     
  70   2      
  71   2                    SCLK = 0;
  72   2      
  73   2                    temp = dat;
  74   2      
  75   2                    DIO = (bit)(temp&0x01);          
  76   2      
  77   2                    dat >>= 1;                   
  78   2      
  79   2                    SCLK = 1;
  80   2      
  81   2             }
  82   1      
  83   1             RST = 0;         
  84   1      
  85   1      }
  86          
  87          
  88          //数据读取子程序
  89          
  90          unsigned char Read1302 ( unsigned char addr )
  91          
  92          {
  93   1      
  94   1             unsigned char i,temp,dat1,dat2;
  95   1      
  96   1             RST=0;           
  97   1      
  98   1             SCLK=0;             
  99   1      
 100   1             RST = 1; 
 101   1      
 102   1             //发送地址
 103   1      
 104   1             for ( i=8; i>0; i-- )                      //循环8次移位
 105   1      
 106   1             {     
 107   2      
 108   2                    SCLK = 0;
 109   2      
 110   2                    temp = addr;
 111   2      
 112   2                    DIO = (bit)(temp&0x01);          //每次传输低字节
 113   2      
 114   2                    addr >>= 1;                              //右移一位
 115   2      
 116   2                    SCLK = 1;
 117   2      
C51 COMPILER V8.02   TIMER                                                                 10/15/2008 11:59:32 PAGE 3   

 118   2             }
 119   1      
 120   1             //读取数据
 121   1      
 122   1             for ( i=8; i>0; i-- ) 
 123   1      
 124   1             {
 125   2      
 126   2                    ACC_7=DIO;
 127   2      
 128   2                    SCLK = 0;
 129   2      
 130   2                   ACC>>=1;
 131   2      
 132   2                    SCLK = 1;
 133   2      
 134   2             }     
 135   1      
 136   1             RST=0;
 137   1      
 138   1             dat1=ACC;
 139   1      
 140   1             dat2=dat1/16;                           //数据进制转换
 141   1      
 142   1             dat1=dat1%16;                         //十六进制转十进制
 143   1      
 144   1             dat1=dat1+dat2*10;
 145   1      
 146   1             return (dat1);
 147   1      
 148   1      }
 149          
 150          
 151          //初始化DS1302
 152          
 153          void Initial(void)    
 154          
 155          { 
 156   1      
 157   1             Write1302 (WRITE_PROTECT,0X00);         //禁止写保护
 158   1      
 159   1             Write1302 (WRITE_SECOND,0x56);          //秒位初始化
 160   1      
 161   1             Write1302 (WRITE_MINUTE,0x34);        //分钟初始化
 162   1      
 163   1             Write1302 (WRITE_HOUR,0x12);                    //小时初始化
 164   1      
 165   1             Write1302 (WRITE_PROTECT,0x80);                 //允许写保护
 166   1      
 167   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    145    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   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 + -