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

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

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

MOV B,#16
DIV AB
MOV TEMP_BYTE3,B
MOV B,#10
MUL AB
ADD A,TEMP_BYTE3
MOV TEMP_BYTE3,A ;TEMP_BYTE3=

MOV A,TEMP_BYTE1;
ANL A,#03H

JNZ GETW10 ;非闰年转移
MOV A,TEMP_BYTE2
CJNE A,#3,GETW06

GETW06: JNC GETW10 ;月大于2 转移
DEC TEMP_BYTE3 ;月份小于等于2,又是闰年,日减1
GETW10: MOV A,TEMP_BYTE2;
LCALL GET_CORRECT ;取月校正表数据
ADD A,TEMP_BYTE1
MOV B,#7
DIV AB ;B放年加校正日数之和后除7 的余数不先做这一步
;有可能数据溢出
MOV A,TEMP_BYTE1
ANL A,#0FCH
RR A
RR A ;以上年除4 即闰年数
ADD A,B
ADD A,TEMP_BYTE3
DEC A;
MOV B,#7
DIV AB
MOV A,B;
MOV WEEK,B;

RET
GET_CORRECT:
MOVC A,@A+PC
RET
DB 0,3,3,6,1,4,6,2,5,0,3,5
;***********************************************************
;以下为公历转农历子程序
;入口信息:
;出口信息:
;影响资源:
;占用资源:
;***********************************************************
GONG_NONG: MOV A,YEAR_SG ;将年月日转化为HEX 格式
MOV B,#16
DIV AB
MOV NONG_YEAR_SG,B
MOV B,#10
MUL AB
ADD A,NONG_YEAR_SG
MOV NONG_YEAR_SG,A

MOV A,MONTH_SG
JNB ACC.4,CON_02
CLR ACC.4 ;ACC.4 1 表示大于10 月
ADD A,#10
CON_02: MOV NONG_MONTH_SG,A

MOV A,DATE_SG
MOV B,#16
DIV AB
MOV NONG_DATE_SG,B
MOV B,#10
MUL AB
ADD A,NONG_DATE_SG
MOV NONG_DATE_SG,A

MOV DPTR,#MONTH_DATA ;以下定位本年数据在表格中的位置
MOV A,NONG_YEAR_SG
CLR C
SUBB A,#START_YEAR;
MOV B,#3;表格每年3 字节
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV A,#2
MOVC A,@A+DPTR ;读本年表格最后一字节(春节日期)
CLR ACC.7 ;ACC.7 是闰年第13 个月大小,在此不用
MOV B,#32
DIV AB
MOV TEMP_BYTE1,A ;春节月份
MOV TEMP_BYTE2,B ;春节日

; 以下计算当前日期距元旦天数
MOV TEMP_BYTE3,#0 ;设距元旦天数高位为0
MOV A,NONG_MONTH_SG
CJNE A,#10,CON_08
CON_08: JC CON_09 ;9月以前日子数小于256 天,高字节为0

(9 月份过去的整月为8 个月)
MOV TEMP_BYTE3,#1
CON_09: MOV A,NONG_YEAR_SG
ANL A,#03H ;ACC 为除4 的余数
JNZ CON_10 ;转常年处理
; 年除4 余数为0 是闰年

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

最新评论

内容 网友 时间

发表评论

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