📄 datetime.lst
字号:
C51 COMPILER V8.02 DATETIME 04/26/2008 21:37:29 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DATETIME
OBJECT MODULE PLACED IN datetime.OBJ
COMPILER INVOKED BY: D:\Keil1\C51\BIN\C51.EXE datetime.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 #include "datetime.h"
4 #include <REGX51.H>
5
6
7
8
9
10 DATETIME dtt_Now;
11 BYTE dtt_b225HzClock;
12 BYTE g_14HzClock;
13 BYTE g_1HzClock;
14 BIT g_HourClock; //整点报时中断
15
16
17
18 void dttInit(void)
19 {
20 1 BYTE save;
21 1
22 1 save = TMOD;
23 1 TMOD = (save & T1_MASK_) | (0x01 & T0_MASK_);
24 1 TH0 = 0;
25 1 TL0 = 0;
26 1 TR0 = 1;
27 1
28 1 ET0 = 1;
29 1
30 1 dtt_Now.yy = 0;
31 1 dtt_Now.mo = 1;
32 1 dtt_Now.dd = 1;
33 1 dtt_Now.hh = 0;
34 1 dtt_Now.mi = 0;
35 1 dtt_Now.ss = 0;
36 1 }
37
38
39 void dttIntrq(void) interrupt TF0_VECTOR
40 {
41 1 // 14.0625 Hz intrq
42 1
43 1 dtt_b225HzClock += 16;
44 1 g_14HzClock++;
45 1
46 1 if (dtt_b225HzClock >= 225)
47 1 {
48 2 dtt_b225HzClock -= 225;
49 2 dtt_Now.ss++;
50 2 g_1HzClock++;
51 2 }
52 1
53 1 if (dtt_Now.ss >= 60)
54 1 {
55 2 dtt_Now.ss = 0;
C51 COMPILER V8.02 DATETIME 04/26/2008 21:37:29 PAGE 2
56 2 dtt_Now.mi++;
57 2 }
58 1
59 1 if (dtt_Now.mi >= 60)
60 1 {
61 2 dtt_Now.mi = 0;
62 2 dtt_Now.hh++;
63 2 g_HourClock = TRUE; // 整点报时中断
64 2 }
65 1
66 1 if (dtt_Now.hh >= 24)
67 1 {
68 2 dtt_Now.hh = 0;
69 2 dtt_Now.dd++;
70 2 }
71 1 }
72
73
74
75 void dttSetCurDateTime(DATETIME * pDtt)
76 {
77 1 dtt_Now = *pDtt;
78 1 }
79
80
81 //BYTE dttGetCurDateTime(BYTE pos)
82 DATETIME dttGetCurDateTime(void)
83 {
84 1 // BYTE rt;
85 1
86 1 // 检查天进位
87 1 switch (dtt_Now.mo)
88 1 {
89 2 case 2:
90 2 if (dtt_Now.yy % 4)
91 2 {
92 3 if (dtt_Now.dd > 28)
93 3 {
94 4 dtt_Now.dd -= 28;
95 4 dtt_Now.mo ++;
96 4 }
97 3 }
98 2 else
99 2 {
100 3 if (dtt_Now.dd > 29)
101 3 {
102 4 dtt_Now.dd -= 29;
103 4 dtt_Now.mo ++;
104 4 }
105 3 }
106 2 break;
107 2 case 4:
108 2 case 6:
109 2 case 9:
110 2 case 11:
111 2 if (dtt_Now.dd > 30)
112 2 {
113 3 dtt_Now.dd -= 30;
114 3 dtt_Now.mo ++;
115 3 }
116 2 break;
117 2 default:
C51 COMPILER V8.02 DATETIME 04/26/2008 21:37:29 PAGE 3
118 2 if (dtt_Now.dd > 31)
119 2 {
120 3 dtt_Now.dd -= 31;
121 3 dtt_Now.mo ++;
122 3 }
123 2 }
124 1 if (dtt_Now.mo > 12)
125 1 {
126 2 dtt_Now.mo -= 12;
127 2 dtt_Now.yy ++;
128 2 }
129 1
130 1 return dtt_Now;
131 1 }
132
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 381 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 ----
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 + -