📄 wnl.lst
字号:
163 real_time[2] = ':';
164 real_time[3] = ClkMin / 10 + '0';
165 real_time[4] = ClkMin % 10 + '0';
166 real_time[5] = ':';
167 real_time[6] = ClkSec / 10 + '0';
168 real_time[7] = ClkSec % 10 + '0';
169 real_time[8] = '-';
170 real_time[9] = '-';
171 break;
172 case 1: // 12小时制显示
173 real_time[8] = (ClkHr >= 12) ? 'P' : 'A'; //24转12小时
C51 COMPILER V8.08 WNL 05/22/2007 10:32:24 PAGE 4
174 if (ClkHr > 12)
175 {
176 hr = ClkHr - 12;
177 }
178 else
179 {
180 hr = ClkHr;
181 }
182 real_time[0] = hr / 10 + '0';
183 real_time[1] = hr % 10 + '0';
184 real_time[2] = ':';
185 real_time[3] = ClkMin / 10 + '0';
186 real_time[4] = ClkMin % 10 + '0';
187 real_time[5] = ':';
188 real_time[6] = ClkSec / 10 + '0';
189 real_time[7] = ClkSec % 10 + '0';
190 real_time[9] = 'M';
191 break;
192 }
193 }
194
195
196 uchar ClkUpdateTime (void) //时钟子程序
197 {
198 uchar newday;
199 newday = FALSE; // 保证不会增加日期
200 if (ClkSec >= 59)
201 {
202 ClkSec = 0; //每分钟60秒
203 if (ClkMin >= 59)
204 {
205 ClkMin = 0; //每小时60分钟
206 if (ClkHr >= 23)
207 {
208 ClkHr = 0; //每天24小时
209 newday = TRUE; //日期可以增加了
210 }
211 else
212 {
213 ClkHr++; //小时自加
214 }
215 }
216 else
217 {
218 ClkMin++; //分钟自加
219 }
220 }
221 else
222 {
223 ClkSec++; //秒自加
224 }
225 return (newday);
226 }
227
228 uchar ClkIsLeapYear(UINT year) //闰年检查子程序
229 {
230 if (!(year % 4) && (year % 100) || !(year % 400))
231 {
232 return (TRUE); //可以被4整除为闰年
233 }
234 else
235 {
C51 COMPILER V8.08 WNL 05/22/2007 10:32:24 PAGE 5
236 return (FALSE);
237 }
238 }
239
240 void Clk_set_time (UCHAR hr, UCHAR min, UCHAR sec) //设置时间子程序
241 {
242 EA=0;
243 ClkHr = hr;
244 ClkMin = min;
245 ClkSec = sec;
246 EA=1;
247 }
248
249 void Clk_set_date ( uchar year,UCHAR month, UCHAR day) //设置日期子程序
250 {
251 EA=0;
252 ClkYear = year;
253 ClkMonth = month;
254 ClkDay = day;
255 ClkUpdateDOW();
256 EA=1;
257 }
258
259 void Clk_set_naozhong (uchar hr,uchar min)
260 {
261 EA = 0;
262 Naozhong_Hr = hr; //闹钟的小时
263 Naozhong_Min = min; //闹钟的分钟
264 EA = 1;
265 }
266
267 void ClkUpdateDate (void)
268 {
269 uchar newmonth;
270 if (ClkDay >= ClkMonthTbl[ClkMonth].MonthDays) //检查是否每月的最后一日
271 {
272 if (ClkMonth == 2) //检查是否是二月
273 {
274 if (ClkIsLeapYear(ClkYear) == TRUE) //检查是否闰年
275 {
276 if (ClkDay >= 29) //检查是否二月最后一日
277 {
278 ClkDay = 1;
279 newmonth = TRUE; //日期变为三月的第一日
280 }
281 else
282 {
283 ClkDay++;
284 newmonth = FALSE;
285 }
286 }
287 else
288 {
289 ClkDay = 1;
290 newmonth = TRUE;
291 }
292 }
293 else
294 {
295 ClkDay = 1;
296 newmonth = TRUE;
297 }
C51 COMPILER V8.08 WNL 05/22/2007 10:32:24 PAGE 6
298 }
299 else
300 {
301 ClkDay++;
302 newmonth = FALSE;
303 }
304 if (newmonth == TRUE) //是否新的一个月
305 {
306 if (ClkMonth >= 12) //是否十二月
307 {
308 ClkMonth = 1; //十二月
309 ClkYear++; //年份加1
310 }
311 else
312 {
313 ClkMonth++; //非十二月,月份加1
314 }
315 }
316 ClkUpdateDOW(); //计算星期
317 }
318
319 void ClkUpdateDOW (void)
320 {
321 UINT dow;
322 dow = ClkDay + ClkMonthTbl[ClkMonth].MonthVal;
323 if (ClkMonth < 3)
324 {
325 if (ClkIsLeapYear(ClkYear))
326 {
327 dow--;
328 }
329 }
330 dow += ClkYear + (ClkYear / 4);
331 dow += (ClkYear / 400) - (ClkYear / 100);
332 dow %= 7;
333 ClkDOW = dow;
334 }
C51 COMPILATION COMPLETE. 0 WARNING(S), 5 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -