📄 lock.dt
字号:
CALL DELAY10MS
CALL DELAY10MS
CALL DELAY10MS
BS PORT6,GREEN
BS PORT6,GATE_SW
JMP CLR_ERROR_CODE
ERROR_GUST_TONE:
BC KEY_F,ADMIN_F
JMP ERROR_TONE
ADMIN_WORD_IN:
MOV A,RECORD_EE
JBS STTS,Z
JMP ERROR_GUST_TONE;OPEN_GATE
BS KEY_F,ADMIN_FF
BC PORT6,GREEN
BC PORT6,RED
RET
NEXT_ADDR:
MOV A,@8;6
ADD RECORD_EE,A
MOV A,RECORD_EE
MOV START_ADDR,A
JMP LOOP_GUEST_COM
ERROR_TONE:
;BS PORT6,TONE
BS KEY_F,PAUSE_TONE
BC PORT6,RED
CALL DELAY10MS
CALL DELAY10MS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;BC PORT6,TONE
BC KEY_F,PAUSE_TONE
BS PORT6,RED
CALL DELAY10MS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;BS PORT6,TONE
BC KEY_F,PAUSE_TONE
BC PORT6,RED
CALL DELAY10MS
CALL DELAY10MS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;BC PORT6,TONE;;
BC KEY_F,PAUSE_TONE
BS PORT6,RED
CALL DELAY10MS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;BS PORT6,TONE
BS KEY_F,PAUSE_TONE
BC PORT6,RED
CALL DELAY10MS
CALL DELAY10MS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;BC PORT6,TONE
BC KEY_F,PAUSE_TONE
BS PORT6,RED
MOV A,@BANK0
MOV RECORD_F,A
CLR START_ADDR
CLR_ERROR_CODE:
MOV A,@BANK0
MOV BSR,A
CLR_LOOP:
MOV A,@0XFF
MOV R0,A
INC BSR
MOV A,BSR
XOR A,@0X28
JBS STTS,Z
JMP CLR_LOOP
RET
BACK_DOOR:
MOV A,0X25
MOV 0X27,A
MOV A,0X24
MOV 0X26,A
MOV A,0X23
MOV 0X25,A
MOV A,0X22
MOV 0X24,A
MOV A,0X21
MOV 0X23,A
MOV A,0X20
MOV 0X22,A
CLR 0X20
CLR 0X21
CLR START_ADDR
JMP WRITE_CODE
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SET_PASSWORD:
JBC KEY_F,SET_PASS
JMP SET_EVERY
JBC KEY_F,DEL_PASS
JMP DEL_ONE
MOV A,KEY_STATE
JBC STTS,Z
JMP OUT_SET
MOV A,KEY_STATE
XOR A,@1
JBC STTS,Z
JMP SET_PASS_FLAG
;MOV A,KEY_STATE
;XOR A,@2
;JBC STTS,Z
;JMP DEL_ONE_FLAG
MOV A,KEY_STATE
XOR A,@2;3
JBC STTS,Z
JMP DEL_ALL_FLAG
OUT_SET:
BC KEY_F,ADMIN_F
BC KEY_F,ADMIN_FF
BS PORT6,GREEN
BS PORT6,RED
BC KEY_F,SET_PASS
BC KEY_F,DEL_PASS
BC KEY_F,DEL_ALL
MOV A,@BANK0
MOV RECORD_F,A
RET
SET_PASS_FLAG:
CALL CLR_ERROR_CODE
BS KEY_F,SET_PASS
RET
DEL_ONE_FLAG:
CALL CLR_ERROR_CODE
BS KEY_F,DEL_PASS
RET
DEL_ALL_FLAG:
CALL CLR_ERROR_CODE
BS KEY_F,DEL_ALL
RET
DEL_FUNC00:
MOV A,BANK0
XOR A,@0XFF
JBC STTS,Z
JMP ERROR_TONE
JMP DEL_FUNC0
SET_EVERY:
MOV A,KEY_STATE;###
XOR A,@0X0C
JBC STTS,Z
JMP STORE_CODE
MOV A,KEY_STATE;***
XOR A,@0X0A
JBC STTS,Z
JMP DEL_FUNC00
MOV A,RECORD_F
MOV BSR,A
MOV A,KEY_STATE
MOV R0,A
INC RECORD_F
MOV A,RECORD_F
ADD A,@0XFF-0X28
JBC STTS,C
JMP ERROR_TONE
RET
DEL_ONE:
MOV A,@BANK0+2
MOV BSR,A
CALL CLR_LOOP
JMP STORE_CODE
ERROR_LIST:
BC KEY_F,SET_PASS
BC KEY_F,DEL_PASS
JMP ERROR_TONE
STORE_CODE:
BC KEY_F,DEL_PASS
BC KEY_F,SET_PASS
MOV A,@BANK0
MOV BSR,A
MOV RECORD_F,A
MOV A,R0
XOR A,@0X0B
JBC STTS,Z
JMP NO_DC
MOV A,R0
ADD A,@0XFF-3
JBC STTS,C
JMP ERROR_TONE
CLR TEMP3
COMPU_ADDR:
MOV A,@10
ADD TEMP3,A
DEC R0
JBC STTS,Z
JMP NO_DC
JMP COMPU_ADDR
NO_DC:
INC BSR
MOV A,R0
XOR A,@0X0B
JBC STTS,Z
JMP NO_DCC
MOV A,R0
ADD TEMP3,A
MOV A,TEMP3
ADD A,@0XFF-31
JBC STTS,C
JMP ERROR_LIST
NO_DCC:
CLR START_ADDR
MOV A,TEMP3
JBC STTS,Z
JMP WRITE_CODE
LOOP_ADD:
MOV A,@8;6
ADD START_ADDR,A
DJZ TEMP3
JMP LOOP_ADD
WRITE_CODE:
MOV A,@BANK0
MOV BSR,A
MOV A,@BANK0+2
MOV TEMP3,A
MOV A,@8;6
MOV DATA_LEN,A
; CALL Write_ByteS_Into_EEPROM
MOV A,DATA_LEN
CALL START_CONDITION
MOV A,@0B10100000
OTHER_PAGE_1:
MOV WRITE_RAM,A
CALL WRITE_BYTE;;;;;;;;;;;WRITE DEVICE ADDRESS
MOV A,START_ADDR
MOV WRITE_RAM,A
CALL WRITE_BYTE;;;;;;;;;;;WRITE WORD ADDRESS
WR_LP:
MOV A,TEMP3
MOV BSR,A
MOV A,R0
INC TEMP3
MOV WRITE_RAM,A
CALL WRITE_BYTE;;;;;;;;;;;WRITE WORD DATA
DJZ DATA_LEN
JMP WR_LP
CALL STOP_CONDITION;###########################################
BS PORT6,RED
BC PORT6,GREEN
CALL DELAY10MS
CALL DELAY10MS
CALL DELAY10MS
JMP CLR_ERROR_CODE
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@###########EEPROM###########
;###########################################
;READ_EEPROM:
;AT24C16_TO_EMC862:
; MOV A,@BANK0
; MOV BSR,A
; MOV A,@BANK0+0X10
; MOV TEMP3,A
;;; CLR START_ADDR;eeprom start address
; CLR TEMP2
;
; MOV A,@6
; MOV DATA_LEN,A
;
; CALL Read_Bytes_From_EEPROM
;
; RET
;###########################################
;EMC862_TO_AT24C16:
; MOV A,@BANK0
; MOV BSR,A
; MOV A,@BANK0+2
; MOV TEMP3,A
; CLR START_ADDR
; MOV A,@6
; MOV DATA_LEN,A
; CALL Write_ByteS_Into_EEPROM
; RET
;###########################################
WRITE_BIT:
IOR IOC5
AND A,@0b00001110
IOW IOC5
JBS WRITE_RAM,DATA_BIT
JMP ZERO_BIT
BS PORT5,SDA
JMP OUT_BIT
ZERO_BIT:
BC PORT5,SDA
OUT_BIT:
NOP
NOP
NOP
BS PORT5,SCL
;CALL DELAY_10US
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BC PORT5,SCL
RET
READ_BIT:
IOR IOC5
MOV A,@0b00010000
IOW IOC5
BS PORT5,SDA
BC READ_RAM,DATA_BIT
BS PORT5,SCL
;CALL DELAY_10US
NOP
NOP
NOP
NOP
NOP
NOP
NOP
JBC PORT5,SDA
BS READ_RAM,DATA_BIT
BC PORT5,SCL
RET
WRITE_BYTE:
MOV A,@0X08
MOV TEMP1,A
TX_LP:
CALL WRITE_BIT
RLC WRITE_RAM
DJZ TEMP1
JMP TX_LP
CALL READ_BIT
RET
READ_BYTE:
MOV A,@0X08
MOV TEMP1,A
RX_LP:
CALL READ_BIT
BC STTS,C
JBC READ_RAM,DATA_BIT
BS STTS,C
RLC TEMP2 ;READ_RAM
DJZ TEMP1
JMP RX_LP
MOV A,TEMP2
MOV READ_RAM,A
RET
Read_Bytes_From_EEPROM:;###########################################
CALL START_CONDITION;START WRITE(1)
MOV A,@0B10100000
MOV WRITE_RAM,A
CALL WRITE_BYTE;;;;;;;;;;;;WRITE DEVICE ADDRESS(2)
MOV A,START_ADDR
MOV WRITE_RAM,A
CALL WRITE_BYTE;;;;;;;;;;;;WRITE START ADDRESS(3)
CALL START_CONDITION;START READ(4)
MOV A,@0B10100001
MOV WRITE_RAM,A
CALL WRITE_BYTE;;;;;;;;;;;;;WRITE DEVICE ADDRESS(5)
RD_LP:
CALL READ_BYTE;;;;;;;;;;;;;CONTINUE READ DATA(6.......n)
MOV A,TEMP3
MOV BSR,A
MOV A,READ_RAM
MOV R0,A
INC TEMP3
DJZ DATA_LEN
JMP LOWACK
BS WRITE_RAM,DATA_BIT
CALL WRITE_BIT
CALL STOP_CONDITION
JMP COMPLETE_READ
; RET
LOWACK:
BC WRITE_RAM,DATA_BIT
CALL WRITE_BIT
JMP RD_LP
;WRITE_BYTES_INTO_EEPROM:;###########################################
;========================================
START_CONDITION:
IOR IOC5
AND A,@0b00001110
IOW IOC5
BS PORT5,SCL
BS PORT5,SDA
;CALL DELAY_10US
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BC PORT5,SDA
;CALL DELAY_10US
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BC PORT5,SCL
NOP
NOP
RET
STOP_CONDITION:
IOR IOC5
AND A,@0b00001110
IOW IOC5
BC PORT5,SDA
BS PORT5,SCL
;CALL DELAY_10US
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BS PORT5,SDA
NOP
NOP
NOP
RET
DELAY_10US:
NOP
NOP
NOP
NOP
NOP
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -