📄 uart.lst
字号:
C51 COMPILER V7.09 UART 11/19/2006 16:03:10 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE uart.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "includes.h"
2 #include "uart.h"
3
4 /*设置波特率子函数*/
5 void SetBaud(uint baud)
6 {
7 1 TH1 = 256 - OSC / baud / 32 / 12;
8 1 TL1 = TH1;
9 1 }
10
11
12 void SendData0(void)
13 {
14 1 SendBuf[0] = 'B';
15 1 SendBuf[1] = 'J';
16 1 SendBuf[2] = 'T';
17 1 SendBuf[3] = ',';
18 1 SendBuf[4] = Year / 10 + '0';
19 1 SendBuf[5] = Year % 10 + '0';
20 1 SendBuf[6] = Month / 10 + '0';
21 1 SendBuf[7] = Month % 10 + '0';
22 1 SendBuf[8] = Day / 10 + '0';
23 1 SendBuf[9] = Day % 10 + '0';
24 1 SendBuf[10] = ',';
25 1 SendBuf[11] = Hour / 10 + '0';
26 1 SendBuf[12] = Hour % 10 + '0';
27 1 SendBuf[13] = Minute / 10 + '0';
28 1 SendBuf[14] = Minute % 10 + '0';
29 1 SendBuf[15] = Second / 10 + '0';
30 1 SendBuf[16] = Second % 10 + '0';
31 1 SendBuf[17] = ',';
32 1
33 1 SendBuf[32] = ',';
34 1 SendBuf[33] = Frequency / 10000 + '0';
35 1 SendBuf[34] = Frequency % 10000 / 1000 + '0';
36 1 SendBuf[35] = '.';
37 1 SendBuf[36] = Frequency % 1000 / 100 + '0';
38 1 SendBuf[37] = Frequency % 100 / 10 + '0';
39 1 SendBuf[38] = Frequency % 10 + '0';
40 1 SendBuf[39] = '\r';
41 1 SendBuf[40] = '\n';
42 1 SendCoun = 0;
43 1 SendLen = 41;
44 1 SBUF = SendBuf[0];
45 1 }
46
47 void SendData1(void)
48 {
49 1 SendBuf[0] = '<';
50 1 SendBuf[1] = 'B';
51 1 SendBuf[2] = '>';
52 1 SendBuf[3] = Hour / 10 + '0';
53 1 SendBuf[4] = Hour % 10 + '0';
54 1 SendBuf[5] = Minute / 10 + '0';
55 1 SendBuf[6] = Minute % 10 + '0';
C51 COMPILER V7.09 UART 11/19/2006 16:03:10 PAGE 2
56 1 SendBuf[7] = Second / 10 + '0';
57 1 SendBuf[8] = Second % 10 + '0';
58 1 SendBuf[9] = Year / 10 + '0';
59 1 SendBuf[10] = Year % 10 + '0';
60 1 SendBuf[11] = Month / 10 + '0';
61 1 SendBuf[12] = Month % 10 + '0';
62 1 SendBuf[13] = Day / 10 + '0';
63 1 SendBuf[14] = Day % 10 + '0';
64 1 SendBuf[15] = '<';
65 1 SendBuf[16] = 'F';
66 1 SendBuf[17] = '>';
67 1 SendBuf[18] = Frequency / 10000 + '0';
68 1 SendBuf[19] = Frequency % 10000 / 1000 + '0';
69 1 SendBuf[20] = '.';
70 1 SendBuf[21] = Frequency % 1000 / 100 + '0';
71 1 SendBuf[22] = Frequency % 100 / 10 + '0';
72 1 SendBuf[23] = Frequency % 10 + '0';
73 1 SendBuf[24] = '<';
74 1 SendBuf[25] = 'C';
75 1 SendBuf[26] = '>';
76 1
77 1 SendBuf[33] = '\r';
78 1 SendBuf[34] = '\n';
79 1 SendCoun = 0;
80 1 SendLen = 35;
81 1 SBUF = SendBuf[0];
82 1 }
83
84 void SendData2(void)
85 {
86 1 SendBuf[0] = 'S';
87 1 SendBuf[1] = 'T';
88 1 SendBuf[2] = Hour / 10 + '0';
89 1 SendBuf[3] = Hour % 10 + '0';
90 1 SendBuf[4] = Minute / 10 + '0';
91 1 SendBuf[5] = Minute % 10 + '0';
92 1 SendBuf[6] = Second / 10 + '0';
93 1 SendBuf[7] = Second % 10 + '0';
94 1 SendBuf[8] = Day / 10 + '0';
95 1 SendBuf[9] = Day % 10 + '0';
96 1 SendBuf[10] = Month / 10 + '0';
97 1 SendBuf[11] = Month % 10 + '0';
98 1 SendBuf[12] = Year / 10 + '0';
99 1 SendBuf[13] = Year % 10 + '0';
100 1 SendBuf[14] = 'A';
101 1
102 1 SendBuf[21] = Frequency / 10000 + '0';
103 1 SendBuf[22] = Frequency % 10000 / 1000 + '0';
104 1 SendBuf[23] = Frequency % 1000 / 100 + '0';
105 1 SendBuf[24] = Frequency % 100 / 10 + '0';
106 1 SendBuf[25] = '\r';
107 1 SendBuf[26] = '\n';
108 1 SendCoun = 0;
109 1 SendLen = 27;
110 1 SBUF = SendBuf[0];
111 1 }
112
113 /*判断是否闰年*/
114 uchar LeapYear(uchar yea)
115 {
116 1 uchar temp, YesNo;
117 1 temp = yea % 4;
C51 COMPILER V7.09 UART 11/19/2006 16:03:10 PAGE 3
118 1 if (temp == 0)
119 1 YesNo = 'y';
120 1 else
121 1 YesNo = 'n';
122 1 return(YesNo);
123 1 }
124
125 uint PastDays(uint year, uchar month, uchar day)
126 {
127 1 uint pass_days;
128 1 switch(month) {
129 2 case 1:
130 2 pass_days = day - 1;
131 2 break;
132 2 case 2:
133 2 pass_days = 31 + day - 1;
134 2 break;
135 2 case 3:
136 2 pass_days = 59 + day - 1;
137 2 break;
138 2 case 4:
139 2 pass_days = 90 + day - 1;
140 2 break;
141 2 case 5:
142 2 pass_days = 120 + day - 1;
143 2 break;
144 2 case 6:
145 2 pass_days = 151 + day - 1;
146 2 break;
147 2 case 7:
148 2 pass_days = 181 + day - 1;
149 2 break;
150 2 case 8:
151 2 pass_days = 212 + day - 1;
152 2 break;
153 2 case 9:
154 2 pass_days = 243 + day - 1;
155 2 break;
156 2 case 10:
157 2 pass_days = 273 + day - 1;
158 2 break;
159 2 case 11:
160 2 pass_days = 304 + day - 1;
161 2 break;
162 2 case 12:
163 2 pass_days = 334 + day - 1;
164 2 break;
165 2 default:
166 2 break;
167 2 }
168 1 if (LeapYear(year) == 'y' && month > 2) {
169 2 pass_days = pass_days + 1;
170 2 }
171 1 return(pass_days);
172 1 }
173
174 uint TimeDiffer(uchar year0, uchar month0, uchar day0, uchar year1, uchar month1, uchar day1)
175 {
176 1 uint y1, y2, y3;
177 1 y1 = year0;
178 1 y2 = year1;
179 1 while (y1 < y2) {
C51 COMPILER V7.09 UART 11/19/2006 16:03:10 PAGE 4
180 2 if (LeapYear(y1) == 'y') {
181 3 y3 = y3 + 1;
182 3 }
183 2 y1 = y1 + 1;
184 2 }
185 1 y3 = y3 + (year1 - year0) * 365;
186 1 y3 = y3 + PastDays(year1, month1, day1) - PastDays(year0, month0, day0);
187 1 return(y3);
188 1 }
189
190 /*计算年,月,日 */
191 void ComputeDate(void)
192 {
193 1 uint days;
194 1 Year = (Date[4] - '0') * 10 + (Date[5] - '0');
195 1 Month = (Date[2] - '0') * 10 + (Date[3] - '0');
196 1 Day = (Date[0] - '0') * 10 + (Date[1] - '0');
197 1 Hour = (Time[0] - '0') * 10 + (Time[1] - '0');
198 1 Minute = (Time[2] - '0') * 10 + (Time[3] - '0');
199 1 Second = (Time[4] - '0') * 10 + (Time[5] - '0');
200 1 Hour += 8;
201 1 if(Hour >= 24) {
202 2 Hour -= 24;
203 2 Day += 1;
204 2 }
205 1 switch(Month) {
206 2 case 1:
207 2 if ( Day > 31) {
208 3 Day = 1;
209 3 Month += 1;
210 3 }
211 2 break;
212 2 case 2:
213 2 if (LeapYear(Year) == 'y') {
214 3 if (Day > 29) {
215 4 Day = 1;
216 4 Month += 1;
217 4 }
218 3 }
219 2 else {
220 3 if ( Day > 28) {
221 4 Day = 1;
222 4 Month += 1;
223 4 }
224 3 }
225 2 break;
226 2 case 3:
227 2 if (Day > 31) {
228 3 Day = 1;
229 3 Month += 1;
230 3 }
231 2 break;
232 2 case 4:
233 2 if (Day > 30) {
234 3 Day = 1;
235 3 Month += 1;
236 3 }
237 2 break;
238 2 case 5:
239 2 if (Day > 31) {
240 3 Day = 1;
241 3 Month += 1;
C51 COMPILER V7.09 UART 11/19/2006 16:03:10 PAGE 5
242 3 }
243 2 break;
244 2 case 6:
245 2 if (Day > 30) {
246 3 Day = 1;
247 3 Month += 1;
248 3 }
249 2 break;
250 2 case 7:
251 2 if (Day > 31) {
252 3 Day = 1;
253 3 Month += 1;
254 3 }
255 2 break;
256 2 case 8:
257 2 if (Day > 31) {
258 3 Day = 1;
259 3 Month += 1;
260 3 }
261 2 break;
262 2 case 9:
263 2 if (Day > 30) {
264 3 Day = 1;
265 3 Month += 1;
266 3 }
267 2 break;
268 2 case 10:
269 2 if (Day > 31) {
270 3 Day = 1;
271 3 Month += 1;
272 3 }
273 2 break;
274 2 case 11:
275 2 if (Day > 30) {
276 3 Day = 1;
277 3 Month += 1;
278 3 }
279 2 break;
280 2 case 12:
281 2 if (Day > 31) {
282 3 Day = 1;
283 3 Month += 1;
284 3 }
285 2 break;
286 2 default:
287 2 break;
288 2 }
289 1 if (Month > 12) {
290 2 Month = 1;
291 2 Year += 1;
292 2 }
293 1 days = TimeDiffer(0, 1, 2, Year, Month, Day);
294 1 Week = days % 7;
295 1 }
296
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1695 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V7.09 UART 11/19/2006 16:03:10 PAGE 6
DATA SIZE = ---- 12
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -