📄 serkey.asm
字号:
CALL Reset_esclk ;esclk=0
;
Read_EE_6
CALL Set_esclk ;esclk=1, produce high edge, read a bit
LDA PORTB,00H
BA3 $+2
JMP Read_EE_60
Read_EE_61
ORIM ReadEEData1,0100B
JMP Read_EE_63
Read_EE_60
ANDIM ReadEEData1,1011B
Read_EE_63
CALL Reset_esclk ;esclk=0
;
Read_EE_5
CALL Set_esclk ;esclk=1, produce high edge, read a bit
LDA PORTB,00H
BA3 $+2
JMP Read_EE_50
Read_EE_51
ORIM ReadEEData1,0010B
JMP Read_EE_53
Read_EE_50
ANDIM ReadEEData1,1101B
Read_EE_53
CALL Reset_esclk ;esclk=0
;
Read_EE_4
CALL Set_esclk ;esclk=1, produce high edge, read a bit
LDA PORTB,00H
BA3 $+2
JMP Read_EE_40
Read_EE_41
ORIM ReadEEData1,0001B
JMP Read_EE_43
Read_EE_40
ANDIM ReadEEData1,1110B
Read_EE_43
CALL Reset_esclk ;esclk=0
;
Read_EE_3
CALL Set_esclk ;esclk=1, produce high edge, read a bit
LDA PORTB,00H
BA3 $+2
JMP Read_EE_30
Read_EE_31
ORIM ReadEEData0,1000B
JMP Read_EE_33
Read_EE_30
ANDIM ReadEEData0,0111B
Read_EE_33
CALL Reset_esclk ;esclk=0
;
Read_EE_2
CALL Set_esclk ;esclk=1, produce high edge, read a bit
LDA PORTB,00H
BA3 $+2
JMP Read_EE_20
Read_EE_21
ORIM ReadEEData0,0100B
JMP Read_EE_23
Read_EE_20
ANDIM ReadEEData0,1011B
Read_EE_23
CALL Reset_esclk ;esclk=0
;
Read_EE_1
CALL Set_esclk ;esclk=1, produce high edge, read a bit
LDA PORTB,00H
BA3 $+2
JMP Read_EE_10
Read_EE_11
ORIM ReadEEData0,0010B
JMP Read_EE_13
Read_EE_10
ANDIM ReadEEData0,1101B
Read_EE_13
CALL Reset_esclk ;esclk=0
;
Read_EE_0
CALL Set_esclk ;esclk=1, produce high edge, read a bit
LDA PORTB,00H
BA3 $+2
JMP Read_EE_00
Read_EE_01
ORIM ReadEEData0,0001B
JMP Read_EE_03
Read_EE_00
ANDIM ReadEEData0,1110B
Read_EE_03
CALL Reset_esclk ;esclk=0
;
RTNI
;===============================================
;About Back Light Programme
;
Enable_BackLight
LDI TimeingCount,0AH
LDI BackLightCount,05H
ORIM PORTD,0100B
NOP
RTNI
;===============================================
;About Alarm Switch Detect Programme
;
Alarm_Detect
NOP
NOP
LDA PORTC,00H
BA0 No_Alarm
CALL Delay_10us
CALL Delay_10us
NOP
LDA PORTC,00H
BA0 No_Alarm
ORIM PORTD,1000B ;Buz on
ORIM StatusFlag,1000B ;AlarmFlag on
RTNI
No_Alarm
ANDIM PORTD,0111B ;Buz off
ANDIM StatusFlag,0111B ;AlarmFlag off
RTNI
;===============================================
Opration_Right_Indication
NOP
NOP
NOP
RTNI
;===============================================
Opration_Fail_Indication
NOP
NOP
NOP
RTNI
;===============================================
;About Reset Programme
;===============================================
Reset_Memory
LDI TMP,0H
LDI DPH,00H
LDI DPM,02H
LDI DPL,0FH
CALL Clear_Memory_Loop
LDI DPM,03H
LDI DPL,0FH
CALL Clear_Memory_Loop
LDI DPM,04H
LDI DPL,0FH
CALL Clear_Memory_Loop
LDI DPM,05H
LDI DPL,0FH
CALL Clear_Memory_Loop
LDI DPM,06H
LDI DPL,0FH
CALL Clear_Memory_Loop
LDI DPM,07H
LDI DPL,0FH
CALL Clear_Memory_Loop
LDI TMP,0FH
LDI DPH,01H
LDI DPM,00H
LDI DPL,0FH
CALL Clear_Memory_Loop
LDI DPM,01H
LDI DPL,0FH
CALL Clear_Memory_Loop
LDI DPM,02H
LDI DPL,0FH
CALL Clear_Memory_Loop
LDI DPM,03H
LDI DPL,0FH
CALL Clear_Memory_Loop
RTNI
;------------------------------------
Clear_Memory_Loop
LDA TMP,00H
STA INX,00H
SBIM DPL,01H
BC Clear_Memory_Loop
RTNI
;------------------------------------
Reset_Password
LDI EEByteCount,03H
LDI WriteEEAddress0,04H
LDI WriteEEAddress1,00H
CALL Read_EE_Byte
LDI DPH,01H
LDI DPM,00H
LDI DPL,0AH
LDA EEDataBuf1,00H
STA INX,00H
ADIM DPL,01H
LDA EEDataBuf2,00H
STA INX,00H
ADIM DPL,01H
LDA EEDataBuf3,00H
STA INX,00H
ADIM DPL,01H
LDA EEDataBuf4,00H
STA INX,00H
ADIM DPL,01H
LDA EEDataBuf5,00H
STA INX,00H
ADIM DPL,01H
LDA EEDataBuf6,00H
STA INX,00H
RTNI
;------------------------------------
Reset_CPassword_ID
;Reset CPassword
LDI TBR,02H
LDI TMP,01H
CALL 020H
STA TMP,00H
LDI DPH,01H
LDI DPM,02H
LDI DPL,05H
LDA TBR,00H
STA INX,00H
ADIM DPL,01H
LDA TMP,00H
STA INX,00H
ADIM DPL,01H
;
LDI TBR,02H
LDI TMP,02H
CALL 020H
STA TMP,00H
LDA TBR,00H
STA INX,00H
ADIM DPL,01H
LDA TMP,00H
STA INX,00H
ADIM DPL,01H
;
LDI TBR,02H
LDI TMP,03H
CALL 020H
STA TMP,00H
LDA TBR,00H
STA INX,00H
ADIM DPL,01H
LDA TMP,00H
STA INX,00H
ADIM DPL,01H
;
LDI TBR,02H
LDI TMP,04H
CALL 020H
STA TMP,00H
LDA TBR,00H
STA INX,00H
ADIM DPL,01H
LDA TMP,00H
STA INX,00H
ADIM DPL,01H
;
LDI TBR,02H
LDI TMP,05H
CALL 020H
STA TMP,00H
LDA TBR,00H
STA INX,00H
ADIM DPL,01H
LDA TMP,00H
STA INX,00H
ADIM DPL,01H
;
LDI TBR,02H
LDI TMP,06H
CALL 020H
STA TMP,00H
LDA TBR,00H
STA INX,00H
;
;Reset ID Code
LDI DPM,03H
LDI DPL,00H
LDI TBR,02H
LDI TMP,07H
CALL 020H
STA TMP,00H
LDA TBR,00H
STA INX,00H
ADIM DPL,01H
LDA TMP,00H
STA INX,00H
ADIM DPL,01H
;
LDI TBR,02H
LDI TMP,08H
CALL 020H
STA TMP,00H
LDA TBR,00H
STA INX,00H
ADIM DPL,01H
LDA TMP,00H
STA INX,00H
ADIM DPL,01H
;
LDI TBR,02H
LDI TMP,09H
CALL 020H
STA TMP,00H
LDA TBR,00H
STA INX,00H
ADIM DPL,01H
LDA TMP,00H
STA INX,00H
ADIM DPL,01H
;
LDI TBR,02H
LDI TMP,0AH
CALL 020H
STA TMP,00H
LDA TBR,00H
STA INX,00H
ADIM DPL,01H
LDA TMP,00H
STA INX,00H
ADIM DPL,01H
;
RTNI
;------------------------------------
Reset_Port
;PA,PE keyboard I/O port
;PB0: Receive data from host(Input Port)
;PB1: Control send data to host(Output Port)
;PB2: EEprom colock port(Output Port)
;PB3: EEprom data port(I/O Port)
;PC0: Alarm switch port(Input Port)
;PC1, PC2,PC3: Not Useing
;PD0: Password right indicate LED(Output Port)
;PD1: Security right indicate LED(OUtput Port)
;PD2: Back light LED(Output Port)
;PD3: Buzzer port(Output Port)
;PF0: send data to host(Output Port)
;PF1: Control Receive data from host(Output Port)
;PF2,PF3: Not useing
;
;PB: X010B; PC: XXX0B; PD: 1111B; PF: XX11B
;LDI PAOUT,0000B
LDI PBOUT,0110B
LDI PCOUT,0000B
LDI PDOUT,1111B
;LDI PEOUT,1111B
LDI PFOUT,0011B
RTNI
Reset_System
LDI TMP,0FH
LDI DPH,01H
LDI DPM,01H
LDI DPL,0FH
CALL Clear_Memory_Loop
;
LDI TMP,0FH
LDI DPH,01H
LDI DPM,00H
LDI DPL,02H
Reset_System1
LDA TMP,00H
STA INX,00H
ADIM DPL,01H
SBI DPL,08H
BNZ Reset_System1
LDI InputDataIndex,00H
LDI DataFlag,00H
LDI DataFlag1,00H
ANDIM StatusFlag,1110B ;ConnectStatusFlag=0
LDI TimeFlag,00H
LDI KeyFlag,00H
ORIM PORTD,0010B ;Password LED off
RTNI
;===============================================
Read_Intial_Status
LDI EEDataBuf1,0FH
LDI EEDataBuf2,0FH
LDI WriteEEAddress0,00H
LDI WriteEEAddress1,01H
LDI EEByteCount,01H
CALL Read_EE_Byte
EORIM EEDataBuf1,01H
BAZ Safeguard_Indicate
UnSafeguard_Indicate
ANDIM StatusFlag,1101B
ORIM PORTD,0001B ;safeguard LED off
RTNI
Safeguard_Indicate
ORIM StatusFlag,0010B
ANDIM PORTD,1110B ;safeguard LED on
RTNI
;===============================================
;= About Delay Program =
;===============================================
Delay_150us
LDI Delay1,03H
LDI Delay0,0FH
SBIM Delay0,01H
BC $-1
SBIM Delay1,01H
BC $-4
NOP
NOP
NOP
NOP
NOP
NOP
;NOP
RTNI
;------------------------------------
Delay_430us
LDI Delay1,0BH
LDI Delay0,0FH
SBIM Delay0,01H
BC $-1
SBIM Delay1,01H
BC $-4
NOP
NOP
NOP
NOP
NOP
RTNI
;------------------------------------
Delay_10us
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RTNI
;
Delay_20us
CALL Delay_10us
CALL Delay_10us
RTNI
;------------------------------------
Delay_30us
CALL Delay_10us
CALL Delay_10us
CALL Delay_10us
NOP
RTNI
;------------------------------------
Delay_40us
CALL Delay_10us
CALL Delay_10us
CALL Delay_10us
CALL Delay_10us
RTNI
;
Wait_100us ;used in receive '1' delay
CALL Delay_20us
CALL Delay_20us
RTNI
;
Wait_380us ;used in receive '0' delay
LDI TMP,08H
CALL Delay_20us
SBIM TMP,01H
BC $-2
RTNI
;------------------------------------
Wait_100ms
LDI TM0,0001B ;setup time0
LDI T0L,0DH
LDI T0H,03H
ANDIM IRQ,1011B
ORIM IEX,0100B ;open time0 interrupt
ANDIM TimeFlag,1011B
Wait_100ms1
LDA TimeFlag,00H
BA2 $+2
JMP Wait_100ms1
ANDIM TimeFlag,1011B
RTNI
;------------------------------------
Delay_X_6.2ms
ANDIM IEX,0000B
LDI IRQ,000B
SBIM PARM,01H
BC $+2
RTNI
LDI CT2,0AH
LDI CT1,0FH
LDI CT0,0FH
SBIM CT0,01H
BC $-1
SBIM CT1,01H
BC $-4
SBIM CT2,01H
BC $-7
JMP Delay_X_6.2ms
;
Delay_Xus
SBIM PARM,01H
BC $+2
RTNI
LDI CT1,04H
LDI CT0,0FH
SBIM CT0,01H
BC $-1
SBIM CT1,01H
NOP
NOP
BC $-6
JMP Delay_Xus
;------------------------------------
Wait_1min
LDI TM0,0000B
LDI T0L,01H
LDI T0H,00H
LDI IRQ,00H
LDI IEX,0100B
LDI TimeingCount,0CH
LDI BackLightCount,0AH
Wait_1min2
;
;alarm switch detect
NOP
NOP
LDA PORTC,00H
BA0 No_Alarm1
NOP
CALL Delay_10us
LDA PORTC,00H
BA0 No_Alarm1
ORIM PORTD,1000B ;Buz on
ORIM StatusFlag,1000B ;AlarmFlag on
RTNI
No_Alarm1
ANDIM PORTD,0111B ;Buz off
ANDIM StatusFlag,0111B ;AlarmFlag off
LDA TimeFlag,00H
BA2 $+2
JMP Wait_1min2
ANDIM TimeFlag,1011B
SBIM TimeingCount,01H
BNZ Wait_1min2
ANDIM PORTD,1011B ;Back light off
ORIM PORTD,0010B ;Password LED off
LDI TimeingCount,0CH
SBIM BackLightCount,01H
BNZ Wait_1min2
LDI IEX,0000B
LDI IRQ,00H
LDI FailTimes,0000B
CALL Reset_System
;
LDI TM0,0001B
LDI T0L,0DH
LDI T0H,03H
LDI IRQ,00H
LDI IEX,0000B
RTNI
;===============================================
;= About Time0 Interrupt Programme =
;===============================================
TIMER0
STA STACK_BUF,00
LDI WDT,1000B
ORIM TimeFlag,0100B
LDA TimeFlag1,00H
BA1 Reset_Time0_500us
;
LDA TimeFlag1,00H
BA0 Reset_Time0_2ms
;
SBI FailTimes,03H
BAZ Reset_Time0_500ms
;
Reset_Time0_100ms
LDI TM0,0001B
LDI T0L,0DH
LDI T0H,03H
LDI IRQ,00H
LDI IEX,0100B
LDA STACK_BUF,00
RTNI
;Reset_time0_350ms
; LDI TM0,0000B
; LDI T0L,00H
; LDI T0H,05H
; LDI IRQ,00H
; LDI IEX,0100B
; RTNI
;
Reset_Time0_500ms
LDI TM0,0000B
LDI T0L,01H
LDI T0H,00H
LDI IRQ,00H
LDI IEX,0100B
LDA STACK_BUF,00
RTNI
;
Reset_Time0_2ms
LDI TM0,0011B
LDI T0L,01H
LDI T0H,0AH
LDI IRQ,00H
LDI IEX,0100B
LDA STACK_BUF,00
RTNI
;
Reset_Time0_500us
LDI TM0,0110B ;setup time0
LDI T0L,00H
LDI T0H,00H
LDI IRQ,0000B
ORIM IEX,0100B ;open time0 interrupt
LDI TimeFlag1,0010B
LDI HostACKCount,0AH
;ANDIM TimeFlag,1011B
LDA STACK_BUF,00
RTNI
;------------------------------------
Time0_100ms_int
LDA TimeFlag,00H
BA2 $+2
JMP Time0_100ms_int_ret
SBIM TimeingCount,01H
BNZ Time0_100ms_int_ret
LDI TimeingCount,0AH
SBIM BackLightCount,01H
BNZ Time0_100ms_int_ret
ANDIM PORTD,1011B ;Back light off
ORIM PORTD,0010B ;Password LED off
ANDIM KeyFlag,1110B
CALL Reset_System
NOP
NOP
Time0_100ms_int_ret
ANDIM TimeFlag,1011B
RTNI
;===============================================
Setup_Time0_500us
LDI TM0,0101B ;setup time0
LDI T0L,00H
LDI T0H,00H
LDI IRQ,0000B
ORIM IEX,0100B ;open time0 interrupt
LDI TimeFlag1,0010B
LDI HostACKCount,0AH
ANDIM TimeFlag,1011B
RTNI
;===============================================
Setup_Time0_100ms
LDI TM0,0001B
LDI T0L,0DH
LDI T0H,03H
LDI IRQ,0000B
ORIM IEX,0100B ;open time0 interrupt
LDI HostACKCount,0AH
ANDIM TimeFlag,1011B
LDI TimeFlag1,00H
RTNI
Setup_Time0_350ms
LDI TM0,0000B
LDI T0L,0H
LDI T0H,05H
LDI IRQ,0000B
ORIM IEX,0100B
LDI HostACKCount,0AH
ANDIM TimeFlag,1011B
LDI TimeFlag1,00H
RTNI
;===============================================
Setup_Time0_2ms
LDI TM0,0011B ;setup time0 1:32
LDI T0L,01H
LDI T0H,0AH
ANDIM IRQ,1011B
ORIM IEX,0100B ;open time0 interrupt
ANDIM TimeFlag,1011B
LDI TimeFlag1,0001B
RTNI
END
;说明:
; 1. 本程序接收程序(Byte_Receive_Routine)方式采用测量脉冲宽度方式;
; 2. EEProm程序读写均OK;
; 3. 键盘扫描,初态读入通过;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -