返回雅虎首页
雅虎数码 > 业界 > IT产业 > 正文

DS1302+AT89S51构成的万年历四(1)

  • 2007-05-22 13:51:55
  • 点击:0
  • 评论:0
  • 好评:0
  • 坏评:0
  • 第4页/共5页 << 上一页 | 下一页 >>
侠客:yanchen.zhu
“雅虎侠客”经典推荐文章
专题:足球明星都用什么手机?
专题:搜寻电影中的明星手机
专题:谴责五大品牌坑人手机
专题:数码!美女!谁更诱惑?
专题:诺基亚全面展开夏季攻势
【参赛】五一电脑城购物心得
【参赛】美丽的青海湖 清凉一夏的诱惑
【参赛】恒基伟业手机—又一胡师傅?
【参赛】如何鉴别行、欧水、港行机子
【参赛】睁开慧眼,看服务提供商的黑招

CON_54: SJMP CON_40
CON_60: MOV A,TEMP_BYTE4 ;春节日小于当前日,农历年同公历年
CLR C
SUBB A,TEMP_BYTE5
MOV TEMP_BYTE4,A
JNC CON_62
DEC TEMP_BYTE3 ;TEMP_BYTE3 TEMP_BYTE4 中为公历日离春节的天数
CON_62: MOV NONG_MONTH_SG,#1 ;农历月为1 月
CLR A
MOVC A,@A+DPTR
MOV TEMP_BYTE5,A
ANL A,#0F0H
SWAP A;
XCH A,TEMP_BYTE5 ;TEMP_BYTE5 中为闰月,ACC 为当年农历表第一字节
CLR F0 ;第一个月肯定不是闰月
ANL A,#0FH
MOV TEMP_BYTE1,A
MOV A,#1
MOVC A,@A+DPTR
MOV TEMP_BYTE2,A
ANL A,#0F0H
ORL A,TEMP_BYTE1
SWAP A
MOV TEMP_BYTE1,A
MOV A,#2
MOVC A,@A+DPTR
MOV C,ACC.7
MOV A,TEMP_BYTE2
ANL A,#0FH
SWAP A
MOV ACC.3,C;
MOV TEMP_BYTE2,A ;以上TEMP_BYTE1,TEMP_BYTE2 各BIT 存农历年大小
CON_70: MOV A,TEMP_BYTE2
RLC A
MOV TEMP_BYTE2,A
MOV A,TEMP_BYTE1
RLC A
MOV TEMP_BYTE1,A
JC CON_72
MOV B,#29 ;小月29 天处理
SJMP CON_74
CON_72: MOV B,#30 ;大月30 天
CON_74: MOV A,TEMP_BYTE4
CLR C
SUBB A,B
JNC CON_78 ;低字节够减跳转
MOV B,A ;低字节不够减, B 暂存减后结果,
MOV A,TEMP_BYTE3
JZ CON_76 ;高字节为0,不够减
DEC TEMP_BYTE3
MOV TEMP_BYTE4,B
SJMP CON_80
CON_76: MOV A,TEMP_BYTE4 ;不够减结束月调整
LJMP CON_46 ;转日期加1 后,处理并保存转换后农历年月日
CON_78: MOV TEMP_BYTE4,A ;TEMP_BYTE3 TEMP_BYTE4

天数为减去一月后天数
CON_80: MOV A,NONG_MONTH_SG
CJNE A,TEMP_BYTE5,CON_82
CPL F0 ;当前月与闰月相同,更改闰月标志
JNB F0,CON_82 ;更改标志后是非闰月,月份加1
SJMP CON_70
CON_82: INC NONG_MONTH_SG;
SJMP CON_70
GET_DAYS_LOW:
MOVC A,@A+PC ;取得常年过去月的天数的低字节
RET
DB 0,31,59,90,120,151,181,212,243,17,48,78
GET_RUN_DAYS_LOW:
MOVC A,@A+PC ;取得闰年过去月的天数的低字节
RET
DB 0,31,60,91,121,152,182,213,244,18,49,79
MONTH_DATA:
;公历年对应的农历数据,每年三字节,
;格式第一字节BIT7-4 位表示闰月月份,值为0 为无闰月,

BIT3-0 对应农历第1-4 月的大小
;第二字节BIT7-0 对应农历第5-12 月大小,

第三字节BIT7 表示农历第13个月大小
;月份对应的位为1 表示本农历月大(30 天),为0 表示小(29 天).
;第三字节BIT6-5 表示春节的公历月份,BIT4-0 表示春节的公历日
DB 00CH,096H,045H; 2000
DB 04DH,04AH,0B8H; 2001
DB 00DH,04AH,04CH; 2002
DB 00DH,0A5H,041H; 2003
DB 025H,0AAH,0B6H; 2004
DB 005H,06AH,049H; 2005
DB 07AH,0ADH,0BDH; 2006
DB 002H,05DH,052H; 2007
DB 009H,02DH,047H; 2008
DB 05CH,095H,0BAH; 2009
DB 00AH,095H,04EH; 2010
DB 00BH,04AH,043H; 2011
DB 04BH,055H,037H; 2012
DB 00AH,0D5H,04AH; 2013

  • 点击:0
  • 评论:0
  • 好评:0
  • 坏评:0

最新评论

内容 网友 时间

发表评论

您必须登陆后发表评论
登录  新用户?注册