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

📄 1302.lst

📁 这个是1302的代码
💻 LST
字号:
C51 COMPILER V7.50   1302                                                                  09/01/2006 17:31:20 PAGE 1   


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

line level    source

   1          /************************************************************************************/
   2          /*     程序名:实时时钟DS1302代码                                                   */
   3          /*                                                                                  */
   4          /*     晶振:12.0 M                                        CPU型号:AT89S52         */
   5          /*                                                                                  */                    
             -                         
   6          /*                                                                                  */
   7          /*     功能描述: 将J6和6,7,8脚分别和J7的6,7,8脚                                                            */
   8          /*                                                              (自上往下数)用短路帽连接起来!                                        */
   9          /*                                                                                  */
  10          /*     http://www.mculover.net                                                      */
  11          /*     http://www.mculover.net/bbs                                                  */
  12          /*                                                                                                                                                      */
  13          /*                                                                                  */
  14          /*                                                湘灵电子工作室 版权所有           */                    
             -             
  15          /*                                                         2006-03-20               */
  16          /************************************************************************************/ 
  17          #include<reg51.h>
  18          
  19          sbit clock_clk = P1 ^ 7;//ds1302_clk
  20          sbit clock_dat = P1 ^ 6;//ds1302_dat
  21          sbit clock_rst = P1 ^ 5;//ds1302_rst
  22          
  23          //为了编程方便定义的位变量
  24          sbit a0 = ACC ^ 0;
  25          sbit a1 = ACC ^ 1;
  26          sbit a2 = ACC ^ 2;
  27          sbit a3 = ACC ^ 3;
  28          sbit a4 = ACC ^ 4;
  29          sbit a5 = ACC ^ 5;
  30          sbit a6 = ACC ^ 6;
  31          sbit a7 = ACC ^ 7;
  32          
  33          unsigned char Tab_Num[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 
  34                                                                  0x92, 0x82, 0xf8, 0x80, 0x90};//0-9数字
  35          
  36          /*****************************************************************/
  37          void Delay(int num)//延时函数
  38          {
  39   1              while(num--) ;
  40   1      }
  41          
  42          /*************************1 3 0 2 *****************************/
  43          void clock_out(unsigned char dd)
  44          {
  45   1              ACC=dd;
  46   1              clock_dat=a0; clock_clk=1; clock_clk=0;
  47   1              clock_dat=a1; clock_clk=1; clock_clk=0;
  48   1              clock_dat=a2; clock_clk=1; clock_clk=0;
  49   1              clock_dat=a3; clock_clk=1; clock_clk=0;
  50   1              clock_dat=a4; clock_clk=1; clock_clk=0;
  51   1              clock_dat=a5; clock_clk=1; clock_clk=0;
  52   1              clock_dat=a6; clock_clk=1; clock_clk=0;
  53   1              clock_dat=a7; clock_clk=1; clock_clk=0;
C51 COMPILER V7.50   1302                                                                  09/01/2006 17:31:20 PAGE 2   

  54   1      }
  55          
  56          unsigned char clock_in(void)
  57          {
  58   1              clock_dat=1;
  59   1              a0=clock_dat;
  60   1              clock_clk=1; clock_clk=0; a1=clock_dat;
  61   1              clock_clk=1; clock_clk=0; a2=clock_dat;
  62   1              clock_clk=1; clock_clk=0; a3=clock_dat;
  63   1              clock_clk=1; clock_clk=0; a4=clock_dat;
  64   1              clock_clk=1; clock_clk=0; a5=clock_dat;
  65   1              clock_clk=1; clock_clk=0; a6=clock_dat;
  66   1              clock_clk=1; clock_clk=0; a7=clock_dat;
  67   1              return(ACC);
  68   1      }
  69          
  70          unsigned char read_clock(unsigned char ord)
  71          {
  72   1              unsigned char dd=0;
  73   1              clock_clk=0;
  74   1              clock_rst=0;
  75   1              clock_rst=1;
  76   1              clock_out(ord);
  77   1              dd=clock_in();
  78   1              clock_rst=0;
  79   1              clock_clk=1;
  80   1              return(dd);
  81   1      }
  82          
  83          void write_clock(unsigned char ord, unsigned char dd)
  84          {
  85   1              clock_clk=0;
  86   1              clock_rst=0;
  87   1              clock_rst=1;
  88   1              clock_out(ord);
  89   1              clock_out(dd);
  90   1              clock_rst=0;
  91   1              clock_clk=1;
  92   1      }
  93          
  94          /******************************************************************/
  95          void Disp(void)//显示和闪烁函数
  96          {
  97   1              unsigned char d, e;
  98   1      
  99   1              d=read_clock(0x81);//读秒
 100   1              e=d;
 101   1              d=d>>4;
 102   1              e=e&0x0f;
 103   1      
 104   1              P0 = Tab_Num[ d ];
 105   1              P2 = 0xfd;
 106   1              Delay(250);
 107   1              P2 = 0xff;
 108   1              P0 = Tab_Num[ e ];
 109   1              P2 = 0xfe;
 110   1              Delay(250);
 111   1              P2 = 0xff;    
 112   1            
 113   1              d=read_clock(0x83);//读分钟
 114   1              e=d;
 115   1              d=d>>4;
C51 COMPILER V7.50   1302                                                                  09/01/2006 17:31:20 PAGE 3   

 116   1              e=e&0x0f;
 117   1      
 118   1              P0 = Tab_Num[ d ];
 119   1              P2 = 0xef;
 120   1              Delay(250);
 121   1              P2 = 0xff;
 122   1              P0 = Tab_Num[ e ];
 123   1              P2 = 0xe7;
 124   1              Delay(250);
 125   1              P2 = 0xff;         
 126   1       
 127   1              d=read_clock(0x85);//读小时
 128   1              e=d;
 129   1              d=d>>4;
 130   1              e=e&0x0f;
 131   1      
 132   1              P0 = Tab_Num[ d ];
 133   1              P2 = 0x7f;
 134   1              Delay(250);
 135   1              P2 = 0xff;
 136   1              P0 = Tab_Num[ e ];
 137   1              P2 = 0xbf;
 138   1              Delay(250);
 139   1              P2 = 0xff;
 140   1      
 141   1      /*************************************************************
 142   1              d=read_clock(0x87);//读日
 143   1              e=d;
 144   1              d=d>>4;
 145   1              e=e&0x0f;
 146   1              P0 = Tab_Num[ d ];
 147   1              P2 = 0x01;
 148   1              Delay(2000);
 149   1              P2 = 0x00;
 150   1              P0 = Tab_Num[ e ];
 151   1              P2 = 0x02;
 152   1              Delay(2000);
 153   1              P2 = 0x00;
 154   1      
 155   1              d=read_clock(0x89);//读月
 156   1              e=d;
 157   1              d=d>>4;
 158   1              e=e&0x0f;
 159   1              P0 = Tab_Num[ d ];
 160   1              P2 = 0x01;
 161   1              Delay(2000);
 162   1              P2 = 0x00;
 163   1              P0 = Tab_Num[ e ];
 164   1              P2 = 0x02;
 165   1              Delay(2000);
 166   1              P2 = 0x00;
 167   1      
 168   1              d=read_clock(0x8d);//读年
 169   1              e=d;
 170   1              d=d>>4;
 171   1              e=e&0xf;
 172   1              P0 = Tab_Num[ d ];
 173   1              P2 = 0x01;
 174   1              Delay(2000);
 175   1              P2 = 0x00;
 176   1              P0 = Tab_Num[ e ];
 177   1              P2 = 0x02;
C51 COMPILER V7.50   1302                                                                  09/01/2006 17:31:20 PAGE 4   

 178   1              Delay(2000);
 179   1              P2 = 0x00;
 180   1      **********************************************************/
 181   1      }
 182          
 183          /*--------------------时钟的初始化---------------------------*/
 184          void Init_1302(void)
 185          {
 186   1              write_clock(0x8e,0x00);//close_protect
 187   1              Delay(250);
 188   1              write_clock(0x8c,0x05);//year
 189   1              Delay(250);
 190   1              write_clock(0x8a,0x04);//week_day
 191   1              Delay(250);
 192   1              write_clock(0x88,0x10);//month
 193   1              Delay(250);
 194   1              write_clock(0x86,0x20);//date
 195   1          Delay(250);
 196   1              write_clock(0x84,0x00);//hour
 197   1              Delay(250);
 198   1              write_clock(0x82,0x22);//minute
 199   1              Delay(250);
 200   1              write_clock(0x80,0x00);//second
 201   1              Delay(250);
 202   1      
 203   1              write_clock(0x90,0xa5);//supply_power
 204   1              Delay(250);     
 205   1              write_clock(0x8e,0x80);//open_protect   
 206   1              Delay(250);
 207   1      }
 208          
 209          /*******************主函数************************************/
 210          void main(void)
 211          {
 212   1              Init_1302( );//初始化DS1302寄存器
 213   1      
 214   1              while(1)
 215   1              {
 216   2                      Disp( );
 217   2              }
 218   1      }
 219          
 220                  
 221          
 222          
 223                  


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