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

📄 serkey.asm

📁 防盗报警器NTK源代码
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	BA2	$+2
	JMP	Wait_Start
	
	ANDIM	TimeFlag1,1110B

;=================================================
;recycle detect host ACK
;
	NOP
	CALL	Byte_Receive_Routine
	LDA	TimeFlag,00H
	BA2	Start_Send_Command	
	EORIM	ByteCodeLow,05H

	BNZ	Receive_Host_Head
	EORIM	ByteCodeHigh,0AH

	BNZ	Receive_Host_Head
;
	CALL	Byte_Receive_Routine
	LDA	TimeFlag,00H
	BA2	Start_Send_Command	
	LDA	ByteCodeLow,00H
	STA	ACKCommand1,00H
	LDA	ByteCodeHigh,00H
	STA	ACKCommand2,00H
;	
	CALL	Byte_Receive_Routine
	LDA	TimeFlag,00H
	BA2	Start_Send_Command	
	LDI	DPH,01H
	LDI	DPM,03H
	LDI	DPL,08H
	LDA	ByteCodeLow,00H
	STA	INX,00H
	LDI	DPL,09H
	LDA	ByteCodeHigh,00H
	STA	INX,00H
;		
	CALL	Byte_Receive_Routine
	LDA	TimeFlag,00H
	BA2	Start_Send_Command
	LDI	DPH,01H
	LDI	DPM,03H
	LDI	DPL,0AH
	LDA	ByteCodeLow,00H
	STA	INX,00H
	LDI	DPL,0BH
	LDA	ByteCodeHigh,00H
	STA	INX,00H
;		
        CALL    Byte_Receive_Routine
        LDA     TimeFlag,00H
        BA2     Start_Send_Command 
        LDI     DPH,01H
        LDI     DPM,03H
        LDI     DPL,0CH
        LDA     ByteCodeLow,00H
        STA     INX,00H
        LDI     DPL,0DH
        LDA     ByteCodeHigh,00H
        STA     INX,00H
;		
	CALL	Byte_Receive_Routine
	LDA	TimeFlag,00H
	BA2	Start_Send_Command	
	LDI	DPH,01H
	LDI	DPM,03H
	LDI	DPL,0EH
	LDA	ByteCodeLow,00H
	STA	INX,00H
	LDI	DPL,0FH
	LDA	ByteCodeHigh,00H
	STA	INX,00H	
;		
	CALL	Byte_Receive_Routine
	LDA	TimeFlag,00H
	BA2	Start_Send_Command	
	LDA	ByteCodeLow,00H
	STA	ACKChkSum1,00H
	LDA	ByteCodeHigh,00H
	STA	ACKChkSum2,00H
;		
	CALL	Byte_Receive_Routine
	LDA	TimeFlag,00H
	BA2	Start_Send_Command	
	LDA	ByteCodeLow,00H
	STA	ACKEnd1,00H
	LDA	ByteCodeHigh,00H
	STA	ACKEnd2,00H
	LDI	TimeFlag1,00H
;
;ACK Receive finish
;
;test1
	NOP
	CALL	Compare_ChkSum_Routine
	NOP
	LDA	DataFlag1,00H
	BA0	$+2
	JMP	Receive_Host_Head	
	CALL	Verify_ID_Routine
	NOP
	LDA	DataFlag,00H
	BA3	$+2
	JMP	Receive_Host_Head	

;judge ACK Command
;
Judge_Alarm
	SBI	ACKCommand1,0FH
	BNZ	Judge_Safeguard
	SBI	ACKCommand2,04H

	BNZ	Receive_Host_Head
	JMP	Send_Command_Return
;
Judge_Safeguard
	SBI	ACKCommand1,01H
	BNZ	Judge_UnSafeguard
	SBI	ACKCommand2,02H

	BNZ	Receive_Host_Head
	ORIM	StatusFlag,0010B
Modify_EEProm_Safeguard
	LDI	WriteEEAddress0,00H
	LDI	WriteEEAddress1,01H
	LDI	EEByteCount,01H
	LDI	EEDataBuf1,01H
	LDI	EEDataBuf2,00H
	CALL	Write_EE_Byte
	ANDIM	PORTD,1110B		;safeguard LED ON		
	JMP	Send_Command_Return
;
Judge_UnSafeguard
	SBI	ACKCommand1,04H
	BNZ	Judge_Connect
	SBI	ACKCommand2,03H
	;BNZ	Send_Command_Again
	BNZ	Receive_Host_Head
	ANDIM	StatusFlag,1101B
Modify_EEProm_Unsafeguard
	LDI	WriteEEAddress0,00H
	LDI	WriteEEAddress1,01H
	LDI	EEByteCount,01H
	LDI	EEDataBuf1,00H
	LDI	EEDataBuf2,00H
	CALL	Write_EE_Byte
	ORIM	PORTD,0001B		;safeguard LED off			
	JMP	Send_Command_Return
;
Judge_Connect
	SBI	ACKCommand1,0CH
	BNZ	Receive_Host_Head
	SBI	ACKCommand2,02H

	BNZ	Receive_Host_Head
	LDA	StatusFlag,00H
	BA0	$+2

	BNZ	Receive_Host_Head
	ORIM	StatusFlag,0100B
	ORIM	PORTD,1000B		;Buz on
	LDI	PARM,0FH
	CALL	Delay_X_6.2ms
	LDI	PARM,0FH
	CALL	Delay_X_6.2ms
	ANDIM	PORTD,0111B		;Buz off
	JMP	Send_Command_Return
;			
Send_Command_Again
	NOP
	LDI	PARM,0CH
	CALL	Delay_X_6.2ms
	NOP
	JMP	Start_Send_Command
;
Send_Command_Fail
	CALL	Wait_100ms
	ANDIM	PORTD,0111B	;Buz off
	CALL	Wait_100ms
	ORIM	PORTD,1000B	;Buz on
	CALL	Wait_100ms
	ANDIM	PORTD,0111B	;Buz off
	CALL	Wait_100ms
	ORIM	PORTD,1000B	;Buz on
	CALL	Wait_100ms
	ANDIM	PORTD,0111B	;Buz off
	CALL	Wait_100ms	
	ORIM	PORTD,1000B	;Buz on
	CALL	Wait_100ms
	ANDIM	PORTD,0111B	;Buz off	
	JMP	Send_Command_Return1
;	
Send_Command_Return
	ORIM	PORTD,1000B	;Buz on
	CALL	Wait_100ms
	CALL	Wait_100ms
	ANDIM	PORTD,0111B	;Buz off
Send_Command_Return1
	ORIM	PORTF,0011B	;Close send and receive power
	ORIM	PORTD,0010B	;Send LED off
;	ORIM	PORTF,0000B
	LDI	IEX,0100B
	LDI	SendCommandTimes,00H
	LDI	InputDataIndex,00H
	LDI	TimeFlag1,00H
	JMP	Key_Process_Return			
;===============================================
Setup_Time0
	LDI	TM0,0001B	;setup	time0
	LDI	T0L,0DH
	LDI	T0H,03H
	ANDIM	IRQ,1011B
	ORIM	IEX,0100B	;open time0 interrupt
	LDI	HostACKCount,03H
	ANDIM	TimeFlag,1011B
	RTNI

;===============================================
Byte_Receive_Routine
	LDI	HighLevel,00H
	LDI	LowLevel,00H
	LDI	LevelCount,00H
	LDI	BitReceiveTimes,00H
	LDI	WordReceiveTimes,00H
Receive_Start
;
;        CALL    Setup_Time0_100ms
        CALL    Setup_Time0_350ms
;	
Wait_Host_ACK
	LDA	TimeFlag,00H
	BA2	Byte_Receive_Error
	LDA	PORTB,00H
	BA0	$-3
	NOP
Wait_Host_ACK1
	LDA	TimeFlag,00H
	BA2	Byte_Receive_Error			
	LDA	PORTB,00H
	BA0	$+2	
	JMP	Wait_Host_ACK1
	NOP
	LDA	PORTB,00H
	BA0	$+2	
	JMP	Wait_Host_ACK1
;	
	CALL	Setup_Time0_500us	
;
Receive_Start1
	LDA	TimeFlag,00H
        BA2     R_Wait_350ms
	LDA	PORTB,00H
	BA0	Receive_Start1
	NOP	
	LDA	PORTB,00H
	BA0	Receive_Start1	
	NOP	
	;LDA	PORTB,00H
	;BA0	Receive_Start1
	LDA	T0H,00H
	STA	TimeTH,00H
	LDA	T0L,00H
	STA	TimeTL,00H
	LDI	IEX,0000B
;	
JUdge_0				;30 ~ 6f   96us~222us(normal value:4B)
	;SBI	TimeTH,03H
	SBI	TimeTH,01H
        BNC     R_Wait_350ms
	;SBI	TimeTH,07H
	SBI	TimeTH,04H       ;9
	BC	Judge_1
	JMP	Receive_0
Judge_1				;c0~ef	   352us~478us(normal value:D9)
	;SBI	TimeTH,0CH
	SBI	TimeTH,05H       ;0AH
        BNC     R_Wait_350ms
	SBI	TimeTH,09H
        BC      R_Wait_350ms
	JMP	Receive_1
;
Receive_0
	LDI	BitSingle,00H
	CALL	Wait_380us
	JMP	Send_Bit
Receive_1
	LDI	BitSingle,08H
	CALL	Wait_100us
;
Send_Bit				
	LDA	ByteCodeTemp,00H
	SHR
	STA	ByteCodeTemp,00H
	LDA	BitSingle,00H
	BA3	$+3
	ANDIM	ByteCodeTemp,0111B
	JMP	$+2
	ORIM	ByteCodeTemp,1000B
;
	ADIM	BitReceiveTimes,01H
	SBI	BitReceiveTimes,04H        
	BNZ	Receive_Start
	LDA	WordReceiveTimes,00H
	BNZ	$+5
	LDA	ByteCodeTemp,00H
	STA	ByteCodeLow,00H
	LDI	WordReceiveTimes,01H
	JMP	$+4
	LDA	ByteCodeTemp,00H
	STA	ByteCodeHigh,00H
	LDI	WordReceiveTimes,02H
	LDI	BitReceiveTimes,00H
	LDI	ByteCodeTemp,00H
	SBI	WordReceiveTimes,02H
	BNZ	Receive_Start
Byte_Receive_ret	
	RTNI
;	
R_Wait_350ms          ;100ms
        CALL    Setup_Time0_350ms
	LDA	TimeFlag,00H
	BA2	Byte_Receive_Error
	JMP	$-2
;
Byte_Receive_Error
	LDI	ByteCodeLow,0EH
	LDI	ByteCodeHigh,0EH
	RTNI		
	
;===============================================
Verify_ID_Routine
	LDI	IDBufIndex,00H
	LDI	TmpDataIndex,08H
	LDI	DPH,01H
	LDI	DPM,03H
Verify_ID	
	LDA	IDBufIndex,00H
	STA	DPL,00H
	LDA	INX,00H
	STA	TMP,00H
	LDA	TmpDataIndex,00H
	STA	DPL,00H
	LDA	INX,00H
	EOR	TMP,00H
	BNZ	Verify_ID_Error
	ADIM	IDBufIndex,01H
	ADIM	TmpDataIndex,01H
	BNC	Verify_ID		
	ORIM	DataFlag,1000B		;DataPassFlag=1
	RTNI
Verify_ID_Error
	ANDIM	DataFlag,0111B		;IDPassFlag=0	
	NOP
	NOP
	RTNI	
;===============================================
Compare_ChkSum_Routine
;Calculte Receive Chksum
;
	LDI	DPH,01H
	LDI	DPM,00H
	LDI	DPL,08H
	LDI	TMP,00H
	STA	INX,00H
	LDI	DPL,09H
	LDI	TMP,00H
	STA	INX,00H
;chksum+ACKIDBuf1
	LDI	DPH,01H
	LDI	DPM,03H
	LDI	DPL,08H
	LDA	INX,00H
	STA	TMP,00H
	LDI	DPM,00H
	LDI	DPL,08H
	LDA	INX,00H
	CALL	Add_Number_Routine
;chksum+ACKIDBuf3
	LDI	DPH,01H
	LDI	DPM,03H
	LDI	DPL,0AH
	LDA	INX,00H
	STA	TMP,00H
	LDI	DPM,00H
	LDI	DPL,08H
	LDA	INX,00H
	CALL	Add_Number_Routine
;chksum+ACKIDBuf5	
	LDI	DPH,01H
	LDI	DPM,03H
	LDI	DPL,0CH
	LDA	INX,00H
	STA	TMP,00H
	LDI	DPM,00H
	LDI	DPL,08H
	LDA	INX,00H
	CALL	Add_Number_Routine
;chksum+ACKIDBuf7	
	LDI	DPH,01H
	LDI	DPM,03H
	LDI	DPL,0EH
	LDA	INX,00H
	STA	TMP,00H
	LDI	DPM,00H
	LDI	DPL,08H
	LDA	INX,00H
	CALL	Add_Number_Routine
;chksum+ACKCommand1	
	LDA	ACKCommand1,00H
	STA	TMP,00H
	LDI	DPM,00H
	LDI	DPL,08H
	LDA	INX,00H
	CALL	Add_Number_Routine
;				
;chksum+ACKIDBuf2	
	LDI	DPH,01H
	LDI	DPM,03H
	LDI	DPL,09H
	LDA	INX,00H
	STA	TMP,00H
	LDI	DPM,00H
	LDI	DPL,09H
	LDA	INX,00H
	CALL	Add_Number_Routine_H		
;chksum+ACKIDBuf4	
	LDI	DPH,01H
	LDI	DPM,03H
	LDI	DPL,0BH
	LDA	INX,00H
	STA	TMP,00H
	LDI	DPM,00H
	LDI	DPL,09H
	LDA	INX,00H
	CALL	Add_Number_Routine_H	
;chksum+ACKIDBuf6	
	LDI	DPH,01H
	LDI	DPM,03H
	LDI	DPL,0DH
	LDA	INX,00H
	STA	TMP,00H
	LDI	DPM,00H
	LDI	DPL,09H
	LDA	INX,00H
	CALL	Add_Number_Routine_H	
;chksum+ACKIDBuf8	
	LDI	DPH,01H
	LDI	DPM,03H
	LDI	DPL,0FH
	LDA	INX,00H
	STA	TMP,00H
	LDI	DPM,00H
	LDI	DPL,09H
	LDA	INX,00H
	CALL	Add_Number_Routine_H	
;chksum+ACKCommnd2	
	LDA	ACKCommand2,00H
	STA	TMP,00H
	LDI	DPM,00H
	LDI	DPL,09H
	LDA	INX,00H
	CALL	Add_Number_Routine_H
;
;Compare start
	LDI	DPH,01H
	LDI	DPM,00H
	LDI	DPL,08H
	LDA	INX,00H
	SUB	ACKChkSum1,00H
	BNZ	Receive_ChkSum_Error
	LDI	DPL,09H
	LDA	INX,00H
	SUB	ACKChkSum2,00H
	BNZ	Receive_ChkSum_Error
;
Receive_ChkSum_Right	
	ORIM	DataFlag1,0001B
	RTNI
;
Receive_ChkSum_Error
	ANDIM	DataFlag1,1110B
	RTNI	
	
;===============================================
Send_Safeguard_Command
;calculate chksum
;	
	LDI	DPH,01H
	LDI	DPM,00H
	LDI	DPL,00H
	LDI	TMP,0FH
	STA	INX,00H
	LDI	DPL,01H
	LDI	TMP,00H
	STA	INX,00H
        LDI     IEX,00H
	CALL	Calculate_ChkSum_Routine
;
	CALL	Send_Head_Code
	CALL	Send_Protect_Code
	CALL	Send_ID_Code
	CALL	Send_ChkSum_Code
	CALL	Send_Stop_Code
	RTNI
;===============================================
Send_UnSafeguard_Command
;calculate chksum
;	
	LDI	DPH,01H
	LDI	DPM,00H
	LDI	DPL,00H
	LDI	TMP,0FH
	STA	INX,00H
	LDI	DPL,01H
	LDI	TMP,0CH
	STA	INX,00H
	CALL	Calculate_ChkSum_Routine
;	
	CALL	Send_Head_Code
	CALL	Send_UnProtect_Code
	CALL	Send_ID_Code
	CALL	Send_ChkSum_Code
	CALL	Send_Stop_Code
	RTNI
;===============================================
Send_Connect_Command
;calculate chksum
;	
	LDI	DPH,01H
	LDI	DPM,00H
	LDI	DPL,00H
	LDI	TMP,0CH
	STA	INX,00H
	LDI	DPL,01H
	LDI	TMP,00H
	STA	INX,00H
	CALL	Calculate_ChkSum_Routine
;	
	CALL	Send_Head_Code
	CALL	Send_Connect_Code
	CALL	Send_ID_Code
	CALL	Send_ChkSum_Code
	CALL	Send_Stop_Code
	RTNI		
;===============================================
Send_Alarm_Command
;calculate chksum
;	
	LDI	DPH,01H
	LDI	DPM,00H
	LDI	DPL,00H
	LDI	TMP,0FH
	STA	INX,00H
	LDI	DPL,01H
	LDI	TMP,08H
	STA	INX,00H
	CALL	Calculate_ChkSum_Routine
;
	CALL	Send_Head_Code
	CALL	Send_Alarm_Code
	CALL	Send_ID_Code
	CALL	Send_ChkSum_Code
	CALL	Send_Stop_Code
	RTNI
;
Send_Alarm_Code
	LDI	SendData,0FH
	CALL	Send_Data_Code
	LDI	SendData,08H
	CALL	Send_Data_Code
	RTNI	
;===============================================
Send_Data_Code
	LDA	SendData,0
	BA0	$+2
	JMP	Send_Low0
Send_High0
	ORIM	PORTB,0010B
	CALL	Delay_430us
	ANDIM	PORTB,1101B
	CALL	Delay_150us
	JMP	Send_Data_1bit
Send_Low0
	ORIM	PORTB,0010B	
	CALL	Delay_150us
	ANDIM	PORTB,1101B	
	CALL	Delay_430us
;	
Send_Data_1bit
	LDA	SendData,0
	BA1	$+2
	JMP	Send_Low1
Send_High1
	ORIM	PORTB,0010B	
	CALL	Delay_430us
	ANDIM	PORTB,1101B	
	CALL	Delay_150us
	JMP	Send_Data_2bit
Send_Low1
	ORIM	PORTB,0010B	
	CALL	Delay_150us
	ANDIM	PORTB,1101B	
	CALL	Delay_430us
;
Send_Data_2bit
	LDA	SendData,0
	BA2	$+2
	JMP	Send_Low2
Send_High2
	ORIM	PORTB,0010B	
	CALL	Delay_430us
	ANDIM	PORTB,1101B	
	CALL	Delay_150us
	JMP	Send_Data_3bit
Send_Low2
	ORIM	PORTB,0010B	
	CALL	Delay_150us
	ANDIM	PORTB,1101B	
	CALL	Delay_430us
;
Send_Data_3bit
	LDA	SendData,0
	BA3	$+2
	JMP	Send_Low3
Send_High3
	ORIM	PORTB,0010B	
	CALL	Delay_430us
	ANDIM	PORTB,1101B	
	CALL	Delay_150us
	RTNI
Send_Low3
	ORIM	PORTB,0010B	
	CALL	Delay_150us
	ANDIM	PORTB,1101B	
	CALL	Delay_430us	
	RTNI
;------------------------------------
Send_Stop_Code
	LDI	SendData,0DH
	CALL	Send_Data_Code
	LDI	SendData,00H
	CALL	Send_Data_Code
;	
	ORIM	PORTB,0010B		;Send End Pulse
	CALL	Delay_20us
	CALL	Delay_20us
	CALL	Delay_20us
	CALL	Delay_20us
	CALL	Delay_20us
	CALL	Delay_20us
	ANDIM	PORTB,1101B	
	CALL    Delay_10us
	RTNI
;------------------------------------
Send_Protect_Code
	LDI	SendData,0FH
	CALL	Send_Data_Code
	LDI	SendData,00H
	CALL	Send_Data_Code
	RTNI	
;------------------------------------
Send_UnProtect_Code
	LDI	SendData,0FH
	CALL	Send_Data_Code
	LDI	SendData,0CH
	CALL	Send_Data_Code
	RTNI
;------------------------------------
Send_Connect_Code
	LDI	SendData,0CH
	CALL	Send_Data_Code
	LDI	SendData,00H
	CALL	Send_Data_Code
	RTNI							
;------------------------------------
Send_ID_Code
	LDI	DPH,01H
	LDI	DPM,03H
	LDI	DPL,00H
	LDA	INX,00H
	STA	SendData,00H
	CALL	Send_Data_Code
	LDI	DPL,01H
	LDA	INX,00H
	STA	SendData,00H
	CALL	Send_Data_Code
	LDI	DPL,02H
	LDA	INX,00H
	STA	SendData,00H
	CALL	Send_Data_Code
	LDI	DPL,03H
	LDA	INX,00H
	STA	SendData,00H
	CALL	Send_Data_Code
	LDI	DPL,04H
	LDA	INX,00H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -