;真正的萬年歷:?84?bytes?的?51?ASM
;==SUB_WNL===?萬年歷?==*?Deng?Miao?*??2004-06-01?*****?GuangZhou?******
??????????SJ????DATA???30H?;?世紀(jì)??BCD??00?TO?99???
??????????NH????DATA???31H?;?年號??BCD??00?TO?99????0000?TO?9999?年
??????????YF????DATA???32H?;?月份??BCD??01?TO?12
???org?000h
?????MOV?SP,?#40H
?????MOV?SJ,?#21H?;2004-05
?????MOV?NH,?#01H
?????MOV?YF,?#4H???
?????ACALL?SUB_WNL
?????SJMP?$???
;===============SUB_WNL===================
?????;?入口:
????????;??SJ????DATA???30H?;?世紀(jì)??BCD??00?TO?99???
????????;??NH????DATA???31H?;?年號??BCD??00?TO?99????0000?TO?9999?年
????????;??YF????DATA???32H?;?月份??BCD??01?TO?12
?????;?出口
????????;?ACC???--??本月天數(shù)?BCD?28?to?31
????????;?B?????--??本月1日的星期數(shù)?1?to?6?==?星期1?to?星期6
????????;????????????????????????????????0?--?星期日
?????;?使用:??ACC,?B,?R5,?R6?
?????;?STACK:??3?bytes?(不包括調(diào)用)
??????ORG?50H
SUB_WNL:
??????PUSH?PSW
??????MOV?A,?SJ?
??????ACALL?BCD2BIN_MOD4??????
??????;?x?400年:?(大周期)?
??????;???????=146097天?=?7?*?20871?+?0?天
??????;?x?100年:?
??????;?000年?=?7?*?0?????+?0?+?1?-?1???????1??=??0?*?2?+?1?****
??????;?100年?=?7?*?5217??+?7?+?1?-?2???????2??=??1?*?2?
??????;?200年?=?7?*?10435?+?7?+?1?-?4???????4??=??2?*?2??
??????;?300年?=?7?*?15653?+?7?+?1?-?6???????6??=??3?*?2?
??????;?????????????????????????????????{1,2,4,6}??????????????
??????MOV?A,?R6??;?A=R6=?SJ_BIN?MOD?4
??????RLC?A???;?A=A*2+C???????A?=???????{1,2,4,6}???????????****
??????XRL?A,?#10000111B?;?????A?=?87H?-?A??;?邊界調(diào)整
??????MOV?R5,?A?????????;?????A?=???{86H,?85H,?83H,?81H}?;?R5:?星期??
??????MOV?A,?NH??
??????JZ??WNL_1
????????ACALL?BCD2BIN_MOD4
????????XCH?A,?R5?????
????????SUBB?A,?R5?;?0?年?;??0??=???0?+???0?+?1?+?(-1)?***
????????MOV?R5,?A
WNL_1:
??????MOV?A,?YF
??????ADD?A,?#(WNL_TAB-$-4)
??????MOVC?A,?@A+PC
??????MOV?R6,?A
???????
??????SWAP?A
??????ACALL?WNL_F0;?大年對>=3月調(diào)整準(zhǔn)備
??????ADDC?A,?R5??;?月調(diào)整
??????MOV?B,?#7
??????DIV?AB??????;?B?=?A?MOD?7
??????MOV?A,?R6
??????ACALL?WNL_F0;?大年調(diào)整準(zhǔn)備
??????ADDC?A,?#28
??????POP?PSW
??????RET
WNL_TAB:
??????DB?3*2?+?5?*?32+0?;1?????BIT?0???:??"2月"?標(biāo)志
??????DB?0*2+1+1?*?32+0?;2?**??BIT?1..2:?月大小
??????DB?3*2?+?1?*?32+16?;3??????????????00:28?天??
??????DB?2*2?+?4?*?32+16?;4??????????????01:----?
??????DB?3*2?+?6?*?32+16?;5??????????????10:?30?天?
??????DB?2*2?+?2?*?32+16?;6??????????????11:?31?天
??????DB?3*2?+?4?*?32+16?;7????BIT?3:?0?-----?
??????DB?3*2?+?7?*?32+16?;8????BIT?4:??0:?1/2月????????????????
??????DB?2*2?+?3?*?32+16?;9????????????1:?>=3月?
WNL_F0:????????;?6?BYTES?;?大年調(diào)整準(zhǔn)備
????????RRC?A????????????;0AH?
????????ANL?A,?#07H??????;0BH
?????????????????????????;0CH?
????????ANL?C,?F0????????;0DH
?????????????????????????;0EH
????????RET??????????????;0FH
??????DB?3*2?+?5?*?32+16?;10H??BIT?5..7:??星期調(diào)整數(shù)??????????
??????DB?2*2?+?1?*?32+16?;11H????????????0:---?????????
??????DB?3*2?+?3?*?32+16?;12H??????????1-7:?調(diào)整數(shù)?
BCD2BIN_MOD4:
?????;?功能:A.?1?BYTES?BCD?TO?BIN
??????????;??B.?MOD?4
??????????;??C.?MUL?2?
?????;?入口:
????????;??A??:??SJ?OR?NH???
????????;??F0?:??大世紀(jì)
?????;?出口
????????;?ACC???--??(BIN(A)?\?4)?*?2?-?(BIN(A)?MOD?4)?-?F0
????????;?R6????--??BIN(A)?MOD?4
????????;??C????--??IIF(?(BIN(A)?MOD?4)=0,?1,?0?)
?????;?使用:??ACC,?B,?R6,?PSW?
?????;?STACK:??0?bytes?(不包括調(diào)用)
??????MOV?R6,?A????????;???BCD?==>?BIN?
??????ANL?A,?#0F0H?????;?16X+Y?==>?10X+Y?
??????SWAP?A
??????MOV?B,?#(256-6)??;?(256-6)*X?+?(16X+Y)??
??????MUL?AB???????????;
??????ADD?A,?R6????????;?=?256X?+?(10X+Y)?
??????
??????MOV?R6,?A????????;?MOD4???
??????ANL?A,?#3
??????XCH?A,?R6???????;?R6?=?BIN?MOD?4???=?{0,1,2,3}
?????????????????;?X?4年:3?*?365?+?366?=?7*209?+?(-2)?**
??????XRL?A,?R6??????????????;?A?=?(BIN?\?4)
??????RR?A???????????????????;?A?=?(BIN?\4?)?*??????2??**
??????MOV?C,?F0???;?大世紀(jì)調(diào)整
??????SUBB?A,?R6?
??????;X?1?年:??????????????????????????
???????????;0?年??0??=???0?+?????????????0?+?1?+?(-1)?***?
???????????;1?年?366?=?7*52?+????????????1?+?1
???????????;2?年?366?+?365?=?7*104?+?????2?+?1
???????????;3?年?366?+?365?+?365?=?7*156+3?+?1
???????????;?????????????????????????{-1,1,2,3}?
??????CJNE?R6,?#1,?$?+?3?;?C?=?IIF(R6>=1,?0,?1)
??????MOV?F0,?C??????????;?C=1?為大年/大世紀(jì)??
??????RET?
???????;-----------------------------?
???END?;========?END?OF?FILE
基于單片機(jī)的萬年歷匯編語言程序
- 萬年歷(23638)
相關(guān)推薦
萬年歷
用單片機(jī)做萬年歷過程中,程序調(diào)試無錯誤,仿真成功。但是按照電路焊接好之后卻無法正常顯示,表現(xiàn)在:1、要施加很高電壓,大概7.5V時顯示屏才有數(shù)字出現(xiàn)2、按鍵調(diào)整時,數(shù)字會在其位置顯示,數(shù)據(jù)顯的位置不對3、顯示多個85望高手予以解答,小生不勝感激!
2014-04-04 17:02:50
萬年歷
跪求設(shè)計一種多功能萬年歷,該萬年歷可以顯示時間、實時顯示溫度和濕度,同時還具有農(nóng)歷提示功能,顯示中國傳統(tǒng)節(jié)日相關(guān)信息,具有整點報時功能,每當(dāng)整點到來蜂鳴器會發(fā)出一聲鳴叫。主要技術(shù)指標(biāo):溫濕度測量范圍
2013-03-05 14:20:52
評論