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

📄 acmftsj_n.asm

📁 一个完整且典型的遥控器程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        MOV     OFTREG,XA
        MOV     XA,HOUR
        SUBS    XA,BC
        BR      TSETOF1
        MOV     XA,HOUR
        MOV     BC,XA
        MOV     XA,OFTIME
        SUBS    XA,BC
        NOP
TSETOF2:
        MOV     WORKA,XA
        MOV     XA,#3CH
        MOV     WORKB,XA
        CALL    !MULTB
        MOV     XA,OFMTIME
        MOV     OFMTREG,XA
        MOV     BC,XA
        MOV     XA,MIN
        SUBS    XA,BC
        BR      TSETOF3
        MOV     XA,MIN
        MOV     BC,XA
        MOV     XA,OFMTREG
        SUBS    XA,BC
        NOP
        MOV     BC,XA
        MOV     XA,WORKB
        ADDS    XA,BC
        BR      S40_1
        INCS    WORKA
        NOP
        MOV     WORKB,XA
S40_1:  MOV     REM96B+6,XA
        MOV     WMIN,XA
        MOV     XA,WORKA
        MOV     REM96B+16,A
        MOV     WMIN+2,A
        SKT     ONTIMEF
        BR      TSETOF_4
TSETOF_5:
        SET1    TTF
        CALL    !DCOMP
        SKF     DFLG71F
        BR      S40_11
        CLR1    TIMONF
S40_12: CLR1    ONTIMEF
        SEL     MB1
        SET1    DFLG10.3
        SEL     MB0
        SET1    (REM96B+8).3
        MOV     XA,ONTIME
        MOV     BC,XA
        MOV     ONTREG,XA
        MOV     XA,HOUR
        SUBS    XA,BC
        BR      TSETOF_1
        MOV     XA,HOUR
        MOV     BC,XA
        MOV     XA,ONTREG
        SUBS    XA,BC
        NOP
TSETOF_2:
        MOV     WORKA,XA
        MOV     XA,#3CH
        MOV     WORKB,XA
        CALL    !MULTB
        MOV     XA,ONMTIME
        MOV     ONMTREG,XA
        MOV     BC,XA
        MOV     XA,MIN
        SUBS    XA,BC
        BR      TSETOF_3
        MOV     XA,MIN
        MOV     BC,XA
        MOV     XA,ONMTREG
        SUBS    XA,BC
        NOP
        MOV     BC,XA
        MOV     XA,WORKB
        ADDS    XA,BC
        BR      S40_10
        INCS    WORKA
        NOP
        MOV     WORKB,XA
S40_10: MOV     REM96B+14,XA
        SKF     TIMONF
        MOV     WMIN,XA
        MOV     XA,WORKA
        SKF     TIMONF
        MOV     WMIN+2,A
        MOV     REM96B+17,A
        SKF     TIMONF
        BR      MYGOD2
        MOV     XA,REM96B+14
        MOV     WMINREG,XA
        MOV     A,REM96B+17
        MOV     WMINREG+2,A
MYGOD_2:MOV     XA,WMIN
        MOV     BC,XA
        MOV     XA,WMINREG
        SUBS    XA,BC
        BR      MYGOD_20
        MOV     WMINREG,XA
        MOV     A,WMINREG+2
        DECS    A
        NOP
        MOV     WMINREG+2,A
        BR      WHAT2
MYGOD_20:
        MOV     WMINREG,XA
WHAT2:  MOV     XA,#WMIN+2
        MOV     HL,XA
        MOV     A,WMINREG+2
        SUBS    A,@HL
        NOP
        MOV     WMINREG+2,A
S40_13: SKT     ONOF
        BR      S40_14
        SKT     TIMONF
        BR      ACM4
        SKT     OFFF
        SET1    ONOFF
        CLR1    OFFF
;        CALL    !OFFDISP
        RET
ACM4:   SKT     OFFF
        SET1    ONOFF
        CLR1    OFFF
        RET
MYGOD2: MOV     XA,REM96B+6
        MOV     WMINREG,XA
        MOV     A,REM96B+16
        MOV     WMINREG+2,A
        BR      MYGOD_2
TSETOF_4:
        SKF     TIMONF
        BR      WANG1
        BR      S40_13
WANG1:  SET1    OFFF
        BR      TSETOF_5
S40_14: SKT     TIMOFF
        BR      ACM5
        CLR1    ONOFF
        CALL    !ONDISP
        RET
ACM5:   CLR1    ONOFF
        SET1    ONF
        CALL    !ONDISP
        RET
S40_11: CLR1    TIMOFF
        SET1    TIMONF
        BR      S40_12
;
TSETOF_1:
        MOV     BC,XA
        MOV     XA,#18H
        SUBS    XA,BC
        NOP
        SKE     A,#08H
        BR      TSETOF_2
        SKE     X,#01H
        BR      TSETOF_2
        MOV     XA,#00H
        BR      TSETOF_2
TSETOF_3:
        MOV     BC,XA
        MOV     XA,#WORKB
        MOV     HL,XA
        SKE     @HL,#0H
        BR      AIR2
        INCS    L
        NOP
        SKE     @HL,#0H
        BR      AIR2
        MOV     XA,#WORKA
        MOV     HL,XA
        SKE     @HL,#0H
        BR      AIR2
        MOV     A,#05H
        MOV     WORKA,A
        MOV     XA,#0A0H
        MOV     WORKB,XA
AIR2:
        MOV     XA,WORKB
        SUBS    XA,BC
        BR      SETOF_30
        MOV     WORKB,XA
        MOV     XA,WORKA
        DECS    XA
        NOP
SETOF_31:
        MOV     WORKA,XA
        MOV     XA,WORKB
        BR      S40_10
SETOF_30:
        MOV     WORKB,XA
        BR      S40_10
;
TSETOF1:
        MOV     BC,XA
        MOV     XA,#18H
        SUBS    XA,BC
        NOP
        SKE     A,#08H
        BR      TSETOF2
        SKE     X,#01H
        BR      TSETOF2
        MOV     XA,#00H
        BR      TSETOF2
TSETOF3:MOV     BC,XA
        MOV     XA,#WORKB
        MOV     HL,XA
        SKE     @HL,#0H
        BR      AIR1
        INCS    L
        NOP
        SKE     @HL,#0H
        BR      AIR1
        MOV     XA,#WORKA
        MOV     HL,XA
        SKE     @HL,#0H
        BR      AIR1
        MOV     A,#05H
        MOV     WORKA,A
        MOV     XA,#0A0H
        MOV     WORKB,XA
AIR1:   MOV     XA,WORKB
        SUBS    XA,BC
        BR      TSETOF30
        MOV     WORKB,XA
        MOV     XA,WORKA
        DECS    XA
        NOP
TSETOF31:
        MOV     WORKA,XA
        MOV     XA,WORKB
        BR      S40_1
TSETOF30:
        MOV     WORKB,XA
        BR      S40_1
;****************DISPLAY OFFTIME SUB***************
DISOFT  CSEG    INBLOCK
        MOV     XA,OFTIME
;        MOV     BC,#0CH
;        SUBS    XA,BC
;        BR      DISOFT0
;        SEL     MB1
;        SET1    DFLG6.3
;        CLR1    DFLG6.1
;        SET1    DFLG6.0
;        SEL     MB0
;        MOV     BC,#00H
;        MOV     XA,OFTIME
;        SKE     XA,BC
;        BR      DISOFT1
;        MOV     XA,#0CH
;        BR      DISOFT1
;DISOFT0:SEL     MB1
;        SET1    DFLG6.3
;        CLR1    DFLG6.0
;        SET1    DFLG6.1
;        SEL     MB0
;        MOV     BC,#00H
;        SKE     XA,BC
;        BR      DISOFT1
;        MOV     XA,#0CH
DISOFT1:MOV     BCD,XA
        CALL    !CHTOBCD
        MOV     XA,BCD
        MOV     DE,XA
        CALL    !LCDSEG
        SEL     MB1
        OR      A,#1000B
        MOV     DFLG28,A
        XCH     A,X
        MOV     DFLG5,A
        SKE     D,#0H
        BR      DISOFT2
        CLR1    DFLG6.2
        CLR1    DFLG6.1
        CLR1    DFLG6.0
        BR      DISOFT3
DISOFT2_1:
        SET1    DFLG6.0
        SET1    DFLG6.1
        CLR1    DFLG6.2
        BR      DISOFT3
DISOFT2:SKE     D,#01H
        BR      DISOFT2_1
        SET1    DFLG6.2
        SET1    DFLG6.1
        CLR1    DFLG6.0
DISOFT3:SEL     MB0
        MOV     XA,OFMTIME
        MOV     BCD,XA
        CALL    !CHTOBCD
        MOV     XA,BCD
        MOV     DE,XA
        CALL    !LCDSEG
        SKF     ONOF
        OR      A,#1000B
        SEL     MB1
        MOV     DFLG24,A
        XCH     A,X
        MOV     DFLG25,A
        SEL     MB0
        MOV     A,D
        CALL    !LCDSEG
        SEL     MB1
        MOV     DFLG26,A
        XCH     A,X
        MOV     DFLG27,A
        SEL     MB0
        SKF     TTF
        BR      DISOFT5
        SKT     TIMONF
        BR      DISOFT4
DISOFT5:CALL    !DCOMP
        RET
DISOFT4:SKT     ONTIMEF
        RET
        BR      DISOFT5
;
;===================================================================
;              TRANSMIT    SUBROUTINE
;===================================================================
REMOCON CSEG    INBLOCK
        SEL     MB1
        SET1    DFLG23.0
        SEL     MB0
        CLR1    KEYF
        SET1    TRANF
        SET1    DISP1SF
        MOV     A,#0H
        MOV     DISP1S,A
        MOV     HL,#REM96B
        MOV     XA,@HL
        MOV     BC,XA
        INCS    HL
        NOP
        INCS    HL
        NOP
REMOCON1:
        MOV     XA,@HL
        ADDS    XA,BC
        NOP
        MOV     BC,XA
        INCS    HL
        NOP
        INCS    HL
        NOP
        SKE     L,#06H
        BR      REMOCON1
        SKE     H,#07H
        BR      REMOCON1
        MOV     REM96B+22,XA
        SEL     MB15
        MOV     XA,#20H
        MOV     PMGB,XA
        mov     a,#00h
        mov     port2,a
        mov     xa,#24h
        mov     pmgb,xa
        MOV     A,#0011B
        MOV     CLOM,A                     ;DISABAL CLOCK OUTPUT
        MOV     XA,#1DH                    ;HOW MUCH CP
        MOV     TMOD1,XA                   ;INTERVAL TIME: 2.97ms
        MOV     XA,#01101100B              ;CP=1/(2.5M/256)=102.5;;;SETTIME=102.5*(28+1)=2.97MS
        MOV     TM1,XA                     ;CP
        MOV     A,#1011B
        MOV     CLOM,A                     ;ENABAL CLOCK OUT
        SEL     MB0
        MOV     A,#0H
        MOV     TPARA,A                    ;TPARA=0
        CLR1    RMTRF                      ;SET TANSMIT DATA
        CLR1    PCLONF
        CLR1    CDRPTF
        EI      IET1
        RET
INTT1   CSEG    INBLOCK
        PUSH    XA
        PUSH    HL
        PUSH    BS
        MOV     A,TPARA
        ADDS    A,#0FH
        BR      RMODE0                   ;TPARA=0,RMODE0
        ADDS    A,#0FH
        BR      RMODE1
        ADDS    A,#0FH
        BR      RMODE2
        ADDS    A,#0FH
        BR      RMODE3
        ADDS    A,#0FH
        BR      RMODE4
        ADDS    A,#0FH
        BR      RMODE5
        ADDS    A,#0FH
        BR      RMODE6
        BR      RMODE7
RMODE0: MOV     XA,#2AH                   ;INTERVAL=4.32MS
RMODE3: MOV     XA,#15H                   ;INTERVAL=2.25MS
        MOV     TMOD1,XA
        MOV     XA,#01101100B              ;102.5us
RM5:    MOV     TM1,XA
        SET1    TM1.3
        MOV     A,#0000B
        MOV     CLOM,A                  ;STOP CLOCK OUT
        SET1    PCLONF
        MOV     XA,#0FFH-96             ;96bit code
        MOV     RMDCT,XA
RMODE6: INCS    TPARA
RRTRN:  POP     BS
        POP     HL
        POP     XA
        RETI
RMODE1: MOV     XA,#00111100B           ;12.8us
        MOV     TM1,XA
        SET1    TM1.3
        SKT     PCLONF
        BR      RM01
        MOV     A,TPARA
        DECS    A
        MOV     TPARA,A
RMODE4: MOV     XA,#00111100B             ;12.8us
        MOV     TM1,XA
        SET1    TM1.3
        INCS    TPARA
        MOV     A,#1011B
        MOV     CLOM,A
        CLR1    PCLONF
        MOV     XA,#29H                 ;0.54ms,high level
;        MOV     XA,#2AH                 ;NEXT CHANGE
        MOV     TMOD1,XA
        BR      RRTRN
RM01:   MOV     A,#0000B
        MOV     CLOM,A
        SET1    PCLONF
        INCS    RMDCT
        BR      RM02
        INCS    RMDCT+1
        BR      RM02
        INCS    TPARA
        MOV     XA,#0C2H                        ;
        MOV     TMOD1,XA
        MOV     XA,#01011100B                   ;409.6us
        MOV     TM1,XA
        SET1    TM1.3
        BR      RRTRN
RM02:   MOV     HL,#REM96B+23
SHFT:   MOV     A,@HL
        RORC    A
        MOV     @HL,A
        DECS    HL
        NOP
        MOV     XA,#5FH
        SKE     XA,HL
        BR      SHFT
        SET1    (REM96B+23).3
        SKT     CY
        CLR1    (REM96B+23).3
        SKT     CY
        MOV     XA,#29H                 ;0.54ms,low level
        MOV     XA,#7DH                 ;1.62ms
;        MOV     XA,#2AH                 ;NEXT CHANGE
;        MOV     XA,#7EH
        MOV     TMOD1,XA
        BR      RRTRN
RMODE2:                                ;CONTINUE TRANSMISSION HEAD CODE DO
RMODE7: SKT     RMTRF                   ;TRANSMITING FLAG TEST
        BR      RTREND
        MOV     XA,#57H
        MOV     TMOD1,XA
        MOV     XA,#01101100B
        MOV     TM1,XA
        SET1    TM1.3
        MOV     A,#1011B
        MOV     CLOM,A
        SKF     CDRPTF
        MOV     A,#0H
        MOV     A,#3H
        MOV     TPARA,A
        BR      RRTRN
;
RTREND: DI      IET1
        CLR1    TRANF
        SKT     (REM96B+18).2
        BR      RTREND1
        CLR1    (REM96B+18).2
        BR      RRTRN
RTREND1:CLR1    LEDOFFF
        BR      RRTRN
RMODE5: MOV     XA,#74H
        MOV     TMOD1,XA
        MOV     XA,#01011100B
        BR      RM5
;
;**********************************************
;               MACHINE ON/OFF SUBROUTINE
;***********************************************
;
;***************ON DISPLAY SUBROUTINE*********************************
;CAN BE USED TO TIME SET ON DISPLAY,ON KEY DO.but in on key do,
;the sleep and JHQ should be done special.
;WHEN ON,IN PREVIOUS PROGRAM,IF NESSCESARY,ONLY ON KEY PRESSED ONOFF FLAG NEED TO SET,OTHER IS NO.
;
ONDISP  CSEG    INBLOCK
        SKT     ONOF
        BR      NOONKEY                 ;NO ON KEY PRESSED
        SKF     TIMONF
        BR      NOONKEY
        CLR1    FLA5SF
        CLR1    FLA5SFF
        CLR1    ONTIMEF
        CLR1    OFTIMEF
        CLR1    FLASHONF
        CLR1    FLASHOFF
        CLR1    FLASECF
        MOV     A,#0H
        MOV     FLA5SC,A
        CLR1    TSETF
        CLR1    TTF
        CLR1    TIMONF
        CLR1    (REM96B+12).2
        CLR1    (REM96B+8).2
        CLR1    (REM96B+8).3
        SEL     MB1
        MOV     A,#0H
        MOV     DFLG5,A
        MOV     DFLG28,A
        MOV     DFLG26,A
        MOV     DFLG27,A
        MOV     DFLG25,A
        MOV     DFLG24,A
        MOV     DFLG6,A
        CLR1    DFLG7.0
        CLR1    DFLG7.1
        SEL     MB0
ONDISP0:CALL    !DISVANE
        SKF     AUTOF
        BR      AUTOM                   ;AUTO MODE
        SKF     COOLF
        BR      COOLM
        SKF     DRYF
        BR      DRYM
        SKF     FANF
        BR      FA

⌨️ 快捷键说明

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