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

📄 systick.lst

📁 proteus电子钟(带闹钟数码管显示)
💻 LST
字号:
C51 COMPILER V7.06   SYSTICK                                                               05/31/2009 01:55:40 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SYSTICK
OBJECT MODULE PLACED IN SysTick.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE software\SysTick.C BROWSE DEBUG OBJECTEXTEND PRINT(.\SysTick.lst) OBJECT(Sy
                    -sTick.obj)

stmt level    source

   1          /*------------------------------------------------------------------------------------------------*-
   2          
   3                  SysTick.C (V1.00)
   4          
   5                  这里是系统的时标.
   6                  
   7                   
   8          -*------------------------------------------------------------------------------------------------*/
   9          
  10          /*
  11           * Copyright (c) 2007
  12           * All rights reserved
  13           * 
  14           * 文件名称: SysTick.C  
  15           * 文件标识: 
  16           * 摘    要: 系统的时标(20mS)
  17           * 
  18           * 当前版本: 1.0                 * 取代版本:
  19           * 作    者: wsl                 * 原作者  : 
  20           * 完成日期: 2007-07-31  * 完成日期:
  21          /*------------------------------------------------------------------------------------------------*/
  22          
  23          
  24          #include "main.h"
  25          #include "SysTick.h"
  26          #include "DisplayDir.h"
  27          #include "key.h"
  28          #include "RTC.h"
  29          #include "OS_Basic_Func.H"
  30          
  31          
  32          #define TC1_PRELOAD_HIGH        0xfe    // 500us定时常数
  33          #define TC1_PRELOAD_LOW         0x33
  34          
  35          #define RTC_ONE_SEC_CONT        (1000 / TIMEROUT)
  36                  
  37          
  38          bool ftick = 0;
  39          
  40          
  41          
  42           /*------------------------------------------------------------------------------------------------*-
  43           * 函数名称: Timer0_init()
  44           * 入    口: xx
  45           * 出    口: xx
  46           * 函数功能: T0初始化
  47           * 
  48           * 说    明: 为了时标的准确性,系统采用T0模式1,16位加载模式.
  49           *                       将T0的低位计数器设计为自动加载.
  50           *                       
  51           * 当前版本: 1.0                 * 取代版本:
  52           * 作    者: wsl                 * 原作者  : 
  53           * 完成日期: 2007-07-31  * 完成日期:
  54          -*------------------------------------------------------------------------------------------------*/
C51 COMPILER V7.06   SYSTICK                                                               05/31/2009 01:55:40 PAGE 2   

  55          void Timer0_init(void)
  56          {
  57   1              TMOD &= 0xf0;
  58   1              TMOD |= 0x01;
  59   1              TL0 = 0;
  60   1              TH0 = PRELOAD_mS_H;
  61   1              ET0 = 1;
  62   1              TR0 = 1;
  63   1      }
  64          /*------------------------------------------------------------------------------------------------*-
  65           * 函数名称: Timer1_init()
  66           * 入    口: xx
  67           * 出    口: xx
  68           * 函数功能: T1初始化
  69           * 
  70           * 说    明: 为了时标的准确性,系统采用T1模式1,16位加载模式.
  71           *                       
  72           * 当前版本: 1.0                 * 取代版本:
  73           * 作    者: wsl                 * 原作者  : 
  74           * 完成日期: 2007-07-31  * 完成日期:
  75          -*------------------------------------------------------------------------------------------------*/
  76          void Timer1_init(void)
  77          {
  78   1              TMOD &= 0x0f;
  79   1              TMOD |= 0x10;
  80   1              TL1 = TC1_PRELOAD_LOW;
  81   1              TH1 = TC1_PRELOAD_HIGH;
  82   1              ET1 = 1;
  83   1              TR1 = 1;
  84   1      }
  85          
  86          
  87          /*------------------------------------------------------------------------------------------------*-
  88           * 函数名称: SystemTick()
  89           * 函数功能: 系统时标.任何任务执行时间都不能大于系统时标.
  90           * 说    明: T0的低位计数器为自动加载.          
  91           *
  92           * 当前版本: 1.0                                * 取代版本:
  93           * 作    者: wsl                                * 原作者  : 
  94           * 完成日期: 2007-07-31                 * 完成日期:
  95          -*------------------------------------------------------------------------------------------------*/
  96          void SystemTick(void) interrupt 1 
  97          {
  98   1              static uint8_t m_sec;                   // 毫秒心跳
  99   1              TH0 = PRELOAD_mS_H;             
 100   1              ftick = 1;
 101   1      
 102   1              if (++m_sec >= RTC_ONE_SEC_CONT)
 103   1              {
 104   2                      m_sec = 0;
 105   2                      RTC_Soft_clock();
 106   2              }
 107   1              // 程序经测试,1小时快1秒
 108   1              if (ClockReviseTemp >= 60)      // 1小时到(60分钟等于1小时)
 109   1              {
 110   2                      if (Rtc.sec >= 1)                       // 秒大于等于1
 111   2                      {
 112   3                              Rtc.sec -= 1;                   // 减1校正时间
 113   3                              ClockReviseTemp = 0;    // 复位校正计时器
 114   3                              // 在此加入时钟12小时所造成的误差调整代码
 115   3                              ClockReviseTemp1++;
 116   3                      }
C51 COMPILER V7.06   SYSTICK                                                               05/31/2009 01:55:40 PAGE 3   

 117   2              }
 118   1              // 12小时快又1秒
 119   1              if (ClockReviseTemp1 >= 12)
 120   1              {
 121   2                      if (Rtc.sec >= 1)                       // 秒大于等于1
 122   2                      {
 123   3                              Rtc.sec -= 1;                   // 减1校正时间
 124   3                              ClockReviseTemp1 = 0;   // 复位校正计时器
 125   3                      }       
 126   2              }
 127   1      }
 128          
 129          /*------------------------------------------------------------------------------------------------*-
 130           * 函数名称: UpdateDisplayTick()
 131           * 函数功能: 
 132           * 说    明: 500uS       
 133           *
 134           * 当前版本: 1.0                                * 取代版本:
 135           * 作    者: wsl                                * 原作者  : 
 136           * 完成日期: 2007-07-31                 * 完成日期:
 137          -*------------------------------------------------------------------------------------------------*/
 138          void UpdateDisplayTick(void) interrupt 3 
 139          {       
 140   1              static uint8_t i;
 141   1              TR1 = 0;
 142   1              // 数码显示
 143   1              if (++i >= 8)
 144   1              {       // 4ms
 145   2                      i = 0;          
 146   2                      LedDisplay();
 147   2              }
 148   1              // 蜂呜器
 149   1              BUZZER_PRO();
 150   1      
 151   1              TL1 = TC1_PRELOAD_LOW;
 152   1              TH1 = TC1_PRELOAD_HIGH;
 153   1              TR1 = 1;
 154   1      }
 155          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    247    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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