?? icic2.asm
字號:
NAME DEMO51
DEMO_CODE0 SEGMENT CODE PAGE
DEMO_CODE1 SEGMENT CODE INBLOCK
DEMO_DATA SEGMENT DATA
DEMO_IDATA SEGMENT IDATA
DEMO_XDATA SEGMENT XDATA INPAGE
DEMO_BIT SEGMENT BIT
ACCUM EQU A
N27 EQU 27
COUNT SET 0
COUNT SET 1
RSEG DEMO_BIT
ICRST BIT P1.3
ICSCL BIT P1.1
ICFUS BIT P1.4
ICSDA BIT P1.2
ICPGM BIT P1.5
ICPWR BIT P1.6
FLAGA: DBIT 05H
RSEG DEMO_DATA
CONIN DATA 20H
DS 1
RSEG DEMO_XDATA
TIME XDATA 0BE00H
DS 1
RSEG DEMO_IDATA
BUFFER IDATA 0A0H
BUFFERA: DS 05H
RESTART CODE 0000H
RSEG DEMO_CODE0
;---------------------------------------
TYPE EQU 52H ;card type
SFG EQU 53H ;security code flag
DFG EQU 54H ;card damage flag
CBUF EQU 39H ;commond buffer 39h-3fh bytes
MBUF EQU 40h ;data buffer 40h-7fh 64 bytes
EK1 EQU 66H
DAM2 EQU 67H
EZF2 EQU 68H
EK2 EQU 69H
;------------------------------------
;-------------------------------
;LCD
CADD Equ 0A001H
DADD Equ 0A000H
CC_DB Equ 20H ;240/8
C_MODE Equ 00H ;(C_MODE)byte---DISPLAY MODE:
; (C_MODE)=0---"POSITIVE" DISPLAY
; (C_MODE)=1---"NEGATIVE" DISPLAY
DPHH Equ 50H ; Display First Address
DPLL Equ 51H
;---------------------------
;USE 42H 43H 44H CHINGE 16 TO BCD
JQL_RAM EQU 30H ;30H TO 34H
JQJE_RAM EQU 35H ;35H TO 39H
BUS_RAM EQU 3AH ;NUMBER OF BUS
;3AH TO 40H
SYJE_RAM EQU 45H ;45H TO 49H
;--------------------------------------------
Year Equ 52H ; DATA OF YEAR
Month Equ 53H ; DATA OF MONTH
Date Equ 54H ; DATA OF DATE
Hours Equ 55H ; DATA OF HOURS
Minutes Equ 56H ; DATA OF MINUTES
seconds Equ 57h ; DATA OF SECONDS
DATE_RAM EQU 52H
TIME_RAM EQU 55H
;----------------------------
;IN DS12887
MACH_RAM EQU 66H ;NUMBER OF MACHINE
;66H TO 69H
STAI_RAM EQU 6AH ;NUMBER OF STATION
;6AH TO 6CH
MONENY_RAM EQU 6DH ;BASIS OF MONENY
;6DH TO 6FH
MACHD_RAM EQU 16H ;NUMBER OF MACHINE IN DS12887
STAID_RAM EQU 1AH ;NUMBER OF STATION IN DS12887
MONENYD_RAM EQU 1DH ;BASIS OF MONENY IN DS12887
;-----------------------------
FLASHRAMH EQU 7CH
FLASHRAML EQU 7DH
;----------------------------------------------------
DOT_AD EQU 7EH ;DOT OF MOENY AND VOLUME
FLAG1 EQU 7FH ;flag1.0--insert ic card (1)
;flag1.1--is delivering gas
;flag1.2--state in delivering data to printer and lcd
;---------------------------------------------------------------------
ORG 0000H
JMP START
ORG 0030H
START:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV SP,#07H
setb ICFUS
LCALL CS_8255
LCALL INI8255
; SETB ICPWR
;close ic power
; LCALL CHECK_IC
; LCALL PWRON
; sjmp icpo
LCALL SCHK_SC0
;; LCALL SWR_88S
LCALL SRD_88S
ICEND: SJMP ICEND
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;R4R5 ;DATA ADDRESS
;R6R7 DATA LENTH
;MUBF ;DATA BUFFER
SWR_88S: MOV R5,#20H
MOV R7,#10H
LCALL RESET2
LCALL INCAD
SWR_88S1: MOV A,#22H
LCALL BWR_88S
DJNZ R7,SWR_88S1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SRD_88S:
mov r7,#20h
mov r5,#20h
LCALL RESET2
LCALL INCAD
MOV R0,#30h ;MBUF
SRD_88S1: LCALL BRD_88S
MOV @R0,A
INC R0
CLR C
DJNZ R7,SRD_88S1
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;R4R5 ;data address
;R6R7 ;data length
;MBUF ;databuf
;-----------------------------------
SCHK_SC0:
mov r4,#00h
MOV R5,#0AH
mov r6,#00h
MOV R7,#02H
MOV R0,#MBUF
MOV A,#0F0H
MOV @R0,A
INC R0
MOV A,#0F0H
MOV @R0,A
LCALL CHKSCER
CLR A
SCHK_SC04: SETB ICSCL
SETB ICSDA
CLR ICSCL
INC A
JNB ICSDA,SCHK_SC05
LJMP SCHK_SC06
SCHK_SC05: CJNE A,#04H,SCHK_SC04
LJMP SCHK_SC08
SCHK_SC06: MOV DFG,#00H ;CARD OK
LCALL PROG0 ;WRITE 0
JB ICSDA,SCHK_SC07
LCALL PROG1 ;WRITE 1
JNB ICSDA,SCHK_SC07
MOV SFG,#00H
LJMP SCHK_SC09
SCHK_SC07: MOV SFG,#0FFH
LJMP SCHK_SC09
SCHK_SC08: MOV DFG,#0FFH
SCHK_SC09: RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
CHKSCER:
LCALL RESET2
CLR C
DEC R5
LCALL INCAD
MOV R0,#07H
CHKSC1: SETB ICSCL
NOP
CLR ICSCL
NOP
DJNZ R0,CHKSC1
MOV R0,#MBUF
CHKSCER2: MOV A,@R0
INC R0
MOV R1,#08H
CHKSCER3: SETB ICSCL
RLC A
MOV ICSDA,C
CLR ICSCL
NOP
DJNZ R1,CHKSCER3
DJNZ R7,CHKSCER2
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
PROG0: NOP
SETB ICPGM
NOP
CLR ICSDA
NOP
NOP
SETB ICSCL
NOP
CLR ICPGM
LCALL DELAY_5ms
SETB ICSDA
CLR ICSCL
NOP
RET
;---------------------------------
PROG1: NOP
SETB ICPGM
NOP
SETB ICSDA
NOP
NOP
SETB ICSCL
NOP
CLR ICPGM
LCALL DELAY_5ms
SETB ICSDA
CLR ICSCL
NOP
RET
;---------------------------------
SCHK_ER1: LCALL CHKSCER
SETB ICSCL
NOP
CLR ICSCL
NOP
LCALL PROG1
LCALL RESET2
MOV R4,#00H
MOV R5,#16H
LCALL INCAD
MOV R6,#02H
SCHK_ER14: MOV R7,#00H
SCHK_ER15: SETB ICSDA
JNB ICSDA,SCHK_ER16
SETB ICSCL
NOP
CLR ICSCL
NOP
DJNZ R7,SCHK_ER15
DJNZ R6,SCHK_ER14
MOV EK1,#00H
LJMP SCHK_ER17
SCHK_ER16: MOV EK1,#0FFH
SCHK_ER17: RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$
SCHK_ER2: LCALL CHKSCER
CLR A
SCHK_ER24: SETB ICSCL
SETB ICSDA
CLR ICSCL
INC A
JNB ICSDA,SCHK_ER25
LJMP SCHK_ER26
SCHK_ER25: CJNE A,#80H,SCHK_ER24
LJMP SCHK_ER2B
SCHK_ER26: MOV DAM2,#00H
LCALL PROG0
JB ICSDA, SCHK_ER27
LCALL PROG1
JB ICSDA,SCHK_ER27
LJMP SCHK_ER28
SCHK_ER27: MOV EZF2,#0FFH
LJMP SCHK_ER2C
SCHK_ER28: LCALL RESET2
MOV R4,#00H
MOV R5,#5CH
LCALL INCAD
MOV R6,#02H
SCHK_ER29: MOV R7,#00H
SCHK_ER2A: SETB ICSDA
JNB ICSDA,SCHK_ER27
SETB ICSCL
NOP
CLR ICSCL
NOP
DJNZ R7,SCHK_ER2A
DJNZ R6,SCHK_ER29
MOV EZF2,#00H
LJMP SCHK_ER2C
SCHK_ER2B: MOV DAM2,#0FFH
SCHK_ER2C: RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;------------------------------------------
;RESET
RESET2: CLR ICPGM
SETB ICSDA
SETB ICRST
CLR ICSCL
CLR ICRST
NOP
RET
;--------------------------------------------
;-------------------------------------
;READ ONE BYTE TO ACC
BRD_88S: PUSH 05H
MOV R5,#08H
BRD_88S1: SETB ICSDA
MOV C,ICSDA
RLC A
SETB ICSCL
NOP
CLR ICSCL
NOP
DJNZ R5,BRD_88S1
POP 05H
RET
;---------------------------------
;WRITE ACC TO IC
BWR_88S: PUSH 05H
MOV R5,#08H
BWR_88S1: RLC A
MOV ICSDA,C
NOP
NOP
JB ICSDA,BWR_88S2
LCALL PROG0
BWR_88S2: SETB ICSCL
NOP
CLR ICSCL
NOP
DJNZ R5,BWR_88S1
POP 05H
RET
;----------------------------------------
;;;;;;;;;;;--------------------------
INCAD:
CJNE R5,#00H,INCAD1
LJMP INCADE
INCAD1: MOV R0,#08H
INCAD2: SETB ICSCL
NOP
CLR ICSCL
NOP
DJNZ R0,INCAD2
CLR C
MOV A,R5
SUBB A,#01H
MOV R5,A
CJNE R5,#00H,INCAD1
INCADE: RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;R4R5 DATA ADDRESS
;R6R7 DATA LENGTH
;MBUF SC DATA BUFFER
;-----------------------
CHECK_IC:
LCALL CS_8255 ;test over deliver gas
MOV DPTR,#01H
MOVX A,@DPTR
ANL A,#01000000B ;PB6
JZ end_ICCHk
lcall delay_10
MOV DPTR,#01H
MOVX A,@DPTR
ANL A,#01000000B ;PB6
jz end_ICCHK
lcall delay_10
MOV DPTR,#01H
MOVX A,@DPTR
ANL A,#01000000B ;PB6
jz end_ICCHK
ORL FLAG1,#00000001B
END_ICCHK: setb p1.4
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
PWRON: CLR ICRST
CLR ICSCL
CLR ICPGM
LCALL DELAY_10
CLR ICSDA
CLR ICPWR
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
PWROFF: CLR ICRST
CLR ICSCL
CLR ICPGM
CLR ICSCL
LCALL DELAY_10
SETB ICPWR
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
CS_8255:
CLR P3.2
SETB P3.3
CLR P1.3
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
INI8255:
MOV A,#10000010B
MOV DPTR,#03H
MOVX @DPTR,A
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
DELAY_10: MOV R4,#0F0H ;500us
DELAY1: DJNZ R4,DELAY1
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY_5MS:
MOV R6,#0AH
MOV R4,#0F0H
DELAY_MS: DJNZ R4,DELAY_MS
MOV R4,#0F0H
DJNZ R6,DELAY_MS
RET
RSEG DEMO_CODE1
RET
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -