?? calender.lst
字號:
C51 COMPILER V3.96, SN-83203013 CALENDER 05/08/08 00:07:16 PAGE 1
DOS C51 COMPILER V3.96, COMPILATION OF MODULE CALENDER
OBJECT MODULE PLACED IN CALENDER.OBJ
COMPILER INVOKED BY: D:\FLYTO\C51\COMPILER\BIN\C51.EXE CALENDER.C SMALL DEBUG OBJECTEXTEND SYMBOLS ROM(LARGE) NOCODE CON
-D AREGS OPTIMIZE(6,SPEED)
stmt level source
1 //@@***********************************************************
2 //-------------------------------------------------------------
3 //
4 // 文件名 :Calender.c
5 // 描述 :日歷時(shí)鐘模塊,用于不帶時(shí)鐘芯片的系統(tǒng)
6 // 語言 :C
7 // 作者 :Jean J. Labrosse
8 // 修改 :李艷平
9 // 日期 :2002-05-17
10 // 說明 :原來的程序用于UCII_RTOS中,現(xiàn)移植C51中
11 //@@***********************************************************
12 #define SYS_CLOCK_EN 1
13 #if SYS_CLOCK_EN
14
15 #include "typedef.h"
*** ERROR 318 IN LINE 15 OF CALENDER.C: can't open file 'typedef.h'
16 #include "reg52.h"
17 #include "string.h"
18 #include "stdlib.h"
19 #include "Stdio.h"
20
21 #define FOSC 22118400L
22 #define MACHINE_NUM 12 /*根據(jù)需要調(diào)整,如:W777E58=4*/
23 #define TICKS_PER_SEC 10 /* # of clock ticks to obtain 1 second */
24
25 #define CLK_DATE_EN 1 /* Enable DATE (when 1) */
26
27 #define ENTER_CRITICAL() EA=1
28 #define EXIT_CRITICAL() EA=0
29
30 #if CLK_DATE_EN
31 typedef struct clk_month
32 {
33 UCHAR MonthDays; /* Number of days in each month */
*** ERROR 141 IN LINE 33 OF CALENDER.C: syntax error near 'UCHAR'
*** ERROR 129 IN LINE 33 OF CALENDER.C: missing ';' before 'MonthDays'
34 char *MonthName; /* Name of the month */
35 UCHAR MonthVal; /* Value used to compute day of the week */
36 } CLK_MONTH;
37 #endif
38
39 static UCHAR ClkTickCtr; /* Counter used to keep track of system clock ticks */
40
41 static UCHAR ClkHr;
42 static UCHAR ClkMin;
43 static UCHAR ClkSec; /* Counters for local TIME
44 */
45 #if CLK_DATE_EN
46 static UCHAR ClkDay; /* Counters for local DATE */
47 static UCHAR ClkDOW; /* Day of week (0 is Sunday) */
48 static UCHAR ClkMonth;
49 static UINT ClkYear;
50 #endif
51 /*********************************************************************************************************
C51 COMPILER V3.96, SN-83203013 CALENDER 05/08/08 00:07:16 PAGE 2
-*
52 * FUNCTION PROTOTYPES
53 **********************************************************************************************************
-/
54 static BOOL ClkUpdateTime(void);
55
56 #if CLK_DATE_EN
57 static BOOL ClkIsLeapYear(UINT year);
58 static void ClkUpdateDate(void);
59 static void ClkUpdateDOW(void);
60 #endif
61
62 void Init_sys_timer(void);
63 void Sys_clk_init(void);
64 void Sys_clk_task(void);
65
66 void Clk_format_time(UCHAR mode, char *s);
67 void Clk_set_time(UCHAR hr, UCHAR min, UCHAR sec);
68 int Cmp_now_time(UCHAR hr, UCHAR min, UCHAR sec);
69
70 #if CLK_DATE_EN
71 void Clk_format_date(UCHAR mode, char *s);
72 void Clk_set_date(UCHAR month, UCHAR day, UINT year);
73 void Clk_set_date_time(UCHAR month, UCHAR day, UINT year, UCHAR hr, UCHAR min, UCHAR sec);
74 int Cmp_now_date_time(UCHAR month, UCHAR day, UINT year, UCHAR hr, UCHAR min, UCHAR sec);
75 #endif
76 /*********************************************************************************************************
-/
77
78
79 #if CLK_DATE_EN
80 static char code *ClkDOWTbl[] = { /* NAME FOR EACH DAY OF THE WEEK
- */
81 "Sunday ",
82 "Monday ",
83 "Tuesday ",
84 "Wednesday ",
85 "Thursday ",
86 "Friday ",
87 "Saturday "
88 };
89
90
91 static CLK_MONTH code ClkMonthTbl[] = { /* MONTHS TABLE
- */
92 {0, "", 0}, /* Invalid month */
93 {31, "January ", 6}, /* January */
94 {28, "February ", 2}, /* February (note leap years are handled by code) */
95 {31, "March ", 2}, /* March */
96 {30, "April ", 5}, /* April */
97 {31, "May ", 0}, /* May */
98 {30, "June ", 3}, /* June */
99 {31, "July ", 5}, /* July */
100 {31, "August ", 1}, /* August */
101 {30, "September ", 4}, /* September */
102 {31, "October ", 6}, /* October */
103 {30, "November ", 2}, /* November */
104 {31, "December ", 4} /* December */
105 };
106 #endif
107 /*
108 *********************************************************************************************************
C51 COMPILER V3.96, SN-83203013 CALENDER 05/08/08 00:07:16 PAGE 3
109 * TIME-OF-DAY CLOCK TASK
110 *
111 * Description : This task is created by Sys_clk_init() and is responsible for updating the time and date.
112 * Sys_clk_task() executes every second.
113 * Arguments : None.
114 * Returns : None.
115 * Notes : CLK_DLY_TICKS must be set to produce 1 second delays.
116 *********************************************************************************************************
117 */
118 void Sys_clk_task (void)
119 {
120 if(++ClkTickCtr==TICKS_PER_SEC)
121 {
122 ClkTickCtr=0;
123
124 if (ClkUpdateTime() == TRUE)
125 {
126 #if CLK_DATE_EN
127 ClkUpdateDate(); /* And date if a new day (i.e. MM-DD-YY) */
128 #endif
129 }
130 }
131 }
132
133 //@@***********************************************************
134 //
135 // 功能: 系統(tǒng)時(shí)鐘中斷服務(wù)函數(shù)
136 // 函數(shù): void Sys_tick_isr(void)
137 // 語言: C
138 // 輸入: NONE
139 // 輸出: NONE
140 // 作者: 李艷平
141 // 日期: 2002-05-17
142 //
143 //@@***********************************************************
144 //-------------------------------------------------------------
145 void Sys_tick_isr(void) interrupt 5 using 3
146 {
147 TF2=0;
148 Sys_clk_task();
149
150 }
151
152 //@@***********************************************************
153 //
154 // 功能: 系統(tǒng)定時(shí)器初始化
155 // 函數(shù): void Vtimer_init(void)
156 // 語言: C
157 // 輸入: NONE
158 // 輸出: NONE
159 // 作者: 李艷平
160 // 日期: 2002-05-17
161 //
162 //@@***********************************************************
163 //-------------------------------------------------------------
164 void Init_sys_timer(void)
165 {
166 BYTE_WORD Init_value;
167
168
169 Sys_clk_init();
170
C51 COMPILER V3.96, SN-83203013 CALENDER 05/08/08 00:07:16 PAGE 4
171 T2CON=0x00;
172 Init_value.word=FOSC/(TICKS_PER_SEC*MACHINE_NUM);
173 TH2=RCAP2H=-Init_value.bytes.high;
174 TL2=RCAP2L=-Init_value.bytes.low;
175
176 ET2=1;
177 TR2=1;
178
179 //TMOD&=0xF0; //使用定時(shí)器0,但在中斷中需要重新賦初值,因而我更傾向用Timer2
180 //TMOD|=0x01;
181
182 // Init_value.word=FOSC/(TICKS_PER_SEC*MACHINE_NUM);
183 //TH0=-Init_value.bytes.high;
184 //TL0=-Init_value.bytes.low;
185
186 //ET0=1;
187 //TR0=1;
188 }
189
190 /*
191 *********************************************************************************************************
192 * TIME MODULE INITIALIZATION
193 * TIME-OF-DAY CLOCK INITIALIZATION
194 *
195 * Description : This function initializes the time module. The time of day clock task will be created
196 * by this function.
197 * Arguments : None
198 * Returns : None.
199 *********************************************************************************************************
200 */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -