⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jrdmdysz.asm

📁 用增强型单片机51RD2做的控制器
💻 ASM
📖 第 1 页 / 共 3 页
字号:


;
;       ******  system Clock  ******
;
CLK:            MOV     TH0,#4CH        ; 50MS ( XT = 11.05926MHz )
                ORL     TL0,#01H
                PUSH    ACC
                PUSH    B
                PUSH    PSW
                PUSH    DPL
                PUSH    DPH
                SETB    PSW.3           ; RX : PAGE 3
                SETB    PSW.4
                INC     Timer1
                MOV     A,Timer1
                CLR     C
                SUBB    A,#Speed1
                JC      CLK1
                MOV     Timer1,#0
                SETB    ShowF
                SETB    ShowDtSjF

                CPL     GlintF
CLK1:           INC     Timer2
                MOV     A,Timer2
                CLR     C
                SUBB    A,#Speed2
                JC      CLK2
                MOV     Timer2,#0
                nop
CLK2:           INC     Timer3
                MOV     A,Timer3
                CLR     C
                SUBB    A,#Speed3
                JC      CLK3

                MOV     Timer3,#0
                NOP
CLK3:           MOV     A,TIME
                ADD     A,#1
                DA      A
                MOV     TIME,A
                CJNE    A,#20H,CLKE
                INC     SecTimerA
                INC     SecTimerB
                INC     RunTimer
                INC     StopTimer
                MOV     TIME,#0
                LCALL   SecTimer
                MOV     A,LedStatus
                LCALL   LedDrive                ; 面板 LED 驱动
                MOV     A,SEC
                ADD     A,#1
                DA      A
                MOV     SEC,A
                CJNE    A,#60H,CLKE
                LCALL   ReadMulClock    ; 读HT1380时钟日期
                INC     MinTimerA
                INC     MinTimerB
                SETB    DisplayF
                MOV     SEC,#0
                MOV     A,MIN
                ADD     A,#1
                DA      A
                MOV     MIN,A
                CJNE    A,#60H,CLKE
                MOV     MIN,#0
CLKE:           POP     DPH
                POP     DPL
                POP     PSW
                POP     B
                POP     ACC
                RETI

;
;       ******  双字节秒定时器  ******
;
SecTimer:       JB      SecTimerF,SecTimer1
                RET
SecTimer1:      MOV     A,JcSjL                 ; 检测时间低8位
                ADD     A,#1
                MOV     JcSjL,A
                MOV     A,JcSjH                 ; 检测时间高8位
                ADDC    A,#0
                MOV     JcSjH,A
                RET


;
;       ******  日期/时钟设置  ******
;
ClockSetup:     LCALL   Watchdog
                MOV     KeyCount,#0
                SETB    ClockEditF
                MOV     EditShowX,#4
                MOV     EditShowY,#224
ClockSetup1:    MOV     Variable8,Year
                MOV     Variable6,Month
                MOV     Variable5,Day
                MOV     Variable4,Hour
                MOV     Variable3,Min
                MOV     Variable2,Sec
ClockSetup2:    MOV     A,EditShowX
                CJNE    A,#04,ClockSetup3
                MOV     Variable8,#0BBH
                SJMP    ClockSetup8
ClockSetup3:    CJNE    A,#10,ClockSetup4
                MOV     Variable6,#0BBH
                SJMP    ClockSetup8
ClockSetup4:    CJNE    A,#16,ClockSetup5
                MOV     Variable5,#0BBH
                SJMP    ClockSetup8
ClockSetup5:    CJNE    A,#22,ClockSetup6
                MOV     Variable4,#0BBH
                SJMP    ClockSetup8
ClockSetup6:    CJNE    A,#28,ClockSetup7
                MOV     Variable3,#0BBH
                SJMP    ClockSetup8
ClockSetup7:    CJNE    A,#34,ClockSetup8
                MOV     Variable2,#0BBH
ClockSetup8:    LCALL   EditDateTime
                NOP
ClockSetup9:    LCALL   ScanKey
                JNB     KeyF,ClockSetup9
                CLR     KeyF
                MOV     A,KeyNumber             ;
                CJNE    A,#0AH,ClockSetup10
                RET
ClockSetup10:   CJNE    A,#0BH,ClockSetup12
                MOV     Year,Variable8
                MOV     Month,Variable6
                MOV     Day,Variable5
                MOV     Hour,Variable4
                MOV     Min,Variable3
                MOV     Sec,Variable2
                LCALL   HtWriteClock
                LCALL   HtWriteDate
                RET
ClockSetup11:   LJMP    ClockSetup1
                NOP
ClockSetup12:   CJNE    A,#0DH,ClockSetup13
                MOV     A,EditShowX
                CLR     C
                SUBB    A,#06H
                MOV     EditShowX,A
                JNC     ClockSetup11
                MOV     EditShowX,#04H
                LJMP    ClockSetup11
ClockSetup13:   CJNE    A,#0FH,ClockSetup14
                MOV     A,EditShowX
                ADD     A,#06H
                MOV     EditShowX,A
                CLR     C
                SUBB    A,#40
                JC      ClockSetup11
                MOV     EditShowX,#04H
ClockSetup14:   MOV     A,KeyNumber             ;
                CLR     C
                SUBB    A,#10
                JNC     ClockSetup11
                INC     KeyCount
                MOV     A,EditShowX
                CJNE    A,#4,ClockSetup17
                MOV     A,KeyCount
                CJNE    A,#1,ClockSetup16
                MOV     A,KeyNumber
                SWAP    A
                MOV     B,Variable8
                ANL     B,#00001111B
                ORL     A,B
                MOV     Variable8,A
                LJMP    ClockSetup8
ClockSetup15:   LJMP    ClockSetup2
                NOP
ClockSetup16:   CJNE    A,#2,ClockSetup15
                MOV     KeyCount,#0
                MOV     A,KeyNumber
                MOV     B,Variable8
                ANL     B,#11110000B
                ORL     A,B
                MOV     Variable8,A
                MOV     A,EditShowX
                ADD     A,#06H
                MOV     EditShowX,A
                CLR     C
                SUBB    A,#40
                JC      ClockSetup15
                MOV     EditShowX,#04H
                LJMP    ClockSetup15
ClockSetup17:   CJNE    A,#10,ClockSetup20
                MOV     A,KeyCount
                CJNE    A,#1,ClockSetup19
                MOV     A,KeyNumber
                SWAP    A
                MOV     B,Variable6
                ANL     B,#00001111B
                ORL     A,B
                MOV     Variable6,A
                LJMP    ClockSetup8
ClockSetup18:   LJMP    ClockSetup2
                NOP
ClockSetup19:   CJNE    A,#2,ClockSetup18
                MOV     KeyCount,#0
                MOV     A,KeyNumber
                MOV     B,Variable6
                ANL     B,#11110000B
                ORL     A,B
                MOV     Variable6,A
                MOV     A,EditShowX
                ADD     A,#06H
                MOV     EditShowX,A
                CLR     C
                SUBB    A,#40
                JC      ClockSetup18
                MOV     EditShowX,#04H
                LJMP    ClockSetup18
ClockSetup20:   CJNE    A,#16,ClockSetup23
                MOV     A,KeyCount
                CJNE    A,#1,ClockSetup22
                MOV     A,KeyNumber
                SWAP    A
                MOV     B,Variable5
                ANL     B,#00001111B
                ORL     A,B
                MOV     Variable5,A
                LJMP    ClockSetup8
ClockSetup21:   LJMP    ClockSetup2
                NOP
ClockSetup22:   CJNE    A,#2,ClockSetup18
                MOV     KeyCount,#0
                MOV     A,KeyNumber
                MOV     B,Variable5
                ANL     B,#11110000B
                ORL     A,B
                MOV     Variable5,A
                MOV     A,EditShowX
                ADD     A,#06H
                MOV     EditShowX,A
                CLR     C
                SUBB    A,#40
                JC      ClockSetup18
                MOV     EditShowX,#04H
                LJMP    ClockSetup18
ClockSetup23:   CJNE    A,#22,ClockSetup26
                MOV     A,KeyCount
                CJNE    A,#1,ClockSetup25
                MOV     A,KeyNumber
                SWAP    A
                MOV     B,Variable4
                ANL     B,#00001111B
                ORL     A,B
                MOV     Variable4,A
                LJMP    ClockSetup8
ClockSetup24:   LJMP    ClockSetup2
                NOP
ClockSetup25:   CJNE    A,#2,ClockSetup24
                MOV     KeyCount,#0
                MOV     A,KeyNumber
                MOV     B,Variable4
                ANL     B,#11110000B
                ORL     A,B
                MOV     Variable4,A
                MOV     A,EditShowX
                ADD     A,#06H
                MOV     EditShowX,A
                CLR     C
                SUBB    A,#40
                JC      ClockSetup24
                MOV     EditShowX,#04H
                LJMP    ClockSetup24
ClockSetup26:   CJNE    A,#28,ClockSetup29
                MOV     A,KeyCount
                CJNE    A,#1,ClockSetup28
                MOV     A,KeyNumber
                SWAP    A
                MOV     B,Variable3
                ANL     B,#00001111B
                ORL     A,B
                MOV     Variable3,A
                LJMP    ClockSetup8
ClockSetup27:   LJMP    ClockSetup2
                NOP
ClockSetup28:   CJNE    A,#2,ClockSetup27
                MOV     KeyCount,#0
                MOV     A,KeyNumber
                MOV     B,Variable3
                ANL     B,#11110000B
                ORL     A,B
                MOV     Variable3,A
                MOV     A,EditShowX
                ADD     A,#06H
                MOV     EditShowX,A
                CLR     C
                SUBB    A,#40
                JC      ClockSetup27
                MOV     EditShowX,#04H
                LJMP    ClockSetup27
ClockSetup29:   CJNE    A,#34,ClockSetup30
                MOV     A,KeyCount
                CJNE    A,#1,ClockSetup31
                MOV     A,KeyNumber
                SWAP    A
                MOV     B,Variable2
                ANL     B,#00001111B
                ORL     A,B
                MOV     Variable2,A
                LJMP    ClockSetup8
ClockSetup30:   LJMP    ClockSetup2
                NOP
ClockSetup31:   CJNE    A,#2,ClockSetup30
                MOV     KeyCount,#0
                MOV     A,KeyNumber
                MOV     B,Variable2
                ANL     B,#11110000B
                ORL     A,B
                MOV     Variable2,A
                MOV     A,EditShowX
                ADD     A,#06H
                MOV     EditShowX,A
                CLR     C
                SUBB    A,#40
                JC      ClockSetup32
                MOV     EditShowX,#04H
ClockSetup32:   LJMP    ClockSetup8
;
;       ******  日期时间编辑显示  ******
;
EditDateTime:   MOV     OXL,#0
                MOV     OY,#224
                MOV     SeleTab,#Tsk
                MOV     CCCODE,#02              ; 2
                LCALL   CCTW
                MOV     OXL,#2
                MOV     OY,#224
                MOV     SeleTab,#Tsk
                MOV     CCCODE,#00              ; 0
                LCALL   CCTW
                MOV     A,Variable8
                ANL     A,#0F0H
                SWAP    A
                MOV     OXL,#4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -