📄 systick.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 + -