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

📄 rtc.lst

📁 基于MST-G240128点阵液晶的 状态机机制 人机界面四级滚屏菜单 源代码 ,带时间片机制模拟操作系统
💻 LST
字号:
C51 COMPILER V7.20   RTC                                                                   01/31/2007 10:21:45 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE RTC
OBJECT MODULE PLACED IN RTC.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\c51.exe RTC.c DB OE

line level    source

   1          #include "LZK.H"
   2          
   3          
   4          /****************************************************************************
   5          ** 函数名称: BCDConvert()  
   6          ** 功能描述: BCD转十进制程序  
   7          ** 入口参数: ucBCD为待转换的BCD码
   8          ** 出口参数: 转化后的十进制数.
   9          ** 全局变量: 无.
  10          ** 调用模块: 无.
  11          ** 说明:
  12          ****************************************************************************/
  13          uint8  BCDConvert(uint8 ucBCD)//ucBCD为待转换的BCD码;
  14          {
  15   1              unsigned char TempH, TempL;
  16   1              
  17   1              TempH = (ucBCD&0xF0)>>4;          //TempH保存十进制数的高位
  18   1              
  19   1              TempL = ucBCD&0x0f;               //TempL保存十进制数的低位
  20   1              
  21   1              return TempH*10+TempL;            //返回相应的十进制数
  22   1      }
  23          /****************************************************************************
  24          ** 函数名称: DecimalToBCD()  
  25          ** 功能描述: 十进制转BCD程序  
  26          ** 入口参数: ucDecimal为待转换的十进制码
  27          ** 出口参数: 转化后的BCD.
  28          ** 全局变量: 无.
  29          ** 调用模块: 无.
  30          ** 说明:
  31          ****************************************************************************/
  32          uint8 DecimalToBCD(uint8 ucDecimal)
  33          {
  34   1         uint8 a,b,c;
  35   1      
  36   1         a=ucDecimal/10;
  37   1      
  38   1         b=ucDecimal%10;
  39   1      
  40   1         c=a*16+b;
  41   1      
  42   1         return (c);
  43   1      }
  44          /**************************************************************************
  45          ** 函数名称: RTC8563_Read()
  46          ** 功能描述: 读取时间
  47          ** 入口参数: 无
  48          ** 出口参数: 无.
  49          ** 全局变量: 无.
  50          ** 调用模块: 无.
  51          ** 说明:
  52          ****************************************************************************/
  53          void RTC8563_Read(void)
  54          {
  55   1          SFRPAGE = 0x00;
C51 COMPILER V7.20   RTC                                                                   01/31/2007 10:21:45 PAGE 2   

  56   1              STA = 1;
  57   1              while(SMB0STA != 0x08);
  58   1              SMB0DAT = 0xa2;
  59   1          STA = 0;
  60   1              SI = 0;
  61   1              while(SMB0STA != 0x18);
  62   1          SMB0DAT = 0x02;
  63   1              SI = 0;
  64   1          while(SMB0STA != 0x28); //重启
  65   1              STA = 1;
  66   1              SI = 0;
  67   1              while(SMB0STA!=0x10);
  68   1              SMB0DAT=0xa3;
  69   1          STA = 0;
  70   1              SI = 0;
  71   1              while(SMB0STA != 0x40);
  72   1              AA = 1;
  73   1              SI = 0;
  74   1              //////////////////////////////
  75   1              while(SMB0STA != 0x50);//秒
  76   1          RTCData[0] = SMB0DAT;
  77   1              SI = 0;
  78   1              SI = 0;//特殊之处
  79   1      
  80   1              while(SMB0STA != 0x50);//分
  81   1          RTCData[1] = SMB0DAT;
  82   1              SI = 0;
  83   1              SI = 0;//特殊之处
  84   1              
  85   1              while(SMB0STA != 0x50);//时
  86   1          RTCData[2] = SMB0DAT;
  87   1              SI = 0;
  88   1              SI = 0;//特殊之处
  89   1              
  90   1              while(SMB0STA != 0x50);//日
  91   1              RTCData[3] = SMB0DAT;
  92   1              SI = 0;
  93   1              SI = 0;//特殊之处
  94   1              
  95   1              while(SMB0STA != 0x50);//星期
  96   1              RTCData[4] = SMB0DAT;
  97   1              SI = 0;
  98   1              SI = 0;//特殊之处
  99   1              
 100   1              while(SMB0STA != 0x50);//月
 101   1              RTCData[5] = SMB0DAT;
 102   1              AA = 0;
 103   1              SI = 0;
 104   1              
 105   1              while(SMB0STA != 0x58);//年
 106   1              RTCData[6] = SMB0DAT;
 107   1              STO = 1;
 108   1              SI = 0;
 109   1       
 110   1              RTCData[0] = BCDConvert(RTCData[0] & 0x7f); //秒
 111   1          RTCData[1] = BCDConvert(RTCData[1] & 0x7f); //分
 112   1              RTCData[2] = BCDConvert(RTCData[2] & 0x3f); //小时
 113   1          RTCData[3] = BCDConvert(RTCData[3] & 0x3f); //日
 114   1          RTCData[4] = BCDConvert(RTCData[4] & 0x07); //星期
 115   1          RTCData[5] = BCDConvert(RTCData[5] & 0x1f); //月/世纪
 116   1          RTCData[6] = BCDConvert(RTCData[6]);        //年
 117   1      }
C51 COMPILER V7.20   RTC                                                                   01/31/2007 10:21:45 PAGE 3   

 118          
 119          /****************************************************************************
 120          ** 函数名称: RTC8563_Write()
 121          ** 功能描述: 读取时间
 122          ** 入口参数: 无
 123          ** 出口参数: 无.
 124          ** 全局变量: 无.
 125          ** 调用模块: 无.
 126          ** 说明:
 127          ****************************************************************************/
 128          void RTC8563_Write()
 129          {   
 130   1          uint8 i; 
 131   1              for(i=0; i<7; i++)  //RTCWriteData[0~6]: 秒、分、时、日、月、星期、月、年
 132   1              {
 133   2               RTCData[i]=DecimalToBCD(RTCData[i]);
 134   2      
 135   2               SFRPAGE = 0x00;
 136   2               STA = 1;
 137   2               STA = 1;
 138   2               STA = 1;
 139   2               while(SMB0STA != 0x08);
 140   2      
 141   2               SMB0DAT = 0xa2;
 142   2           STA = 0;
 143   2               SI  = 0;
 144   2               while(SMB0STA != 0x18);
 145   2      
 146   2           SMB0DAT = i + 2;
 147   2               SI = 0;
 148   2               while(SMB0STA != 0x28);
 149   2      
 150   2               SMB0DAT = RTCData[i];
 151   2               SI = 0;
 152   2               SI = 0;//特殊之处
 153   2               while(SMB0STA != 0x28);
 154   2      
 155   2           STO = 1;
 156   2               SI  = 0;
 157   2              }
 158   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    362    ----
   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 + -