📄 生日提醒.lst
字号:
216 0x0A,0x4B,0x4d, //1983
217 0xAB,0x25,0xC2, //1984
218 0x06,0xA5,0x54, //1985
219 0x06,0xd4,0x49, //1986
220 0x6A,0xdA,0x3d, //1987
221 0x0A,0xB6,0x51, //1988
222 0x09,0x37,0x46, //1989
223 0x54,0x97,0xBB, //1990
224 0x04,0x97,0x4f, //1991
225 0x06,0x4B,0x44, //1992
226 0x36,0xA5,0x37, //1993
227 0x0e,0xA5,0x4A, //1994
228 0x86,0xB2,0xBf, //1995
229 0x05,0xAC,0x53, //1996
230 0x0A,0xB6,0x47, //1997
231 0x59,0x36,0xBC, //1998
232 0x09,0x2e,0x50, //1999 294
233 0x0C,0x96,0x45, //2000 297
234 0x4d,0x4A,0xB8, //2001
235 0x0d,0x4A,0x4C, //2002
236 0x0d,0xA5,0x41, //2003
237 0x25,0xAA,0xB6, //2004
C51 COMPILER V8.08 蒧日提醒 10/25/2011 08:42:07 PAGE 5
238 0x05,0x6A,0x49, //2005
239 0x7A,0xAd,0xBd, //2006
240 0x02,0x5d,0x52, //2007
241 0x09,0x2d,0x47, //2008
242 0x5C,0x95,0xBA, //2009
243 0x0A,0x95,0x4e, //2010
244 0x0B,0x4A,0x43, //2011
245 0x4B,0x55,0x37, //2012
246 0x0A,0xd5,0x4A, //2013
247 0x95,0x5A,0xBf, //2014
248 0x04,0xBA,0x53, //2015
249 0x0A,0x5B,0x48, //2016
250 0x65,0x2B,0xBC, //2017
251 0x05,0x2B,0x50, //2018
252 0x0A,0x93,0x45, //2019
253 0x47,0x4A,0xB9, //2020
254 0x06,0xAA,0x4C, //2021
255 0x0A,0xd5,0x41, //2022
256 0x24,0xdA,0xB6, //2023
257 0x04,0xB6,0x4A, //2024
258 0x69,0x57,0x3d, //2025
259 0x0A,0x4e,0x51, //2026
260 0x0d,0x26,0x46, //2027
261 0x5e,0x93,0x3A, //2028
262 0x0d,0x53,0x4d, //2029
263 0x05,0xAA,0x43, //2030
264 0x36,0xB5,0x37, //2031
265 0x09,0x6d,0x4B, //2032
266 0xB4,0xAe,0xBf, //2033
267 0x04,0xAd,0x53, //2034
268 0x0A,0x4d,0x48, //2035
269 0x6d,0x25,0xBC, //2036
270 0x0d,0x25,0x4f, //2037
271 0x0d,0x52,0x44, //2038
272 0x5d,0xAA,0x38, //2039
273 0x0B,0x5A,0x4C, //2040
274 0x05,0x6d,0x41, //2041
275 0x24,0xAd,0xB6, //2042
276 0x04,0x9B,0x4A, //2043
277 0x7A,0x4B,0xBe, //2044
278 0x0A,0x4B,0x51, //2045
279 0x0A,0xA5,0x46, //2046
280 0x5B,0x52,0xBA, //2047
281 0x06,0xd2,0x4e, //2048
282 0x0A,0xdA,0x42, //2049
283 0x35,0x5B,0x37, //2050
284 0x09,0x37,0x4B, //2051
285 0x84,0x97,0xC1, //2052
286 0x04,0x97,0x53, //2053
287 0x06,0x4B,0x48, //2054
288 0x66,0xA5,0x3C, //2055
289 0x0e,0xA5,0x4f, //2056
290 0x06,0xB2,0x44, //2057
291 0x4A,0xB6,0x38, //2058
292 0x0A,0xAe,0x4C, //2059
293 0x09,0x2e,0x42, //2060
294 0x3C,0x97,0x35, //2061
295 0x0C,0x96,0x49, //2062
296 0x7d,0x4A,0xBd, //2063
297 0x0d,0x4A,0x51, //2064
298 0x0d,0xA5,0x45, //2065
299 0x55,0xAA,0xBA, //2066
C51 COMPILER V8.08 蒧日提醒 10/25/2011 08:42:07 PAGE 6
300 0x05,0x6A,0x4e, //2067
301 0x0A,0x6d,0x43, //2068
302 0x45,0x2e,0xB7, //2069
303 0x05,0x2d,0x4B, //2070
304 0x8A,0x95,0xBf, //2071
305 0x0A,0x95,0x53, //2072
306 0x0B,0x4A,0x47, //2073
307 0x6B,0x55,0x3B, //2074
308 0x0A,0xd5,0x4f, //2075
309 0x05,0x5A,0x45, //2076
310 0x4A,0x5d,0x38, //2077
311 0x0A,0x5B,0x4C, //2078
312 0x05,0x2B,0x42, //2079
313 0x3A,0x93,0xB6, //2080
314 0x06,0x93,0x49, //2081
315 0x77,0x29,0xBd, //2082
316 0x06,0xAA,0x51, //2083
317 0x0A,0xd5,0x46, //2084
318 0x54,0xdA,0xBA, //2085
319 0x04,0xB6,0x4e, //2086
320 0x0A,0x57,0x43, //2087
321 0x45,0x27,0x38, //2088
322 0x0d,0x26,0x4A, //2089
323 0x8e,0x93,0x3e, //2090
324 0x0d,0x52,0x52, //2091
325 0x0d,0xAA,0x47, //2092
326 0x66,0xB5,0x3B, //2093
327 0x05,0x6d,0x4f, //2094
328 0x04,0xAe,0x45, //2095
329 0x4A,0x4e,0xB9, //2096
330 0x0A,0x4d,0x4C, //2097
331 0x0d,0x15,0x41, //2098
332 0x2d,0x92,0xB5, //2099
333 };
334 ///月份数据表
335 code uchar ri_code1[9]={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3};
336 code uint ri_code2[3]={0x111,0x130,0x14e};
337 code uchar table_xingqi[12]={0,3,3,6,1,4,6,2,5,0,3,5}; //月修正数据表
338
339 bit get_moon_ri(uchar yue_p,uint table_addr)
340 {
341 1 uchar tenp;
342 1 switch (yue_p)
343 1 {
344 2 case 1:{tenp=nian_code[table_addr]&0x08;
345 3 if (tenp==0)return(0);else return(1);}
346 2 case 2:{tenp=nian_code[table_addr]&0x04;
347 3 if (tenp==0)return(0);else return(1);}
348 2 case 3:{tenp=nian_code[table_addr]&0x02;
349 3 if (tenp==0)return(0);else return(1);}
350 2 case 4:{tenp=nian_code[table_addr]&0x01;
351 3 if (tenp==0)return(0);else return(1);}
352 2 case 5:{tenp=nian_code[table_addr+1]&0x80;
353 3 if (tenp==0) return(0);else return(1);}
354 2 case 6:{tenp=nian_code[table_addr+1]&0x40;
355 3 if (tenp==0)return(0);else return(1);}
356 2 case 7:{tenp=nian_code[table_addr+1]&0x20;
357 3 if (tenp==0)return(0);else return(1);}
358 2 case 8:{tenp=nian_code[table_addr+1]&0x10;
359 3 if (tenp==0)return(0);else return(1);}
360 2 case 9:{tenp=nian_code[table_addr+1]&0x08;
361 3 if (tenp==0)return(0);else return(1);}
C51 COMPILER V8.08 蒧日提醒 10/25/2011 08:42:07 PAGE 7
362 2 case 10:{tenp=nian_code[table_addr+1]&0x04;
363 3 if (tenp==0)return(0);else return(1);}
364 2 case 11:{tenp=nian_code[table_addr+1]&0x02;
365 3 if (tenp==0)return(0);else return(1);}
366 2 case 12:{tenp=nian_code[table_addr+1]&0x01;
367 3 if (tenp==0)return(0);else return(1);}
368 2 case 13:{tenp=nian_code[table_addr+2]&0x80;
369 3 if (tenp==0)return(0);else return(1);}
370 2 }
371 1 }
372 /*
373 函数功能:输入BCD阳历数据,输出BCD阴历数据(只允许1901-2099年)
374 调用函数示例:Conversion(c_sun,nian_sun,yue_sun,ri_sun)
375 如:计算2004年10月16日Conversion(0,0x4,0x10,0x16);
376 c_sun,nian_sun,yue_sun,ri_sun均为BCD数据,c_sun为世纪标志位,c_sun=0为21世
377 纪,c_sun=1为19世纪
378 调用函数后,原有数据不变,读c_moon,nian_moon,yue_moon,ri_moon得出阴历BCD数据
379 */
380 void Conversion(bit c,uchar nian,uchar yue,uchar ri)
381 { //c=0 为21世纪,c=1 为19世纪 输入输出数据均为BCD数据
382 1 uchar tenp1,tenp2,tenp3,yue_p;
383 1 uint tenp4,table_addr;
384 1 bit flag2,flag_y;
385 1 tenp1=nian/16; //BCD->hex 先把数据转换为十六进制
386 1 tenp2=nian%16;
387 1 nian=tenp1*10+tenp2;
388 1 tenp1=yue/16;
389 1 tenp2=yue%16;
390 1 yue=tenp1*10+tenp2;
391 1 tenp1=ri/16;
392 1 tenp2=ri%16;
393 1 ri=tenp1*10+tenp2;
394 1 //定位数据表地址
395 1 if(c==0)
396 1 {
397 2 table_addr=(nian+0x64-1)*0x3;
398 2 }
399 1 else
400 1 {
401 2 table_addr=(nian-1)*0x3;
402 2 }
403 1 //定位数据表地址完成
404 1 //取当年春节所在的公历月份
405 1 tenp1=nian_code[table_addr+2]&0x60;
406 1 tenp1=_cror_(tenp1,5);
407 1 //取当年春节所在的公历月份完成
408 1 //取当年春节所在的公历日
409 1 tenp2=nian_code[table_addr+2]&0x1f;
410 1 //取当年春节所在的公历日完成
411 1 // 计算当年春年离当年元旦的天数,春节只会在公历1月或2月
412 1 if(tenp1==0x1)
413 1 {
414 2 tenp3=tenp2-1;
415 2 }
416 1 else
417 1 {
418 2 tenp3=tenp2+0x1f-1;
419 2 }
420 1 // 计算当年春年离当年元旦的天数完成
421 1 //计算公历日离当年元旦的天数,为了减少运算,用了两个表
422 1 //ri_code1[9],ri_code2[3]
423 1 //如果公历月在九月或前,天数会少于0xff,用表ri_code1[9],
C51 COMPILER V8.08 蒧日提醒 10/25/2011 08:42:07 PAGE 8
424 1 //在九月后,天数大于0xff,用表ri_code2[3]
425 1 //如输入公历日为8月10日,则公历日离元旦天数为ri_code1[8-1]+10-1
426 1 //如输入公历日为11月10日,则公历日离元旦天数为ri_code2[11-10]+10-1
427 1 if (yue<10)
428 1 {
429 2 tenp4=ri_code1[yue-1]+ri-1;
430 2 }
431 1 else
432 1 {
433 2 tenp4=ri_code2[yue-10]+ri-1;
434 2 }
435 1 if ((yue>0x2)&&(nian%0x4==0))
436 1 { //如果公历月大于2月并且该年的2月为闰月,天数加1
437 2 tenp4+=1;
438 2 }
439 1 //计算公历日离当年元旦的天数完成
440 1 //判断公历日在春节前还是春节后
441 1 if (tenp4>=tenp3)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -