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

📄 xl032_szgs01.dt

📁 完整的电动车防盗报警器源码
💻 DT
📖 第 1 页 / 共 3 页
字号:
	jbs	Sound_Time_Counter+1,7
		jmp	Tcc_End
	clr	Sound_Time_Counter+1
	;------;
	bs	 System_Status,Lamp_Off
	clr	System_Clock+2
	jmp	Tcc_End
	;------;
No_Di___Sound_Event:
;	bc	 Lamp_Port,Lamp
	inc	Sound_Time_Counter+1
	jbs	status,z
		jmp	Tcc_End
	clr	Sound_Event_Counter
	bc	 System_Status,Lamp_Off
;	bc	 System_Status,Lamp_Enable
	bc	 Sound_Control_Port,Sound_Control
	bs	 System_Status,Warm_Initialize
	jmp	Tcc_End
Di___Sound_Event_Tcc_Set:
	bc	 System_Status,Warm_Initialize
	clr	Sound_Time_Counter+1
	clr	Sound_Time_Counter+2
	clr	Sound_Time_Counter+3
	ret
	;======;
*/
/*
Wu_Wu_Wu_Sound_Event:
	jbc	System_Status,Warm_Initialize
		call	Wu_Wu_Wu_Sound_Event_Tcc_Set
	;------;
	jbs	System_RF_Status,No_Sound		 ;无声标志 
	jbc	Warm_Port,Warm
		jmp	Wu_Wu_Wu_Sound_High_Status
Wu_Wu_Wu_Sound_Low_Status:
	bs	 Warm_Port,Warm
	add	tcc,@256-13					 ;延时110uS
	jmp	Tcc_End
Wu_Wu_Wu_Sound_High_Status:
	bc	 Warm_Port,Warm
	mov	a,Sound_Time_Counter+2
	add	a,@13
	add	tcc,a
	;------;
	inc	Sound_Time_Counter+1			;声音变化速度 
	mov	a,Sound_Time_Counter+1
	add	a,@256-6
	jbs	status,c
		jmp	Tcc_End
	clr	Sound_Time_Counter+1
	;------;
	jbc	System_Status,Sound_Status_Flag
		jmp	Add_Wu_Wu_Wu_Sound
Sub_Wu_Wu_Wu_Sound:
	inc	Sound_Time_Counter+2
	mov	a,Sound_Time_Counter+2
	sub	a,@256-31-1					 ;260uS=(31+2)*8uS
	jbc	status,c
		jmp	Tcc_End
	bs	 System_Status,Sound_Status_Flag
	jmp	Tcc_End
Add_Wu_Wu_Wu_Sound:
	dec	Sound_Time_Counter+2
	mov	a,Sound_Time_Counter+2
	sub	a,@256-66-1					 ;544uS=(68+2)*8uS
	jbs	status,c
		jmp	Tcc_End
	bc	 System_Status,Sound_Status_Flag
	;------;
	inc	Sound_Time_Counter+3			;声音次数 
	jbs	Sound_Time_Counter+3,4
		jmp	Tcc_End
Wu_Wu_Wu_Sound_End:
	clr	Sound_Time_Counter+3
	clr	Sound_Event_Counter
	bs	 System_Status,Warm_Initialize
	clr	System_Clock+2
	jmp	Tcc_End
Wu_Wu_Wu_Sound_Event_Tcc_Set:
	bc	 System_Status,Warm_Initialize
	mov	Sound_Time_Counter+2,@256-66	;544uS=(68+2)*8uS
	clr	Sound_Time_Counter+1
	clr	Sound_Time_Counter+3
	ret
	;======;
/*
	jbc	System_Status,Warm_Initialize
		call	Wu_Wu_Wu_Sound_Event_Tcc_Set
	jbc	 System_RF_Status,Warm_No_Sound_Flag
		jmp	No_Wu_Wu_Wu_Sound
	;------;
	jbc	Warm_Port,Warm
		jmp	Wu_Wu_Wu_Sound_High_Status
Wu_Wu_Wu_Sound_Low_Status:
	bs	 Warm_Port,Warm
	add	tcc,@256-13					 ;延时110uS
	jmp	Tcc_End
Wu_Wu_Wu_Sound_High_Status:
	bc	 Warm_Port,Warm
	mov	a,Sound_Time_Counter+2
	add	a,@13
	add	tcc,a
	;------;
	inc	Sound_Time_Counter+1			;声音变化速度 
	mov	a,Sound_Time_Counter+1
	add	a,@256-6
	jbs	status,c
		jmp	Tcc_End
	clr	Sound_Time_Counter+1
	;------;
	jbc	System_Status,Sound_Status_Flag
		jmp	Add_Wu_Wu_Wu_Sound
Sub_Wu_Wu_Wu_Sound:
	inc	Sound_Time_Counter+2
	mov	a,Sound_Time_Counter+2
	sub	a,@256-25;31-1					 ;260uS=(31+2)*8uS
	jbc	status,c
		jmp	Tcc_End
	bs	 System_Status,Sound_Status_Flag
	jmp	Tcc_End
Add_Wu_Wu_Wu_Sound:
	dec	Sound_Time_Counter+2
	mov	a,Sound_Time_Counter+2
	sub	a,@256-66-1					 ;544uS=(68+2)*8uS
	jbs	status,c
		jmp	Tcc_End
	bc	 System_Status,Sound_Status_Flag
	;------;
	bs	 System_RF_Status,Warm_No_Sound_Flag
	mov	Sound_Time_Counter+1,@255
	jmp	Tcc_End
No_Wu_Wu_Wu_Sound:
	clr	tcc
	djz	Sound_Time_Counter+1
		jmp	Tcc_End	
	bc	 System_RF_Status,Warm_No_Sound_Flag
	;------;
	inc	Sound_Time_Counter+3			;声音次数 
	mov	a,Sound_Time_Counter+3
	add	a,@256-3
	jbs	status,c
		jmp	Tcc_End
	clr	Sound_Time_Counter+3
	clr	Sound_Event_Counter
	clr	System_Clock+2
	bs	 System_Status,Warm_Initialize
	jmp	Tcc_End
Wu_Wu_Wu_Sound_Event_Tcc_Set:
	bc	 System_Status,Warm_Initialize
	mov	Sound_Time_Counter+2,@256-66	;544uS=(68+2)*8uS
	clr	Sound_Time_Counter+1
	clr	Sound_Time_Counter+3
	ret
*/
	;======;
Tcc_End:
	Restore_Environment
;}
Delay_uS:
;	wdtc
	djz	Sound_Time_Counter
		jmp	Delay_uS
	ret
;===========================================;
Get_Code:
	mov	a,@16
	mov	User_Id+3,a
	clr	User_Id+2
Get_Code_1:
	wdtc
	bc	 status,c
	rlc	User_Id+0
	rlc	User_Id+1
	rlc	User_Id+2
	jbc	status,c
		jmp	Get_Code_2
	mov	a,@0x3
	sub	a,User_Id+2
	jbs	status,c
		jmp	Get_Code_3
Get_Code_2:
	mov	a,@0x3
	sub	User_Id+2,a
	inc	User_Id+0
Get_Code_3:
	djz	User_Id+3
	jmp	Get_Code_1
	ret
;===========================================;
;-----------------上电初始化----------------;
;===========================================;
System_Initialize:						 ;系统初始化 
;{
	contw  @Contw_Data
	mov	r5,@R5_Data
	iow	ioc5,@IOC5_Data
	mov	r6,@R6_Data
	iow	ioc6,@IOC6_Data
	iow	iocb,@IOCB_Data
	iow	iocd,@IOCD_Data
	iow	ioce,@0b10000000				;开看门狗 
	iow    iocf,@0b00000001				;开Tcc中断标置 
	;------;
	mov	a,@15
	mov	rsr,a
Initial_User_Ram:						  ;初始化清空变量 
	wdtc
	inc	rsr
	clr	iar	
	mov	a,rsr
	and	a,@0b00111111
	xor	a,@0b00111111
	jbs	status,z
		jmp	Initial_User_Ram		
	clr	rsr
	;------;
	call	Userid_Table0
	mov	User_Id+0,a
	call	Userid_Table1
	mov	User_Id+1,a
Get_User_Code_Loop:
	call	Get_Code
	mov	a,User_Id+2
	call	Get_Data
	mov	User_Id+2,a
	rrc	User_Id+2
	rrc	Send_Buffer+0
	rrc	Send_Buffer+1
	rrc	User_Id+2
	rrc	Send_Buffer+0
	rrc	Send_Buffer+1
	inc	User_Id+4
	mov	a,User_Id+4
	xor	a,@0x8
	jbs	status,z
		jmp	Get_User_Code_Loop
	mov	a,Send_Buffer+0
	mov	User_Id+1,a
	mov	a,Send_Buffer+1
	mov	User_Id+0,a
	;------;
	clr	User_Id+2
	clr	User_Id+3
	clr	User_Id+4
	clr	Send_Buffer+0
	clr	Send_Buffer+1
	mov	Quiver_Edit_Event,@1
	;------;
	bs	 System_Status,Warm_Initialize
	call	Delay_200mS
;===========================================;
;    程序名: Code_Send
;      功能: 内码发射 
;===========================================;
Code_Send:
	mov	User_Id+2,@30
;	bs	 Code_Port,Code
;	call   Delay_6000us
;	bc	 Code_Port,Code
;	call   Delay_6000us
Code_Send_Loop:
	;=======1
	mov	a,User_Id+0					  ;发送用户码1
	mov	Send_Buffer,a
	call	Send_Data
	;=======
	mov	a,User_Id+1					  ;发送用户码2
	mov	Send_Buffer,a
	call	Send_Data
	;=======
	bs	 Code_Port,Code
	call   Delay_500us
	bc	 Code_Port,Code
	call   Delay_6000us
	djz	User_Id+2
		jmp	Code_Send_Loop
	jmp	Main_Loop
	;=======================================;
Send_Data:
	call   Send_Bit		  			   ;D0
	call   Send_Bit		   			  ;D1
	call   Send_Bit		   			  ;D2
	call   Send_Bit						 ;D3
	call   Send_Bit		  			   ;D4
	call   Send_Bit		  			   ;D5
	call   Send_Bit		  			   ;D6
	call   Send_Bit		  			   ;D7
	ret
	;=======================================;
Send_Bit:
	jbc	Send_Buffer,0
		call	Send_Bit1
	jbs	Send_Buffer,0
		call	Send_Bit0
	rrc	Send_Buffer						 ;发送顺序控制 
	ret
	;=======================================;
Send_Bit1:
	bs	Code_Port,Code
	call	Delay_500us
	call	Delay_500us
	call	Delay_500us
	bc	Code_Port,Code
	call	Delay_500us
	ret
	;=======================================;
Send_Bit0:
	bs	Code_Port,Code
	call	Delay_500us
	bc	Code_Port,Code
	call	Delay_500us
	call	Delay_500us
	call	Delay_500us
	ret
;===========================================;
;-----------子程序RF_Send结束---------------;
;===========================================;

;===========================================;
;    程序名: Delay
;      功能: 延时程序 
;===========================================;
Delay_300mS:
	mov	Delay_Counter+1,@100
Delay_300ms_Loop:
	call	Delay_6000us
	djz	Delay_Counter+1
		jmp	Delay_300ms_Loop
	ret	
;===========================================;
Delay_200mS:
	mov	Delay_Counter+1,@66
	disi
	jmp	Delay_300ms_Loop	
;===========================================;
Delay_50mS:
	mov	Delay_Counter+1,@16;18
	jmp	Delay_300ms_Loop	
;===========================================;
Delay_6000us:
	mov	Delay_Counter,@240
Delay_6000us_Loop:
	call	Delay_12_5us
	djz	Delay_Counter
		jmp	Delay_6000us_Loop
	ret
;===========================================;
Delay_500us:
	mov	Delay_Counter,@40
Delay_500us_Loop:
	call	Delay_12_5us
	djz	Delay_Counter
		jmp	Delay_500us_Loop
	ret
;===========================================;
Delay_12_5us:;4M/4Clock
	wdtc
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	nop;24
	ret;26
;===========================================;
;------------子程序Delay结束----------------;
;===========================================;

;==========================================;

;==========================================;
;******************宏定义******************;

;==========================================;
imov	macro	dReg,@Value
	mov	a,@Value/256
	mov	dReg,a
	mov	a,@Value%256
	mov	dReg+1,a
	endm
;==========================================;
imov	macro	dReg,sReg				 ;整数移动 
	mov	dReg+1,sReg+1
	mov	dReg,sReg
	endm
;==========================================;
iow	macro	Reg,@Value
	mov	a,@Value
	iow	Reg
	endm
;==========================================;
iinc	macro	Reg					   ;int inc
	inc	Reg+1
	jbc	status,z
		inc	Reg
	endm
;==========================================;
idec	macro	Reg					   ;int dec
	mov	Reg+1,Reg+1
	jbc	status,z
		dec	Reg
	dec	Reg+1
	endm
;==========================================;
ineg	macro	Reg
	com	Reg+1
	inc	Reg+1
	jbc	status,z
		dec	Reg+0
	com	Reg+0
	endm
;==========================================;
iadd	macro	dReg,sReg
	mov	a,sReg+1
	add	dReg+1,a
	jbc	status,c
		inc	dReg+0
	mov	a,sReg
	add	dReg+0,a
	endm
;==========================================;
isub	macro	dReg,sReg
	ineg	dReg
	iadd	dReg,sReg
	endm
;==========================================;
jnz	macro	Reg
	mov	Reg,Reg
	jbc	status,z
	endm
;==========================================;
jez	macro	Reg
	mov	Reg,Reg
	jbs	status,z
	endm
;==========================================;
ijnz	macro	Reg
	mov	a,Reg+1
	or	a,Reg
	jbc	status,z
	endm
;==========================================;
je	macro	sReg1,sReg2				 ;相等 
	mov	a,sReg1
	xor	a,sReg2
	jbs	status,z
	endm
;==========================================;
je	macro	Reg,@Value
	mov	a,@Value
	xor	a,Reg
	jbs	status,z
	endm	
;==========================================;
jne	macro	sReg1,sReg2				;不相等 
	mov	a,sReg1
	xor	a,sReg2
	jbc	status,z
	endm
;==========================================;
jne	macro	sReg,@Value				;<>Const
	mov	a,@Value
	xor	a,sReg
	jbc	status,z
	endm
;==========================================;
ije	macro	Reg1,Reg2
	mov	a,Reg2+1
	xor	a,Reg1+1
	jbs	status,z
		jmp	$+4
	mov	a,Reg2+0
	xor	a,Reg1+0
	jbs	status,z		
	endm
;==========================================;
ijne	macro	Reg1,Reg2
	mov	a,Reg2+1
	xor	a,Reg1+1
	jbs	status,z
		jmp	$+5
	mov	a,Reg2+0
	xor	a,Reg1+0
	jbc	status,z
	endm
;==========================================;
jh	macro	Reg1,Reg2				   ;Reg1>Reg2?
	mov	a,Reg2		
	sub	a,Reg1
	jbs	status,c
	endm
;==========================================;
jl	macro	Reg1,Reg2				   ;Reg1<Reg2?
	mov	a,Reg1
	sub	a,Reg2
	jbs	status,c
	endm
;==========================================;
jl	macro	Reg,@Value				  ;Reg<=@Value?
	mov	a,@Value
	sub	a,Reg
	jbc	status,c
	endm
;==========================================;
Table	macro	Reg
	mov	a,Reg
	add	pc,a
	endm

;==========================================;
mov	macro	Reg1,@Value
	mov	a,@Value
	mov	Reg1,a
	endm
;==========================================;
mov	macro	Reg1,Reg2
	if	Reg1 != Reg2
		mov	a,Reg2
		mov	Reg1,a
	endif
	endm
;==========================================;
contw  macro	@Value
	mov	a,@Value
	contw
	endm
;==========================================;
sub	macro	Reg1,@Value
	mov	a,@Value
	sub	Reg1,a
	endm
;==========================================;
sub	macro	Reg1,Reg2
	mov	a,Reg2
	sub	Reg1,a
	endm
;==========================================;
or	macro	Reg1,@Value
	mov	a,@Value
	or	Reg1,a
	endm
;==========================================;
or	macro	Reg1,Reg2
	mov	a,Reg2
	or	Reg1,a
	endm
;==========================================;
and	macro	Reg1,@Value
	mov	a,@Value
	and	Reg1,a
	endm
;==========================================;
and	macro	Reg1,Reg2
	mov	a,Reg2
	and	Reg1,a
	endm
;==========================================;
xor	macro	Reg1,@Value
	mov	a,@Value
	xor	Reg1,a
	endm
;==========================================;
xor	macro	Reg1,Reg2
	mov	a,Reg2
	xor	Reg1,a
	endm
;==========================================;
add	macro	Reg1,Reg2
	mov	a,Reg2
	add	Reg1,a
	endm	
;==========================================;
add	macro	Reg,@Value
	mov	a,@Value
	add	Reg,a
	endm
;==========================================;
	END
;==========================================;
;==========================================;
;==========================================;
;==========================================;
;=================================

⌨️ 快捷键说明

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