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

📄 acmftsj_n.asm

📁 一个完整且典型的遥控器程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;;begining date:99.6.21
;used BY acmxjl ROMOTE controller.
;USE CHIP:3106(3104 CHANGE TO 3106,99-7-7)
;changed acorrding to lcd and sent code changed by acm co.ltd.99-8-28
;
        VENT0   MBE=1,RBE=0,START       ;RESET VECTOR AREA
        VENT1   MBE=0,RBE=0,INTBT       ;BASIC TIMER VECTOR AREA,watch dog
	VENT2   MBE=0,RBE=0,INT0        ;INT0 VECTOR AREA
	VENT3   MBE=0,RBE=0,INT1        ;INT1 VECTOR AREA	/NO
	VENT4   MBE=0,RBE=0,INSI        ;IRQCSI VECTOR AREA	/NO
        VENT5   MBE=0,RBE=0,INTT0       ;INTT0,KEY
        VENT6   MBE=0,RBE=0,INTT1       ;INTT1,TRAN
;
;
;
        ORG     0080H
INT0:   NOP
INT1:	NOP
;
INTBT:
        NOP
INSI:   NOP
	RETI
;
START:  SEL     MB15
        MOV     A,#08H
        MOV     SBS,A
        NOP
;******************INITIAL STACK POINT***********************
        MOV     XA,#00H
	MOV     SP,XA
;
        MOV     A,#1011B
        MOV     BTM,A
WWAIT:  SKTCLR  IRQBT
        BR      WWAIT
        MOV     XA,#00000110B
        MOV     WM,XA
POWWAIT:
        SKTCLR  IRQW
        BR      POWWAIT
        MOV     XA,#00000101B
        MOV     WM,XA
        MOV     A,#0FH
        MOV     BTM,A
        MOV     A,#03H
        MOV     PCC,A
;
;***********CLEAR RAM*************
        SEL     MB0
        MOV     HL,#08H        ;(008-0FFH)
        MOV     A,#00H
CRAM0:  MOV     @HL,A
        INCS    HL
        BR      CRAM0
        SEL     MB1                ;(100-1FFH)
CRAM1:  MOV     @HL,A
        INCS    HL
        BR      CRAM1
;
;
;        SEL     MB15
;        MOV     A,#1111B                 ;WATCH DOG
;        MOV     BTM,A
;
;        MOV     A,#03H
;        MOV     PCC,A
;**************INITIAL I/O PORT*****************
        SEL     MB15
        MOV     XA,#01H       ;PORT6 inPORT
        MOV     PMGA,XA       ;
        MOV     A,#00H        ;INITIAL THE KEYBOARD
        OUT     PORT5,A
        MOV     XA,#24H         ;PORT2 outPORT,PORT5 OUTPUT
        MOV     PMGB,XA
        MOV     XA,#43H         ;SET PORT6,(PORT0,PORT1 PULL UP RESISTOR;NOW,NO,LOWPOW?)
        MOV     POGA,XA
        MOV     A,#0H
        MOV     PORT2,A
        CLR1    PORT3.0
;
;**************DISPLAY ON******************?
        MOV     xa,#00111000B
        MOV     lcdm,xa            ;28 SEGMENT,4 DIVISION,1/3 BIAS
        MOV     A,#0011B                      ;DISPLAY ON
        MOV     LCDC,A
        MOV     A,#0010B
        MOV     LPS,A
        NOP
;
        MOV     A,#1011B
        MOV     BTM,A
        SET1    WDTM
;******************INITIAL RAM DATA*******************
        CALL    !RESD               ;?WAIT for set reset ram data
        MOV     XA,#0CH
        MOV     HOUR,XA
        CLR1    MBE
        SKT     PORT0.0
        BR      !NOJHQDJR
        SKF     PORT0.1
        BR      !NOJHQD
        SET1    (REM96B+13).0
        SET1    (REM96B+13).2
        BR      !NOJHQD
NOJHQDJR:
        SET1    JP1F
NOJHQD:
        NOP
        SET1    MBE
        CALL    !DOG
        NOP
        CALL    !RDISP
        NOP
        SEL     MB0
        SKT     JP1F
        BR      JPGO
        SEL     MB1
        CLR1    DFLG17.0
        SEL     MB0
JPGO:   NOP

;*******************INITIAL MODE REGEISTER***********
;
        SEL     MB15
        SET1    BTM.3
        MOV     xa,#7Eh                ;INTERVAL TIME 3.25MS.
        MOV     TMOD0,xa
        MOV     xa,#01101100b
        MOV     tm0,xa
;
;*************ENABLE INT***************
        MOV     A,#06H                    ;SET INTERRUPT SELECT REGISTER,VENT6(INTT1,INTT2)HIGH PRIORITY
        MOV     IPS,A
        EI      IEBT
        EI      IEW
        EI      IET0
        EI
;
;**************MAIN PROGRAM**************
MAIN:   
;        MOV     XA,#00000101B                 ;WATCH TIME SETING,0.5s
;        MOV     WM,XA
        NOP
MAIN0:
        CALL    !DOG
        SKTCLR  IRQW
        BR      MAIN0
        CALL    !RES5SC
        BR      MAIN0
MAIN1:
        CALL    !DOG
        SKTCLR  IRQW            ;CHECK 0.5S
        BR      MAIN2
        CALL    !CLOCK
        CALL    !DOG
        CALL    !TCHECK
        CALL    !DOG
        CALL    !DISCLO
        CALL    !DOG
        SKF     LOW3SF
        CALL    !LOW3S
        SKF     LOCK3SF
        CALL    !LOCK3S
        CALL    !DOG
        SKF     DISP1SF
        CALL    !DISP1SC                        ;TRAN DISPLAY
        CALL    !DOG
        SKF     FLA5SF                      ;CHANGE TIME FLASH DISPLAY.
        CALL    !FLA5S
        CALL    !DOG
        SKF     KC1SF
        CALL    !KCCON1S                   ;CONTINUE PRESS 1SEC COUNT
        CALL    !DOG
        SKF     CLKCCF
        CALL    !CLKC
MAIN2:  CALL    !DOG
        CALL    !LOWPOW
        CALL    !DOG
        SKF     LOWPOWF
        BR      MAIN1
        CALL    !KEYS
        CALL    !DOG
        SKT     KSIXF
        BR      MAIN1
        CLR1    KSIXF
        SKF     TRANF
        BR      MAIN1
        CALL    !DOKEY
        CALL    !DOG
        SKT     KEYF
        BR      MAIN1
        SKF     DELAYF                  ;CONTINUE KEY,SO SENT DELAY
        BR      MAIN1
MAIN4:  CALL    !REMOCON
        CALL    !DOG
        BR      MAIN1
;
;******************************************************************
;                  subroutine                                     *
;******************************************************************
DOG     CSEG    INBLOCK
        SEL     MB15
        SET1    BTM.3
        SEL     MB0
        RET
;
;********************CLOCK SUBROUTINE********************************
CLOCK   CSEG     INBLOCK
        SKF     SECF
        BR      CLOCK1
        SET1    SECF
        RET
CLOCK1: CLR1    SECF
        SKF     DISCLOF
        RET
        MOV     XA,SEC
        MOV     HL,XA
        INCS    HL
        NOP
        MOV     XA,HL
        MOV     SEC,XA
        MOV     BC,#3CH
        SKE     XA,BC
        RET
        MOV     XA,#0H
        MOV     SEC,XA
        MOV     XA,MIN
        MOV     HL,XA
        INCS    HL
        NOP
        MOV     XA,HL
        MOV     MIN,XA
        MOV     BC,#3CH
        SKE     XA,BC
        RET
        MOV     XA,#0H
        MOV     MIN,XA
        CALL    !HCLOCK
        RET
;********HOUR INC SUBROUTINE***********
HCLOCK  CSEG    INBLOCK
        MOV     XA,HOUR
        MOV     HL,XA
        INCS    HL
        NOP
        MOV     XA,HL
        MOV     HOUR,XA
        MOV     BC,#18H
        SKE     XA,BC
        RET
;        BR      CLOCK2
;        CLR1    PMF
;        SET1    AMF
        MOV     XA,#00H
        MOV     HOUR,XA
        RET
;CLOCK2: MOV     BC,#0CH
;        SUBS    XA,BC
;        BR      CLOCK3
;        RET
;CLOCK3: CLR1    AMF
;        SET1    PMF
;        RET
;
;**********************CLOCK DISPLAY*****************************
DISCLO  CSEG    INBLOCK
        SKF     TSETF
        RET
        SKF     FLA5SF
        RET
;        SKF     CLOKF
;        BR      DISCLO9
;;;        SKT     FCLOKF
;;;        BR      DISCLO9
;        INCS    SEC5S
;        NOP
;        MOV     A,SEC5S
;        SKE     A,#09H
;;;        BR      DISCLO9
;        MOV     A,#0H
;        MOV     SEC5S,A
;        CLR1    DISCLOF
;        SET1    CLOKF
;        SEL     MB1
;        SET1    DFLG7.2
;        SET1    DFLG12.3
;        SEL     MB0
DISCLO9:SKF     SECF
        BR      DISCLO0
        SKF     CLOKF
        BR      DISCLO1
        SEL     MB1
        SET1    DFLG12.3
        SET1    DFLG7.2
DISCLO1:SEL     MB1
        SET1    DFLG7.3
        SET1    DFLG7.2
        SEL     MB0
DISCLO2:
        SKF     FLA5SF
        RET
        CALL    !DISCL
        RET
DISCLO0:SKF     CLOKF
        BR      DISCLO01
        SEL     MB1
        CLR1    DFLG12.3
        CLR1    DFLG7.2
DISCLO01:
        SEL     MB1
        CLR1    DFLG7.3
        SEL     MB0
        SKF     SECF
        BR      ACM1
        SEL     MB1
        SET1    DFLG7.2
        SEL     MB0
ACM1:   SKT     CLOKF
        BR      DISCLO2
;        SKF     TSETF
;        BR      DISCLO2
        SKF     FLA5SF
        BR      DISCLO2
        SEL     MB1
        SET1    DFLG12.3
        SEL     MB0
        BR      DISCLO2
;
;
;**************************DIS CLOCK 8****************
DISCL   CSEG    INBLOCK
        MOV     XA,MIN
        MOV     BCD,XA
        CALL    !CHTOBCD
        MOV     XA,BCD
        MOV     DE,XA
        CALL    !LCDSEG
        SEL     MB1
        MOV     DFLG8,A
        XCH     A,X
        MOV     DFLG9,A
        SEL     MB0
        MOV     A,D
        CALL    !LCDSEG
;        SKF     DFLG10F
;        AND     A,#0111B                ;DISPLAY X19,THEN SET1 A.3
        SEL     MB1
        MOV     DFLG10,A
        XCH     A,X
        MOV     DFLG11,A
        SEL     MB0
;;;        SKT     AMF
;;;        BR      DISCL0
;;;        SEL     MB1
;;;        SET1    DFLG14.1
;;;        CLR1    DFLG14.3
;;;        SEL     MB0
        MOV     XA,HOUR
;        MOV     BC,#00H
;        SKE     XA,BC
;        BR      DISCL1
;        MOV     XA,#0CH
DISCL1: MOV     BCD,XA
        CALL    !CHTOBCD
        MOV     XA,BCD
        MOV     DE,XA
        CALL    !LCDSEG
        SKT     CLOKF
        BR      DISCL_1
DISCL_11:
        SKT     TSETF
        OR      A,#1000B                ;SET1   COL1
;        SKT     DISCLF
;        AND     A,#0111B
DISCL_10:
        SEL     MB1
        MOV     DFLG12,A
        XCH     A,X
        MOV     DFLG13,A
        SKE     D,#0H
        BR      DISCL2
DISCL4: SEL     MB1
        CLR1    DFLG14.2
        CLR1    DFLG14.1
        CLR1    DFLG14.3
        SEL     MB0
        RET
DISCL_1:SKF     SECF
        BR      DISCL_10
        BR      DISCL_11
DISCL2: SKE     D,#01H
        BR      DISCL2_1
        SEL     MB1
        SET1    DFLG14.2
        SET1    DFLG14.1
        CLR1    DFLG14.3
        SEL     MB0
        RET
DISCL2_1:
        SEL     MB1
        SET1    DFLG14.1
        CLR1    DFLG14.2
        SET1    DFLG14.3
        SEL     MB0
        RET

DISCL0:
        SEL     MB1
        SET1    DFLG14.3
        CLR1    DFLG14.1
        SEL     MB0
        MOV     XA,HOUR
        MOV     BC,#0CH
        SUBS    XA,BC
        NOP
        MOV     BC,#00H
        SKE     XA,BC
        BR      DISCL3
        MOV     XA,#0CH
DISCL3: MOV     BCD,XA
        CALL    !CHTOBCD
        MOV     XA,BCD
        MOV     DE,XA
        CALL    !LCDSEG
        SKT     CLOKF
        BR      DISCL_30
DISCL_32:
        SKT     TSETF
        OR      A,#1000B
DISCL_31:
        SEL     MB1
        MOV     DFLG12,A
        XCH     A,X
        MOV     DFLG13,A
        SKE     D,#0H
        BR      DISCL2
        BR      DISCL4
DISCL_30:
        SKF     SECF
        BR      DISCL_31
        BR      DISCL_32
;
;
;======================================================================
;                 TCHECK SUROUTINE
;======================================================================
TCHECK  CSEG    INBLOCK
        SKT     TSETF
        RET
TCHECK1:
        MOV     XA,WSEC
        MOV     HL,XA
        INCS    HL
        BR      TCHECK31
        MOV     XA,#88H
        MOV     WSEC,XA
        MOV     XA,WMIN
        DECS    XA
        BR      TCHECK2
        MOV     XA,#0FFH
        MOV     WMIN,XA
        MOV     XA,WMIN+2
        DECS    A
        NOP
        MOV     WMIN+2,A
        SKF     TRANF
        RET
        SKF     TIMONF
        BR      TCHECK12
        MOV     REM96B+16,A
        RET
TCHECK12:
        MOV     REM96B+17,A
        RET
TCHECK31:
        MOV     XA,HL
        MOV     WSEC,XA
TCHECK3:SKF     TRANF
        RET
        SKF     TTF
        CALL    !REFRESH
        MOV     XA,WMIN
        SKF     TIMONF
        BR      TCHECK30
        MOV     REM96B+6,XA
        MOV     XA,WMIN+2
        MOV     REM96B+16,A
        RET
TCHECK30:
        MOV     REM96B+14,XA
        MOV     XA,WMIN+2
        MOV     REM96B+17,A
        RET
TCHECK2:
        MOV     WMIN,XA
        MOV     BC,#00H
        SKE     XA,BC
        BR      TCHECK3
        MOV     XA,WMIN+2
        SKE     A,#00H
        BR      TCHECK3
TCHECK20:
        NOP
        NOP
        NOP
        SKF     TRANF
        BR      TCHECK20
        SKF     TIMONF
        BR      TCHECK21
        MOV     XA,#00H
        MOV     REM96B+6,XA
        MOV     REM96B+16,A
        CALL    !OFFDISP
        RET
TCHECK21:
        MOV     XA,#00H
        MOV     REM96B+14,XA
        MOV     REM96B+17,A
        CALL    !ONDISP
        RET
;
;========================================================
;                       KEY SUBROUTINE
;========================================================
;
KEYS    CSEG    INBLOCK
        clr1    mbe
        CLR1    CHNGFG
        MOV     A,#0111B
        out     PORT5,A
        MOV     HL,#WORK+3
SCAN:   MOV     E,#05H
SCAN1:  DECS    E
        BR      SCAN1
        IN      A,PORT6
        NOT     A
        XCH     A,@HL
        SKE     A,@HL
        SET1    CHNGFG
        DECS    L
        NOP
        SET1    CY
        MOV     A,PORT5
        RORC    A
        OUT     PORT5,A
        NOT1    CY
        SKT     CY

⌨️ 快捷键说明

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