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

📄 main.lst

📁 单片机51 实现 万年历编程
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   MAIN                                                                 04/18/2007 21:34:58 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h> 
   2          #include <intrins.h>
   3          #include <stdio.h>
   4          
   5          #define uint unsigned int
   6          #define uchar unsigned char
   7          #define Nop() _nop_()
   8          sbit ACC0 = ACC^0;
   9          sbit ACC7 = ACC^7;
  10          sbit T_CLK = P3^1; /*实时时钟时钟线引脚 */
  11          sbit T_IO = P3^2; /*实时时钟数据线引脚 */
  12          sbit T_RST = P3^0; /*实时时钟复位线引脚 */
  13          
  14          sbit RS=P1^0;   //设置连接线
  15          sbit RW=P1^1;
  16          sbit E=P1^2;
  17          sbit D7=P2^7;
  18          uchar a[7]={0,0,0,1,1,0,7}; 
  19          uchar b[7];
  20          uint SEC,MIN,HOUR,DAY,MONTH,YEAR,WEEKDAY;
  21          unsigned char year_lunar;
  22          unsigned char month_lunar;
  23          unsigned char day_lunar;
  24          uint yue,ri;
  25          ///以下为LCD驱动程序
  26          void busy()          
  27          { 
  28   1         do {P2=0xff;  
  29   2            RS=0; 
  30   2            RW=1;
  31   2                 E=0;
  32   2            E=1;
  33   2           }while (D7);
  34   1      }
  35          
  36          void write_com(char commend)
  37          { 
  38   1        busy();
  39   1        P2=commend;
  40   1        RS=0;
  41   1        RW=0;
  42   1        E=0;
  43   1      }
  44          
  45          void write_char(char lcddata)
  46          { busy();
  47   1        P2=lcddata;
  48   1         RS=1;
  49   1        RW=0;
  50   1        E=0;
  51   1      }
  52          
  53          void write_string(char * s)
  54          {
  55   1      while (*s!=0x00)
C51 COMPILER V8.05a   MAIN                                                                 04/18/2007 21:34:58 PAGE 2   

  56   1      write_char(*s++);
  57   1      }
  58          
  59          void i_lcd()//
  60          { 
  61   1        write_com(0x38);//置功能
  62   1        write_com(0x01);//清屏 
  63   1        write_com(0x06);//输入模式 
  64   1        write_com(0x0c);//显示开
  65   1      }
  66          /////以上为LCD驱动程序
  67          
  68          void delay(uint i)   //延时几豪秒
  69            {
  70   1            uint j,k;
  71   1                for(j=0;j<=i;j++)
  72   1                 for(k=0;k<125;k++); //1MS
  73   1         }          
  74            //////////将数据写入DS1302 
  75           //////////将数据写入DS1302 
  76          void RTInputByte(unsigned char d) 
  77          { 
  78   1              unsigned char i;
  79   1              ACC = d;
  80   1              for(i=8; i>0; i--)
  81   1              {
  82   2                      Nop();
  83   2                      T_IO = ACC0; /*相当于汇编中的 RRC */
  84   2                      Nop();
  85   2                      T_CLK = 1;
  86   2                      Nop();
  87   2                      T_CLK = 0;
  88   2                      Nop();
  89   2                      ACC = ACC >> 1;
  90   2                      Nop(); 
  91   2              } 
  92   1      }
  93          /******************************************************************** 
  94          
  95          
  96          ***********************************************************************/
  97          unsigned char RTOutputByte(void) 
  98          { 
  99   1              unsigned char i;
 100   1              T_IO = 1;
 101   1              for(i=8; i>0; i--)
 102   1              {
 103   2                      Nop();
 104   2                      ACC = ACC >>1; /*相当于汇编中的 RRC */
 105   2                      Nop();
 106   2                      ACC7 = T_IO;
 107   2                      Nop();
 108   2                      T_CLK = 1;
 109   2                      Nop();
 110   2                      T_CLK = 0;
 111   2                      Nop();
 112   2              } 
 113   1              return(ACC); 
 114   1      }
 115          /******************************************************************** 
 116          
 117          
C51 COMPILER V8.05a   MAIN                                                                 04/18/2007 21:34:58 PAGE 3   

 118          ***********************************************************************/
 119          void W1302(unsigned char ucAddr, unsigned char ucDa)
 120          {
 121   1              T_RST = 0;
 122   1              Nop();
 123   1              T_CLK = 0;
 124   1              Nop();
 125   1              T_RST = 1;
 126   1              Nop();
 127   1              RTInputByte(ucAddr); /* 地址,命令 */
 128   1              Nop();
 129   1              RTInputByte(ucDa); /* 写1Byte数据*/
 130   1              Nop();
 131   1              T_CLK = 1;
 132   1              Nop();
 133   1              T_RST = 0;
 134   1      } 
 135          /******************************************************************** 
 136          
 137          ***********************************************************************/
 138          unsigned char R1302(unsigned char ucAddr)
 139          {
 140   1              unsigned char ucData;
 141   1              T_RST = 0;
 142   1              Nop();
 143   1              T_CLK = 0;
 144   1              Nop();
 145   1              T_RST = 1;
 146   1              Nop();
 147   1              RTInputByte(ucAddr); /* 地址,命令 */
 148   1              Nop();
 149   1              ucData = RTOutputByte(); /* 读1Byte数据 */
 150   1              Nop();
 151   1              T_CLK = 1;
 152   1              Nop();
 153   1              T_RST = 0;
 154   1              Nop();
 155   1              return(ucData);
 156   1      }
 157          /******************************************************************** 
 158          
 159          
 160          ***********************************************************************/
 161          void BurstW1302T(unsigned char *pWClock)
 162          {
 163   1              unsigned char i;
 164   1              W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
 165   1              Nop();
 166   1              T_RST = 0;
 167   1              Nop();
 168   1              T_CLK = 0;
 169   1              Nop();
 170   1              T_RST = 1;
 171   1              Nop();
 172   1              RTInputByte(0xbe); /* 0xbe:时钟多字节写命令 */
 173   1              Nop();
 174   1              for (i = 8; i>0; i--) /*8Byte = 7Byte 时钟数据 + 1Byte 控制*/
 175   1              {
 176   2                      Nop();
 177   2                      RTInputByte(*pWClock); /* 写1Byte数据*/
 178   2                      Nop();
 179   2                      pWClock++;
C51 COMPILER V8.05a   MAIN                                                                 04/18/2007 21:34:58 PAGE 4   

 180   2                      Nop();
 181   2              }
 182   1              T_CLK = 1;
 183   1              Nop();
 184   1              T_RST = 0;
 185   1      } 
 186          /******************************************************************** 
 187          
 188          
 189          ***********************************************************************/
 190          void BurstR1302T(unsigned char *pRClock)
 191          {
 192   1              unsigned char i;
 193   1              T_RST = 0;
 194   1              Nop();
 195   1              T_CLK = 0;
 196   1              Nop();
 197   1              T_RST = 1;
 198   1              Nop();
 199   1              RTInputByte(0xbf); /* 0xbf:时钟多字节读命令 */
 200   1              Nop();
 201   1              for (i=8; i>0; i--) 
 202   1              {
 203   2                      Nop();
 204   2                      *pRClock = RTOutputByte(); /* 读1Byte数据 */
 205   2                      Nop();
 206   2                      pRClock++;
 207   2                      Nop();
 208   2              }
 209   1              T_CLK = 1;
 210   1              Nop();
 211   1              T_RST = 0;
 212   1      }
 213          /******************************************************************** 
 214          
 215          
 216          ***********************************************************************/
 217          void BurstW1302R(unsigned char *pWReg)
 218          {
 219   1              unsigned char i;

⌨️ 快捷键说明

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