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

📄 serkey.asm

📁 防盗报警器NTK源代码
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;KEYBOARD-WIRELESS-00
;第二次烧片子正式程序
;所有功能均调试通过(无线通信)
;pulse wide detect
;接受每帧数据之间需2秒时间间隔
;带起始高电平纠正
;增加发送信号闪烁指示,接收信号错误响声指示.
;chksum=2190
;
;LIST P=6622
;romsize=4000
;romsize=4096
;===============================================
;System Register Define
;
IEX	EQU	00H
IRQ	EQU	01H
TM0	EQU	02H
T0L	EQU	04H
T0H	EQU	05H
LPD	EQU	07H
PORTA	EQU	08H
PORTB	EQU	09H
PORTC	EQU	0AH
PORTD	EQU	0BH
PORTE	EQU	0CH
PORTF	EQU	0DH
TBR	EQU	0EH
INX	EQU	0FH
DPL	EQU	10H
DPM	EQU	11H
DPH	EQU	12H

PAOUT	EQU	16H
PBOUT	EQU	17H
PCOUT	EQU	18H
PDOUT	EQU	19H
PEOUT	EQU	1AH
PFOUT	EQU	1BH
T0      EQU     1CH
WDT	EQU	1EH
;-------------------------------
;Data Memory Define
;
TMP			EQU	20H
BackLightCount		EQU	21H
TimeingCount		EQU	22H
Delay0			EQU	23H
Delay1			EQU	24H
Delay2			EQU	25H
DelayParameter		EQU	26H
SendData		EQU	27H
InputDataIndex		EQU	28H
PasswordIndex		EQU	29H
IDBufIndex		EQU	2AH
TmpDataIndex		EQU	2BH
FailTimes		EQU	6AH
ConfirmCount		EQU	2FH
;
WriteEEData0		EQU	30H
WriteEEData1		EQU	31H
ReadEEData0		EQU	32H
ReadEEData1		EQU	33H
WriteEEAddress0		EQU	34H
WriteEEAddress1		EQU	35H
EEByteCount		EQU	36H

EEDataBuf1		EQU	38H
EEDataBuf2		EQU	39H
EEDataBuf3		EQU	3AH
EEDataBuf4		EQU	3BH
EEDataBuf5		EQU	3CH
EEDataBuf6		EQU	3DH
EEDataBuf7		EQU	3EH
EEDataBuf8		EQU	3FH
;
CT0			EQU	40H
CT1			EQU	41H
CT2			EQU	42H
PARM			EQU	43H
KY1			EQU	45H
KEY_F			EQU	46H
KEY_NUM			EQU	47H
S_CODE			EQU	48H
B_AC			EQU	49H
B_TBR			EQU	4AH
PORTE_E			EQU	4BH
KY2			EQU	4CH
;
ByteCodeLow		EQU	50H
ByteCodeHigh		EQU	51H
ACKCommand1		EQU	52H
ACKCommand2		EQU	53H
ACKChkSum1		EQU	54H
ACKChkSum2		EQU	55H
ACKEnd1			EQU	56H
ACKEnd2			EQU	57H
HighLevel		EQU	58H
LowLevel		EQU	59H
LevelCount		EQU	5AH
BitReceiveTimes		EQU	5BH
WordReceiveTimes	EQU	5CH
BitSingle		EQU	5DH
ByteCodeTemp		EQU	5EH
SendCommandTimes	EQU	5FH
HostACKCount		EQU	60H
TimeTL			EQU	61H
TimeTH			EQU	62H
EEACKCount		EQU	63H
STACK_BUF               EQU     64H                      
;
DataFlag		EQU	70H
				;DataValidFlag		EQU	70H.0
				;CodePassFlag		EQU	70H.1
				;DataPassFlag		EQU	70H.2
				;IDPassFlag		EQU	70H.3
DataFlag1		EQU	71H
				;ACKChkSumPassFlag	EQU	71H.0
				;EEErrorFlag		EQU	71H.1				
StatusFlag		EQU	72H
				;ConnectStatusFlag	EQU	72H.0
				;SafeguardFlag		EQU	72H.1
				;ConnectedFlag		EQU	72H.2
				;AlarmFlag		EQU	72H.3
TimeFlag		EQU	7FH
				;Timer1sFlag		EQU	73H.0
				;Timer5sFlag		EQU	73H.1
				;Timer100msFlag		EQU	73H.2
KeyFlag			EQU	74H
				;BackLightFlag		EQU	74H.0
				;KeyValueOn		EQU	74H.1
				;KeyPressFlag		EQU	74H.2
TimeFlag1		EQU	75H
				;Time2msFlag		EQU	75H.0
				;Time500usFlag		EQU	75H.1
													
;
OrderBuf1		EQU	080H
OrdefBuf2		EQU	081H
;
DataTmpBuf1		EQU	082H
DataTmpBuf2		EQU	083H
DataTmpBuf3		EQU	084H
DataTmpBuf4		EQU	085H
DataTmpBuf5		EQU	086H
DataTmpBuf6		EQU	087H
;
ChkSumLow		EQU	088H
ChkSumHigh		EQU	089H
;
PasswordBuf1		EQU	08AH
PasswordBuf2		EQU	08BH
PasswordBuf3		EQU	08CH
PasswordBuf4		EQU	08DH
PasswordBuf5		EQU	08EH
PasswordBuf6		EQU	08FH
;
DataInputBuf1		EQU	090H
DataInputBuf2		EQU	091H
DataInputBuf3		EQU	092H
DataInputBuf4		EQU	093H
DataInputBuf5		EQU	094H
DataInputBuf6		EQU	095H
DataInputBuf7		EQU	096H
DataInputBuf8		EQU	097H
DataInputBuf9		EQU	098H
DataInputBuf10		EQU	099H
DataInputBuf11		EQU	09AH
;
CPasswordBuf1		EQU	0A5H
CPasswordBuf2		EQU	0A6H
CPasswordBuf3		EQU	0A7H
CPasswordBuf4		EQU	0A8H
CPasswordBuf5		EQU	0A9H
CPasswordBuf6		EQU	0AAH
CPasswordBuf7		EQU	0ABH
CPasswordBuf8		EQU	0ACH
CPasswordBuf9		EQU	0ADH
CPasswordBuf10		EQU	0AEH
CPasswordBuf11		EQU	0AFH
;
IDBuf1			EQU	0B0H
IDBuf2			EQU	0B1H
IDBuf3			EQU	0B2H
IDBuf4			EQU	0B3H
IDBuf5			EQU	0B4H
IDBuf6			EQU	0B5H
IDBuf7			EQU	0B6H
IDBuf8			EQU	0B7H
;
ACKIDBUF1		EQU	0B8H
ACKIDBUF2		EQU	0B9H
ACKIDBUF3		EQU	0BAH
ACKIDBUF4		EQU	0BBH
ACKIDBUF5		EQU	0BCH
ACKIDBUF6		EQU	0BDH
ACKIDBUF7		EQU	0BEH
ACKIDBUF8		EQU	0BFH
;-------------------------------
;Constant Define

EEIDAddress		EQU	00H
EEPasswordAddress	EQU	04H
;
;===============================================
;notice:
;	PassWord Address in EEProm: 04-06
;	SafeguardFlag Address in EEProm:10
;
;===============================================
        ORG 000H
        JMP	RESET
        NOP
        JMP	TIMER0
        NOP
        NOP
        NOP
;------------------------------------
	ORG	020H
	TJMP
;CPassword	
	RTNW	01H,02H
	RTNW	03H,04H
	RTNW	05H,06H
	RTNW	07H,08H
	RTNW	09H,00H
	RTNW	01H,00H
;ID Code
	RTNW	01H,03H
	RTNW	05H,07H
	RTNW	09H,01H
	RTNW	01H,01H	
;------------------------------------     
     	ORG	030H
RESET
	NOP
	NOP
	NOP
;	
	CALL	Reset_Memory
	CALL	Reset_Port
	ORIM	PORTD,0011B	
	CALL	Reset_CPassword_ID
	CALL	Reset_Password
	CALL	Reset_Time0_100ms
	CALL	Read_Intial_Status
	NOP
;	
	LDA	DataFlag1,00H
	BA1	Reset_Error_Indicate
;	
Reset_right_Indicate
	ORIM	PORTD,1000B	;BUZ on
	CALL	Wait_100ms
	CALL	Wait_100ms
	ANDIM	PORTD,0111B	;BUZ off
;        NOP
	JMP	Main		
;
Reset_Error_Indicate
	ANDIM	DataFlag1,1101B	;EEErrorFlag=0
	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		
	NOP
	LDI	PBOUT,0010B
		
Main                
                    	
	CALL	Alarm_Detect	
	LDA	StatusFlag,00H
	BA3	Send_Command_Segment

	LDA	KeyFlag,00H
	BA2	$+2
	CALL	Time0_100ms_int
	SBI	FailTimes,03H
	BNZ	$+2
	CALL	Wait_1min
;	
	CALL	SCANKEY4
	LDA	KeyFlag,00H
	BA2	$+2
	JMP	Key_Process_Return
	SBI	KEY_NUM,0FH
	BAZ	Check_Key
	JMP	Check_Over
Check_Key
	LDA	KeyFlag,00H
	BA2	$+2
	JMP	Key_Process_Return
Check_Over	
	LDA	KeyFlag,00H
	BA1	Key_Process_Return
	ORIM	KeyFlag,0010B	
	ORIM	KeyFlag,0001B
	LDI	IEX,0100B
	
	CALL	Enable_BackLight
;	
	ORIM	PORTD,1000B
	LDI	PARM,04H
	CALL	Delay_X_6.2ms
	ANDIM	PORTD,0111B
	
	LDI	TMP,0AH
	SUB	KEY_NUM,00H
	BNC	Number_key_Segment
;	
	LDI	TMP,0AH
	EOR	KEY_NUM,00H
	BAZ	Cancel_Segment
;	
	LDI	TMP,0BH
	EOR	KEY_NUM,00H
	BAZ	Confirm_Segment	
;	
	LDI	TMP,0CH
	EOR	KEY_NUM,00H
	BAZ	Modify_Segment	
;	
	LDI	TMP,0DH
	EOR	KEY_NUM,00H
	BAZ	Send_Command_Segment
;	
	LDI	TMP,0EH
	EOR	KEY_NUM,00H
	BAZ	Unlock_Segment		
;	
	LDI	TMP,0FH
	EOR	KEY_NUM,00H
	BAZ	Connect_Segment
	
	
	NOP
Key_Process_Return
	LDA	DataFlag1,00H
	BA1	$+2
	JMP	Key_Process_Return1
	ANDIM	DataFlag1,1101B	;EEErrorFlag=0
	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		
	NOP
Key_Process_Return1	
	LDI	IEX,0100B
	JMP	Main	
;------------------------------------
Number_key_Segment
	LDI	TMP,0BH
	SUB	InputDataIndex,00H
	BNC	Number_Input
	ORIM	DataFlag,0001B		;DataValidFlag=1
	LDA	DataFlag,00H
	JMP	Key_Process_Return
Number_Input	
	LDI	DPH,01H
	LDI	DPM,01H
	LDA	InputDataIndex,00H
	STA	DPL,00H
	LDA	KEY_NUM
	STA	INX,00H
	ADIM	InputDataIndex,01H
	JMP	Key_Process_Return
;------------------------------------
Confirm_Segment
	LDA	ConfirmCount,00H
	BNZ	Confirm_Two_Times
	LDA	DataFlag,00H
	BA1	$+2
	JMP	Confirm_Failure
	ANDIM	DataFlag,1101B		;CodePassFlag=0
	ADIM	ConfirmCount,01H
;		
	LDI	InputDataIndex,00H
	LDI	TmpDataIndex,02H
	LDI	DPH,01H
Temp_Save_Data	
	LDI	DPM,01H
	LDA	InputDataIndex,00H
	STA	DPL,00H
	LDA	INX,00H
	STA	TMP,00H
	LDI	DPM,00H
	LDA	TmpDataIndex,00H
	STA	DPL,00H
	LDA	TMP,00H
	STA	INX,00H
	ADIM	InputDataIndex,01H
	ADIM	TmpDataIndex,01H
	STA	TMP
	EORIM	TMP,08H
	BAZ	Clear_Data_Buf
	JMP	Temp_Save_Data
Clear_Data_Buf
	LDI	TMP,0FH
	LDI	DPH,01H
	LDI	DPM,01H
	LDI	DPL,0FH
	CALL	Clear_Memory_Loop
	LDI	InputDataIndex,00H
	JMP	Key_Process_Return
;
Confirm_Two_Times
	LDI	TMP,01H
	EOR	ConfirmCount,01H
	BNZ	Confirm_Failure
	LDI	TMP,0FH
	LDI	DPH,01H
	LDI	DPM,01H
	LDI	DPL,05H
	LDA	INX,00H
	SUB	TMP,00H
	BAZ	Confirm_Failure
	
	CALL	Verify_Data_Routine
	LDA	DataFlag,00H
	BA2	$+2
	JMP	Confirm_Failure
	CALL	Modify_Password_Buf
; 
;password to EEDataBuf	
;
	LDI	PasswordIndex,0AH
	LDI	TmpDataIndex,08H
Confirm_EEData_Buf	
	LDI	DPH,01H
	LDI	DPM,00H
	LDA	PasswordIndex,00H
	STA	DPL,00H
	LDA	INX,00H
	STA	TMP,00H
	LDI	DPH,00H
	LDI	DPM,03H
	LDA	TmpDataIndex,00H
	STA	DPL,00H
	LDA	TMP,00H
	STA	INX,00H
	ADIM	TmpDataIndex,01H
	ADIM	PasswordIndex,01H
	BNC	Confirm_EEData_Buf
;	
Password_to_EEProm
	LDI	WriteEEAddress0,04H
	LDI	WriteEEAddress1,00H
	LDI	EEByteCount,03H
	CALL	Write_EE_Byte	
	LDI	ConfirmCount,00H
Confirm_Right_Indicate
	ORIM	PORTD,1000B	;Buz on
	ANDIM	PORTD,1101B	;Password LED on
	CALL	Wait_100ms
	ANDIM	PORTD,0111B	;Buz off
	CALL	Wait_100ms
	ORIM	PORTD,0010B	;Password LED off	
	CALL	Wait_100ms
	CALL	Wait_100ms	
	ANDIM	PORTD,1101B	;Password LED on	
	CALL	Wait_100ms
	CALL	Wait_100ms
	ORIM	PORTD,0010B	;Password LED off	
	CALL	Wait_100ms
	CALL	Wait_100ms
	ANDIM	PORTD,1101B	;Password LED on	
	CALL	Wait_100ms
	CALL	Wait_100ms
	ORIM	PORTD,0010B	;Password LED off	
	CALL	Wait_100ms
	CALL	Wait_100ms
	ANDIM	PORTD,1101B	;Password LED on	
	
	JMP	Clear_Data_Buf
;
Confirm_Failure
	LDI	ConfirmCount,02H
	ORIM	PORTD,0010B	;Password LED off
	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	Key_Process_Return			
;------------------------------------
Modify_Segment

	LDI	ConfirmCount,00H
	CALL	Verify_Password_Routine
	LDA	DataFlag,00H
	BA1	$+2
	JMP	Clear_Data_Buf
	NOP
	ORIM	PORTD,1000B		;Buz on
	CALL	Wait_100ms
	ANDIM	PORTD,0111B		;Buz off
	JMP	Clear_Data_Buf
;------------------------------------			
Cancel_Segment
	LDI	TMP,0FH
	LDI	DPH,01H
	LDI	DPM,01H
	LDI	DPL,0FH
	CALL	Clear_Memory_Loop
	LDI	DataFlag,00H
	LDI	InputDataIndex,00H
	LDI	ConfirmCount,00H
	ORIM	PORTD,1000B		;Buz on
	CALL	Wait_100ms
	ANDIM	PORTD,0111B		;Buz off
	JMP	Key_Process_Return
;------------------------------------		
Unlock_Segment
	JMP	Key_Process_Return
;------------------------------------		
Connect_Segment
	ORIM	StatusFlag,0001B		;ConnectStatusFlag=1
	JMP	Send_Command_Segment	
;------------------------------------	
Send_Command_Segment
	LDA	StatusFlag,00H
	BA3	Start_Send_Alarm_Command
	LDA	DataFlag,00H
	BA0	Send_Command_Fail
	CALL	Verify_Password_Routine
	LDA	DataFlag,00H
	BA1	$+2
	JMP	Send_Command_Fail
;
	ORIM	PORTD,1000B		;Buz on
	ANDIM	PORTD,1101B		;Password LED on
	CALL	Wait_100ms
	ANDIM	PORTD,0111B		;Buz off
;
	LDI	TMP,0FH
	LDI	DPH,01H
	LDI	DPM,01H
	LDI	DPL,0FH
	CALL	Clear_Memory_Loop
	LDI	SendCommandTimes,00H
;
Start_Send_Command
	LDA	PORTD,00H
	BA1	$+3
	ORIM	PORTD,0010B		;Send LED on
	JMP	$+2
	ANDIM	PORTD,1101B		;Send LED off
;	
	ADIM	SendCommandTimes,01H
	SBI	SendCommandTimes,06H     ;send 5 times
	BAZ	Send_Command_Fail		
	LDI	IEX,0000B		;Close Interrupt
	LDA	StatusFlag,00H
	BA3	Start_Send_Alarm_Command
	BA0	$+2
	JMP	To_Safeguard_Segment
;
To_Connect_Segment
        ANDIM   IEX,1011B
	CALL	Send_Connect_Command
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_Connect_Command
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_Connect_Command
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_Connect_Command
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_Connect_Command				
	JMP	Receive_Host_Head
;
To_Safeguard_Segment
       
	BA1	To_UnSafeguard_Segment
        ANDIM   IEX,1011B
	CALL	Send_Safeguard_Command       ;1
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_Safeguard_Command        ;2
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_Safeguard_Command         ;3
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
        CALL   Send_Safeguard_Command           ;4
        LDI    PARM,01H
        CALL   Delay_X_6.2ms
        CALL   Send_Safeguard_Command            ;5
        LDI    PARM,01H
        CALL   Delay_X_6.2ms
        CALL   Send_Safeguard_Command            ;6
        
   ;     LDI    PARM,01H
   ;     CALL   Delay_X_6.2ms
   ;     CALL   Send_Safeguard_Command            ;7
 ;       LDI    PARM,01H
 ;       CALL   Delay_X_6.2ms
 ;       CALL   Send_Safeguard_Command            ;8
         
	JMP	Receive_Host_Head
;	
To_UnSafeguard_Segment
        ANDIM   IEX,1011B
	CALL	Send_UnSafeguard_Command        ;1
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_UnSafeguard_Command         ;2
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_UnSafeguard_Command         ;3
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
        CALL   Send_UnSafeguard_Command           ;4
        LDI    PARM,01H
        CALL   Delay_X_6.2ms
        CALL   Send_UnSafeguard_Command           ;5
        
       	LDI	PARM,01H
	CALL	Delay_X_6.2ms
        CALL   Send_UnSafeguard_Command            ;6
    ;    LDI    PARM,01H
    ;    CALL   Delay_X_6.2ms
    ;    CALL   Send_UnSafeguard_Command            ;7;
;	LDI	PARM,01H
;	CALL	Delay_X_6.2ms
;        CALL   Send_UnSafeguard_Command            ;8

	JMP	Receive_Host_Head
;
Start_Send_Alarm_Command
        LDI     IEX,1011B
	CALL	Send_Alarm_Command
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_Alarm_Command
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_Alarm_Command
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_Alarm_Command
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_Alarm_Command
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_Alarm_Command
	LDI	PARM,01H
	CALL	Delay_X_6.2ms
	CALL	Send_Alarm_Command
Receive_Host_Head

wait
	CALL	Setup_Time0_2ms
	NOP

Wait_Start
	NOP
	NOP
	LDA	PORTB,00H	
	BA0	$+2
	JMP	Wait_Start1
	NOP
	NOP
	NOP
	LDA	PORTB,00H
	BA0	$+2
	JMP	Wait_Start1	
	CALL	Setup_Time0_2ms
	JMP	Wait_Start	
Wait_Start1
	LDA	TimeFlag,00H

⌨️ 快捷键说明

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