Mitsubishi Motors DS5000TK User Manual
Page 157
![background image](/manuals/123320/157/background.png)
USER’S GUIDE
050396 156/173
157
OPEN:
LCALL
CLOSE
;Make sure it is closed.
MOV
B,#4
;Set pattern period count.
MOV
A,#0C5H
;Load first byte of pattern.
OPENA:
LCALL
WBYTE
;Send out the byte.
XRL
A,#0FFH
;Generate next pattern byte.
LCALL
WBYTE
;Send out the byte.
SWAP
A
;Generate next pattern byte.
DJNZ
B,OPENA
;Repeat until 8 bytes sent.
RET
;Return.
;
;********************************
;*** SUBROUTINE TO CLOSE THE RTC
;********************************
;
; This subroutine insures that the registers of the timekeeper
; are closed by executing 9 successive reads of the date and time
; registers. The subroutine returns with both the accumulator
; and the B register modified.
;
CLOSE:
MOV
B,#9
;Set up to read 9 bytes.
CLOSEA:
LCALL
RBYTE
;Read a byte.
DJNZ
B,CLOSEA
;Loop for 9 byte reads.
RET
;Return.
;
;***********************************
;*** SUBROUTINE TO READ A DATA BYTE
;***********************************
;
; This subroutine performs a “context switch: to the CE2 data
; space and then reads one byte from the timekeeping device.
; Then it switches back to the CE1 data space and returns
; the byte read in the accumulator, with all other registers
; unchanged.
;
RBYTE:
PUSH
DPL
;Save the data
PUSH
DPH
; pointer on stack.
PUSH
MCON
;Save MCON register.
ORL
MCON,#4
;Switch to CE2.
PUSH
B
;Save the B register.
MOV
DPL,#4
;Set up for data input.
MOV
DPH,#0
;Set high address byte.
MOV
B,#8
;Set the bit count.
LI:
PUSH
ACC
;Save the accumulator.
MOVX
A,@DPTR
;Input the data bit from the RTC into
; ACC.7.
RLC
A
;Move it to carry.
POP
ACC
;Get the accumulator.
RRC
A
;Save the data bit.
DJNZ
B,LI
;Loop for a whole byte.
POP
B
;Restore the B register.
POP
MCON
;Restore the MCON register.