📄 acmftsj_n.asm
字号:
;;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 + -