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

📄 1302.lst

📁 51单片机项目集
💻 LST
字号:
C51 COMPILER V8.02   1302                                                                  06/06/2009 21:23:01 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 1302
OBJECT MODULE PLACED IN 1302.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1302.c DEBUG OBJECTEXTEND TABS(3)

line level    source

   1          #include<reg51.h>
   2          
   3          #define uchar unsigned char
   4          uchar dot,time1[6],tt,flash;
   5          code seven_tab[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
   6          code bit_select[6] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
   7          
   8          sbit rtc_clk=P1^0;
   9          sbit rtc_data=P1^1;
  10          sbit rtc_rst=P1^2;
  11          
  12          sbit a0=ACC^0;
  13          sbit a7=ACC^7;
  14          
  15          void write_rtc(uchar date)    //写一字节
  16          {
  17   1         uchar i;
  18   1         ACC=date;
  19   1         for(i=8;i>0;i--)
  20   1            {
  21   2               rtc_data=a0;
  22   2               rtc_clk=1;
  23   2               rtc_clk=0;
  24   2               ACC=ACC>>1; 
  25   2            }
  26   1      }
  27          
  28          uchar read_rtc()     //读一字节
  29          {
  30   1         uchar i;
  31   1         for(i=8;i>0;i--)
  32   1            {
  33   2               ACC=ACC>>1;
  34   2               a7=rtc_data;
  35   2               rtc_clk=1;
  36   2               rtc_clk=0;     
  37   2            }
  38   1         return(ACC);   
  39   1      }
  40          
  41          void write1302(uchar address,uchar date)  //写1302数据
  42          {
  43   1         rtc_rst=0;
  44   1         rtc_clk=0;
  45   1         rtc_rst=1;
  46   1         write_rtc(address);
  47   1         write_rtc(date);
  48   1         rtc_clk=1;
  49   1         rtc_rst=0;
  50   1      }
  51          uchar read1302(uchar address)          //读1302数据
  52          {
  53   1         uchar temp;
  54   1         rtc_rst=0;
  55   1         rtc_clk=0;
C51 COMPILER V8.02   1302                                                                  06/06/2009 21:23:01 PAGE 2   

  56   1         rtc_rst=1;
  57   1         write_rtc(address);
  58   1         temp=read_rtc();
  59   1         rtc_clk=1;
  60   1         rtc_rst=0;
  61   1         return(temp);
  62   1      }
  63          void init1302()      //1302初始化
  64          {
  65   1         write1302(0x8e,0x00);   //写操作
  66   1      // write1302(0x90,0xa5);
  67   1         write1302(0x80,0x56);   //写秒
  68   1         write1302(0x82,0x34);   //写分
  69   1         write1302(0x84,0x12);   //写时
  70   1         write1302(0x86,0x25);   //写月
  71   1         write1302(0x88,0x08);   //写日
  72   1         write1302(0x8a,0x05);   //写星期
  73   1         write1302(0x8c,0x09);   //写年
  74   1         write1302(0x8e,0x80);   //写保护
  75   1      }
  76          void get_time()            //获取1302的时间数据(时、分、秒),存入time1数组中
  77          {
  78   1         uchar d;
  79   1         d=read1302(0x81);
  80   1         time1[0]=d&0x0f;
  81   1         time1[1]=(d>>4)&0x0f;   
  82   1         d=read1302(0x83);
  83   1         time1[2]=d&0x0f;
  84   1         time1[3]=(d>>4)&0x0f;   
  85   1         d=read1302(0x85);
  86   1         time1[4]=d&0x0f;
  87   1         time1[5]=(d>>4)&0x0f;   
  88   1      }
  89          void time0() interrupt 1    //利用中断对数码管上显示的数据进行刷新
  90          {
  91   1         uchar i;
  92   1         TR0=0;
  93   1         TH0=(65536-5000)/256;   
  94   1         TL0=(65536-5000)%256;
  95   1         TR0=1;
  96   1         tt++;
  97   1         if(tt==100)
  98   1         {
  99   2            tt=0;
 100   2            dot=!dot;   
 101   2         }
 102   1         get_time();
 103   1         flash=0x80*dot;
 104   1         flash=flash|0x7f;
 105   1         P0=0xff;
 106   1         P2=bit_select[i];
 107   1         if(i==2 || i==4)
 108   1         P0=seven_tab[time1[i]]&flash;
 109   1         else
 110   1         P0=seven_tab[time1[i]];
 111   1         i++;
 112   1         if(i==6)i=0;         
 113   1      }
 114          void initmcu()       //mcu初始化
 115          {
 116   1         TMOD=0x01;
 117   1         TH0=(65536-5000)/256;   
C51 COMPILER V8.02   1302                                                                  06/06/2009 21:23:01 PAGE 3   

 118   1         TL0=(65536-5000)%256;
 119   1         TR0=1;
 120   1         ET0=1;
 121   1         EA=1;
 122   1      }
 123          void main()
 124          {
 125   1         initmcu();
 126   1         init1302();
 127   1         while(1)
 128   1            {
 129   2               
 130   2            }
 131   1         
 132   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    368    ----
   CONSTANT SIZE    =     32    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9       1
   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 + -