⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serkey.asm

📁 防盗报警器NTK源代码
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	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 + -