用51 单片机实现公历与农历星期的转换程序Word文档格式.docx

上传人:b****6 文档编号:17192504 上传时间:2022-11-28 格式:DOCX 页数:13 大小:20.43KB
下载 相关 举报
用51 单片机实现公历与农历星期的转换程序Word文档格式.docx_第1页
第1页 / 共13页
用51 单片机实现公历与农历星期的转换程序Word文档格式.docx_第2页
第2页 / 共13页
用51 单片机实现公历与农历星期的转换程序Word文档格式.docx_第3页
第3页 / 共13页
用51 单片机实现公历与农历星期的转换程序Word文档格式.docx_第4页
第4页 / 共13页
用51 单片机实现公历与农历星期的转换程序Word文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

用51 单片机实现公历与农历星期的转换程序Word文档格式.docx

《用51 单片机实现公历与农历星期的转换程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《用51 单片机实现公历与农历星期的转换程序Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

用51 单片机实现公历与农历星期的转换程序Word文档格式.docx

temp_Byte2DATA38h

temp_Byte3DATA39h

temp_Byte4DATA3Ah

temp_Byte5DATA3Bh

time_weekDATA40h;

星期天出口

以下为公历转农历子程序

CONvert:

MOVA,time_year;

将年月日转化为HEX格式

MOVB,#16

DIVAB

MOVCONvert_yeAr,B

MOVB,#10

MULAB

ADDA,CONvert_yeAr

MOVCONvert_yeAr,A

MOVA,time_month

MOVC,ACC.7

MOVf0,C;

f0暂存世纪标志,仅用于数据表定位

CLRACC.7

JNBACC.4,CON_02

-4-

CLRACC.4;

ACC.4为1表示大于10月

ADDA,#10

CON_02:

MOVCONvert_mONth,A

MOVA,time_date

MOVCONvert_dAte,B

ADDA,CONvert_dAte

MOVCONvert_dAte,A

MOVdptr,#mONth_dAtA;

以下定位本年数据在表格中的位置

MOVA,CONvert_yeAr

JBf0,CON_06;

当前为19世纪年跳转

ADDA,#100;

从19世纪起定义表格起始年,20世纪要加100年

CON_06:

CLRC

SUBBA,#stArt_yeAr

MOVB,#3;

表格每年3字节

ADDA,dpl

MOVdpl,A

MOVA,B

ADDCA,dph

MOVdph,A

MOVA,#2

MOVCA,@A+dptr;

读本年表格最后一字节(春节日期)

CLRACC.7;

ACC.7是闰年第13个月大小,在此不用

MOVB,#32

MOVtemp_Byte1,A;

春节月份

MOVtemp_Byte2,B;

春节日

以下计算当前日期距元旦天数

MOVtemp_Byte3,#0;

设距元旦天数高位为0

MOVA,CONvert_mONth

CJNEA,#10,CON_08

CON_08:

JCCON_09;

9月以前日子数小于256天,高字节为0(9月份过去的整月为8个月)

MOVtemp_Byte3,#1

CON_09:

MOVA,CONvert_yeAr

ANLA,#03h;

ACC为除4的余数

JNZCON_10;

转常年处理

年除4余数为0是闰年

-5-

LCALLget_ruN_dAys_lOw;

取得闰年过去月的天数的低字节

SJMPCON_12

CON_10:

MOVA,CONvert_mONth

LCALLget_dAys_lOw;

取得常年过去月的天数的低字节

CON_12:

MOVB,CONvert_dAte

DECB;

因为日期从1日起,而不是0日起

ADDA,B;

过去的整月天数加当月天数

MOVtemp_Byte4,A

JNCCON_14

INCtemp_Byte3;

temp_Byte3,temp_Byte4分别为公历年过去的天数的高低字节

以下求春节距元旦天数,因肯定小于256天所以只用一字节表示

CON_14:

MOVA,temp_Byte1

春节不会在3月份,不用考虑闰年

DECA;

因为日期从1日起

ADDA,temp_Byte2

MOVtemp_Byte5,A;

temp_Byte5,为春节距元旦天数

CJNEA,temp_Byte1,CON_20;

转换月与春节月比较

MOVA,CONvert_dAte

CJNEA,temp_Byte2,CON_20;

转换日与春节日比较

CON_20:

JCCON_22

LJMPCON_60;

当前日大于等于春节日期,公历年与农历年同年份

CON_22:

MOVA,CONvert_yeAr;

不到春节,农历年比公历年低一年

JNZCON_24

MOVA,#100;

年有效数0-99

CON_24:

DECA

MOVA,dpl

CLRC

SUBBA,#3

JNCCON_26

DECdph;

表格指针指向上一年

CON_26:

MOVA,temp_Byte5

SUBBA,temp_Byte4

MOVtemp_Byte3,A;

temp_Byte3中为当前日离春节的天数

MOVCONvert_mONth,#12;

农历月为12月

CLRf0;

1901-2099年没有闰12月,清闰月标志

CLRA

MOVCA,@A+dptr

-6-

ANLA,#0f0h

SWAPA;

MOVtemp_Byte4,A;

temp_Byte4中为闰月

JZCON_30;

没有闰月转移

MOVA,#2;

有闰月,取第13个月天数

MOVA,#1

RLCA;

ACC中为最后6个月的大小值

SJMPCON_34

CON_30:

MOVA,#1

CON_34:

MOVtemp_Byte5,A

CON_40:

RRCA

MOVtemp_Byte5,A

JCCON_42

MOVB,#29;

小月29天

SJMPCON_44

CON_42:

MOVB,#30;

大月30天

CON_44:

MOVA,temp_Byte3

SUBBA,B

JZCON_46;

正好够减,就是农历日1日

JNCCON_50

不够减一月天数,结束农历月调整

CPLA;

求补取绝对值

INCA

CON_46:

INCA;

加1即为农历日

MOVB,#10;

转换并保存农历日,月,年

SWAPA

ORLA,B

MOVC,f0

MOVACC.7,C

MOVCONvert_mONth,A

-7-

RET;

结束转换

CON_50:

MOVtemp_Byte3,A;

temp_Byte3存减去一月后的天数

JBf0,CON_52;

是闰月,前推一月,月份不减

DECCONvert_mONth;

CON_52:

CJNEA,temp_Byte4,CON_54

CPLf0;

当前月与闰月相同,更改闰月标志

CON_54:

SJMPCON_40

CON_60:

MOVA,temp_Byte4;

春节日小于当前日,农历年同公历年

SUBBA,temp_Byte5

JNCCON_62

DECtemp_Byte3;

temp_Byte3temp_Byte4中为公历日离春节的天数

CON_62:

MOVCONvert_mONth,#1;

农历月为1月

XCHA,temp_Byte5;

temp_Byte5中为闰月,ACC为当年农历表第一字节

第一个月肯定不是闰月

ANLA,#0fh

MOVtemp_Byte1,A

MOVtemp_Byte2,A

ORLA,temp_Byte1

MOVA,temp_Byte2

-8-

MOVACC.3,C;

MOVtemp_Byte2,A;

以上temp_Byte1,temp_Byte2各BIT存农历年大小

CON_70:

MOVA,temp_Byte2

RLCA

MOVA,temp_Byte1

JCCON_72

小月29天处理

SJMPCON_74

CON_72:

CON_74:

MOVA,temp_Byte4

JNCCON_78;

低字节够减跳转

MOVB,A;

低字节不够减,B暂存减后结果,

MOVA,temp_Byte3

JZCON_76;

高字节为0,不够减

DECtemp_Byte3

MOVtemp_Byte4,B

SJMPCON_80

CON_76:

不够减结束月调整

LJMPCON_46;

转日期加1后,处理并保存转换后农历年月日

CON_78:

MOVtemp_Byte4,A;

temp_Byte3temp_Byte4天数为减去一月后天数

CON_80:

CJNEA,temp_Byte5,CON_82

JNBf0,CON_82;

更改标志后是非闰月,月份加1

SJMPCON_70

CON_82:

INCCONvert_mONth;

get_dAys_lOw:

MOVCA,@A+PC;

RET

DB0,31,59,90,120,151,181,212,243,17,48,78

get_ruN_dAys_lOw:

DB0,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表示春节的公历日期

DB004h,0Aeh,053h;

1901;

DB00Ah,057h,048h;

1902

DB055h,026h,0Bdh;

1903

DB00dh,026h,050h;

1904

DB00dh,095h,044h;

1905

DB046h,0AAh,0B9h;

1906

DB005h,06Ah,04dh;

1907

DB009h,0Adh,042h;

1908

DB024h,0Aeh,0B6h;

1909

DB004h,0Aeh,04Ah;

1910

DB06Ah,04dh,0Beh;

1911

DB00Ah,04dh,052h;

1912

DB00dh,025h,046h;

1913

DB05dh,052h,0BAh;

1914

DB00Bh,054h,04eh;

1915

DB00dh,06Ah,043h;

1916

DB029h,06dh,037h;

1917

DB009h,05Bh,04Bh;

1918

DB074h,09Bh,0C1h;

1919

DB004h,097h,054h;

1920

DB00Ah,04Bh,048h;

1921

DB05Bh,025h,0BCh;

1922

DB006h,0A5h,050h;

1923

DB006h,0d4h,045h;

1924

DB04Ah,0dAh,0B8h;

1925

DB002h,0B6h,04dh;

1926

DB009h,057h,042h;

1927

DB024h,097h,0B7h;

1928

DB004h,097h,04Ah;

1929

DB066h,04Bh,03eh;

1930

DB00dh,04Ah,051h;

1931

DB00eh,0A5h,046h;

1932

DB056h,0d4h,0BAh;

1933

DB005h,0Adh,04eh;

1934

DB002h,0B6h,044h;

1935

DB039h,037h,038h;

1936

DB009h,02eh,04Bh;

1937

DB07Ch,096h,0Bfh;

1938

DB00Ch,095h,053h;

1939

DB00dh,04Ah,048h;

1940

-10-

DB06dh,0A5h,03Bh;

1941

DB00Bh,055h,04fh;

1942

DB005h,06Ah,045h;

1943

DB04Ah,0Adh,0B9h;

1944

DB002h,05dh,04dh;

1945

DB009h,02dh,042h;

1946

DB02Ch,095h,0B6h;

1947

DB00Ah,095h,04Ah;

1948

DB07Bh,04Ah,0Bdh;

1949

DB006h,0CAh,051h;

1950

DB00Bh,055h,046h;

1951

DB055h,05Ah,0BBh;

1952

DB004h,0dAh,04eh;

1953

DB00Ah,05Bh,043h;

1954

DB035h,02Bh,0B8h;

1955

DB005h,02Bh,04Ch;

1956

DB08Ah,095h,03fh;

1957

DB00eh,095h,052h;

1958

DB006h,0AAh,048h;

1959

DB07Ah,0d5h,03Ch;

1960

DB00Ah,0B5h,04fh;

1961

DB004h,0B6h,045h;

1962

DB04Ah,057h,039h;

1963

DB00Ah,057h,04dh;

1964

DB005h,026h,042h;

1965

DB03eh,093h,035h;

1966

DB00dh,095h,049h;

1967

DB075h,0AAh,0Beh;

1968

DB005h,06Ah,051h;

1969

DB009h,06dh,046h;

1970

DB054h,0Aeh,0BBh;

1971

DB004h,0Adh,04fh;

1972

DB00Ah,04dh,043h;

1973

DB04dh,026h,0B7h;

1974

DB00dh,025h,04Bh;

1975

DB08dh,052h,0Bfh;

1976

DB00Bh,054h,052h;

1977

DB00Bh,06Ah,047h;

1978

DB069h,06dh,03Ch;

1979

DB009h,05Bh,050h;

1980

DB004h,09Bh,045h;

1981

DB04Ah,04Bh,0B9h;

1982

DB00Ah,04Bh,04dh;

1983

DB0ABh,025h,0C2h;

1984

-11-

DB006h,0A5h,054h;

1985

DB006h,0d4h,049h;

1986

DB06Ah,0dAh,03dh;

1987

DB00Ah,0B6h,051h;

1988

DB009h,037h,046h;

1989

DB054h,097h,0BBh;

1990

DB004h,097h,04fh;

1991

DB006h,04Bh,044h;

1992

DB036h,0A5h,037h;

1993

DB00eh,0A5h,04Ah;

1994

DB086h,0B2h,0Bfh;

1995

DB005h,0ACh,053h;

1996

DB00Ah,0B6h,047h;

1997

DB059h,036h,0BCh;

1998

DB009h,02eh,050h;

1999

DB00Ch,096h,045h;

2000

DB04dh,04Ah,0B8h;

2001

DB00dh,04Ah,04Ch;

2002

DB00dh,0A5h,041h;

2003

DB025h,0AAh,0B6h;

2004

DB005h,06Ah,049h;

2005

DB07Ah,0Adh,0Bdh;

2006

DB002h,05dh,052h;

2007

DB009h,02dh,047h;

2008

DB05Ch,095h,0BAh;

2009

DB00Ah,095h,04eh;

2010

DB00Bh,04Ah,043h;

2011

DB04Bh,055h,037h;

2012

DB00Ah,0d5h,04Ah;

2013

DB095h,05Ah,0Bfh;

2014

DB004h,0BAh,053h;

2015

DB00Ah,05Bh,048h;

2016

DB065h,02Bh,0BCh;

2017

DB005h,02Bh,050h;

2018

DB00Ah,093h,045h;

2019

DB047h,04Ah,0B9h;

2020

DB006h,0AAh,04Ch;

2021

DB00Ah,0d5h,041h;

2022

DB024h,0dAh,0B6h;

2023

DB004h,0B6h,04Ah;

2024

DB069h,057h,03dh;

2025

DB00Ah,04eh,051h;

2026

DB00dh,026h,046h;

2027

DB05eh,093h,03Ah;

2028

-12-

DB00dh,053h,04dh;

2029

DB005h,0AAh,043h;

2030

DB036h,0B5h,037h;

2031

DB009h,06dh,04Bh;

2032

DB0B4h,0Aeh,0Bfh;

2033

DB004h,0Adh,053h;

2034

DB00Ah,04dh,048h;

2035

DB06dh,025h,0BCh;

2036

DB00dh,025h,04fh;

2037

DB00dh,052h,044h;

2038

DB05dh,0AAh,038h;

2039

DB00Bh,05Ah,04Ch;

2040

DB005h,06dh,041h;

2041

DB024h,0Adh,0B6h;

2042

DB004h,09Bh,04Ah;

2043

DB07Ah,04Bh,0Beh;

2044

DB00Ah,04Bh,051h;

2045

DB00Ah,0A5h,046h;

2046

DB05Bh,052h,0BAh;

2047

DB006h,0d2h,04eh;

2048

DB00Ah,0dAh,042h;

2049

DB035h,05Bh,037h;

2050

DB009h,037h,04Bh;

2051

DB084h,097h,0C1h;

2052

DB004h,097h,053h;

2053

DB006h,04Bh,048h;

2054

DB066h,0A5h,03Ch;

20

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1