当前位置: 网站首页 > 技术应用 > 单片机应用 > 应用范例

平年闰年算法处理

平年闰年计算,已实际应用
;//===============================================================================
;//********************************平闰年处理函数*********************************
;//===============================================================================
FlatLeapYear_Handle:
                MOVR            R_Month,A
                ADDAR           PCL,R
                GOTO            FlatLeapYear_Handle_END
                GOTO            Day_31
                GOTO            Month_2
                GOTO            Day_31
                GOTO            Day_30
                GOTO            Day_31
                GOTO            Day_30
                GOTO            Day_31
                GOTO            Day_31
                GOTO            Day_30
                GOTO            Day_31
                GOTO            Day_30
                GOTO            Day_31
Day_31:
                JBTS0           b_DayAddSub_Flag
                GOTO            Day_31_1
                MOVIA           31
                JLAR            R_Day
                GOTO            FlatLeapYear_Handle_END
                MOVIA           0x01
                MOVAR           R_Day
                JBTS0           b_MonthSet_Flag
                INCR            R_Month,R
                GOTO            FlatLeapYear_Handle_END
Day_31_1:
                MOVIA           0
                JNCMPAR         R_Day
                GOTO            Day_31_2
                GOTO            FlatLeapYear_Handle_END
Day_31_2:
                MOVIA           31
                MOVAR           R_Day
                GOTO            FlatLeapYear_Handle_END
Day_30:
                JBTS0           b_DayAddSub_Flag
                GOTO            Day_30_1
                MOVIA           30
                JLAR            R_Day
                GOTO            FlatLeapYear_Handle_END
                MOVIA           0x01
                MOVAR           R_Day
                JBTS0           b_MonthSet_Flag
                INCR            R_Month,R
                GOTO            FlatLeapYear_Handle_END
Day_30_1:
                MOVIA           0
                JNCMPAR         R_Day
                GOTO            Day_30_2
                GOTO            FlatLeapYear_Handle_END
Day_30_2:
                MOVIA           30
                MOVAR           R_Day
                GOTO            FlatLeapYear_Handle_END
Month_2:
                CALL            FlatLeapYearLoop
                MOVIA           0
                JCMPAR          R_REMAINDER0
                GOTO            FlatLeapYear
                JCMPAR          R_REMAINDER2
                GOTO            Day_29
FlatLeapYear:
                JCMPAR          R_REMAINDER1
                GOTO            Day_28
                GOTO            Day_29
Day_29:
                JBTS0           b_DayAddSub_Flag
                GOTO            Day_29_1
                MOVIA           29
                JLAR            R_Day
                GOTO            FlatLeapYear_Handle_END
                MOVIA           0x01
                MOVAR           R_Day
                JBTS0           b_MonthSet_Flag
                INCR            R_Month,R
                GOTO            FlatLeapYear_Handle_END
Day_29_1:
                MOVIA           0
                JNCMPAR         R_Day
                GOTO            Day_29_2
                GOTO            FlatLeapYear_Handle_END
Day_29_2:
                MOVIA           29
                MOVAR           R_Day
                GOTO            FlatLeapYear_Handle_END
Day_28:
                JBTS0           b_DayAddSub_Flag
                GOTO            Day_28_1
                MOVIA           28
                JLAR            R_Day
                GOTO            FlatLeapYear_Handle_END
                MOVIA           0x01
                MOVAR           R_Day
                JBTS0           b_MonthSet_Flag
                INCR            R_Month,R
                GOTO            FlatLeapYear_Handle_END
Day_28_1:
                MOVIA           0
                JNCMPAR         R_Day
                GOTO            Day_28_2
                GOTO            FlatLeapYear_Handle_END
Day_28_2:
                MOVIA           28
                MOVAR           R_Day
                ; ; ; GOTO      FlatLeapYear_Handle_END
FlatLeapYear_Handle_END:
                RETURN
FlatLeapYearLoop:
                MOVR            R_Year_L,A
                MOVAR           R_Temp0
                MOVR            R_Year_H,A
                MOVAR           R_Temp1
                MOVIA           4
                MOVAR           R_Temp3
                CALL            TwoByteDivOneByte
                MOVR            R_Temp2,A
                MOVAR           R_REMAINDER0            ;//年份除4取余
                MOVIA           100
                MOVAR           R_Temp3
                CALL            TwoByteDivOneByte
                MOVR            R_Temp2,A
                MOVAR           R_REMAINDER1            ;//年份除400取余
                MOVR            R_Year_L,A
                MOVAR           R_Temp0
                MOVR            R_Year_H,A
                MOVAR           R_Temp1
                MOVIA           100
                MOVAR           R_Temp3
                CALL            TwoByteDivOneByte
                MOVR            R_Temp2,A
                MOVAR           R_REMAINDER2            ;//年份除100取余
                RETURN
点击次数:  【关闭
  • 壹零零单片机©版权所有 2008-2025 粤ICP备17151077号

Powered by  xinfuke  5.2.5 ©2008-2025  www.100mcu.com