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

📄 recordertx.asm.bak

📁 cc2500的跳频发送程式,有需要的朋友可以参考一下哟
💻 BAK
字号:
;*********************************************************************
;P: Project Name:	recorderTX.
;P: Body:		TM8706+CC2500.
;P: Build Date:		2006/11/2.
;P: Version:		v1.0
;*********************************************************************
.CHIP TM8706
.data
	org	000h;
R_AddrCode	dn	1;
R_KeyWakeDel	dn	1;
D_KeyWakeDel	equ	6; 15.625ms x 6 =93.7ms.

R_TempAcc	dn	1;
R_TempStatus	dn	1;

R_TimerSendLo	dn	2;
R_TimerSendHi	equ	R_TimerSendLo+1;

D_TimerSendLo	equ	10;
D_TimerSendHi	equ	0;

R_SendCommandLo	dn	2;
R_SendCommandHi	equ	R_SendCommandLo+1;
D_ScanCommand	equ	0ffh;
D_K1Command	equ	01h;
D_K2Commnad	equ	02h;
D_K3Command	equ	04h;
D_K4Command	equ	08h;


R_Delay		dn	1;
R_cc2500WRBuf	dn	1;
R_cc2500Count	dn	1;

R_ParLow	dn	2;
R_ParHigh	equ	R_ParLow+1;

R_LoopSend	dn	1;

R_RdAddrLow	dn	2;
R_RdAddrHigh	equ	R_RdAddrLow+1;

R_TempWrk	dn	1;

	org	070h;
R_IntWrk	dn	1;Only use in interrupt for temp variay.


R_WrkReg1	dn	1;
R_WrkReg2	dn	2;
R_WrkReg3	dn	3;


R_Flags1	dn	1;
B_NormalStop	equ	0001b; 0: normal mode; 1: STOP Mode.
B_KeySend	equ	0010b;

R_KeyStep	dn	1;
D_ChkStep	equ	0;
D_DelStep	equ	1;
D_WaitStep	equ	2;
D_RelaseStep	equ	3;

R_KeyVal	dn	1;
D_K1Key		equ	1;
D_K2Key		equ	2;
D_K3Key		equ	4;
D_K4Key		equ	8;

R_PortA		dn	1;

;==================================================
;==================================================
;Define the constrant.
D_CSn		equ	0100b; PortA Bit3.
D_NCSn		equ	1011b; 
D_SCLK		equ	0010b; PortA Bit2.
D_NSCLK		equ	1101b;
D_SI		equ	0001b; PortA Bit1. cc2500 input port.
D_NSI		equ	1110b;

D_SO		equ	1000b; PortB bIT4. cc2500 output port.
D_NSO		equ	0111b;
D_LowBat	equ	0100b; PortB bit3.
D_NLowBat	equ	1011b;
D_GDO2		equ	0010b; PortB bit2. cc2500 GDO2 Port.
D_NGDO2		equ	1101b;
D_GDO1		equ	0001b; PortB Bit1. cc2500 GDO1 Port.
D_NGDO1		equ	1110b;

D_PreIntEnable	equ	00001000b; Enable the pre-divider interrupt.
D_Tmr1IntEnable	equ	00000010b; Enable the timer1 interrupt.


D_RFLED		equ	0001b;
D_LowBatLED	equ	0001b;
R_RFLEDBuf	equ	1;
R_LowBatLEDBuf	equ	2;

	.INCLUDE	cc2500.inc
.endd

;*************************************************************
;
.code
	org	000h;
	jmp	V_Reset;
	org	010h;
	jmp	V_IntPinInt;
	org	014h;
	jmp	V_IOC_DInt;
	org	018h;
	jmp	V_Tmr1Int;
	org	01ch;
	jmp	V_PreDiverInt;
	org	020h;
	jmp	V_Tmr2Int;
	org	024h;
	jmp	V_KeyMatrixInt;
	org	028h;
V_RFCInt:
V_IntPinInt:
V_IOC_DInt:
V_Tmr2Int:
V_KeyMatrixInt:
	rts;
;=============================================
;=============================================
V_Reset:
	fast;
	call	F_ClrAllRAM;
	call	F_InitalPort;
	call	F_InitalCC2500;
	
;	sie*	0;
;L_Loopssfd:	
;	lds	R_RdAddrLow,10;
;	lds	R_RdAddrHigh,0;
;	call	F_ReadCC2500Reg;
;	
;	nop;
;	nop;
;	jmp	L_Loopssfd
	
	
L_MainLoop:
	lda	R_KeyWakeDel;
	jz	L_EntryHalt;
	
	lda	R_KeyVal;
	jz	L_MainLoop;
	lds	R_LoopSend,1;3;
	ori*	R_Flags1,B_KeySend;
	lds	R_WrkReg1,0;
	lcp	R_RFLEDBuf,R_WrkReg1;
L_LoopKeySend:	
	lda	R_KeyVal;
	sta	R_SendCommandLo;
	lds	R_SendCommandHi,0;
	call	F_SendRFCommand;
	
	dec*	R_LoopSend;
	jnz	L_LoopKeySend;
	
	lds	R_WrkReg1,D_RFLED;
	lcp	R_RFLEDBuf,R_WrkReg1;
	andi*	R_Flags1,1101b;
	lds	R_KeyVal,0;
	lds	R_TimerSendLo,D_TimerSendLo;
	lds	R_TimerSendHi,D_TimerSendHi;
	jmp	L_MainLoop;
;=======================================
L_EntryHalt:
	sca	10h;
	rf	80h;
	ori*	R_Flags1,B_NormalStop;
	sie*	D_PreIntEnable;	
	halt;
	
	nop;
	nop;
	nop;
	lds	R_KeyStep,0;
	andi*	R_Flags1,1110b;
	lds	R_KeyWakeDel,D_KeyWakeDel;
	tmsx	001111111b;   15.625ms interrupt.
	sf	80h;          Enable the re-load function.
	sie*	D_Tmr1IntEnable+D_PreIntEnable;	
	jmp	L_MainLoop;
;*************************************************************
;V: Vector Name: V_Tmr1Int.
;V: Describe:
;V:   15.625ms Interrupt for key scan or delay time base.
;V:
;*************************************************************	
V_Tmr1Int:
	sta	R_TempAcc;
	maf	R_TempStatus;	
	mwr	R_TempWrk,R_WrkReg1;
		
	call	F_ScanKey;	
	lda	R_KeyWakeDel;
	jz	L_Tmr1IntRet;	
		
	dec*	R_KeyWakeDel;	
L_Tmr1IntRet:
	mrw	R_WrkReg1,R_TempWrk;
	mra	R_TempStatus;
	lda	R_TempAcc;		
	sie*	D_Tmr1IntEnable+D_PreIntEnable;	
	rts;	
;**************************************************************
;V: Vector name: V_PreDiverInt.
;V: Describe:
;V:	0.5S Interrupt for timer trammsist check signal.
;V:
;**************************************************************		
V_PreDiverInt:
	sta	R_TempAcc;
	maf	R_TempStatus;
	mwr	R_TempWrk,R_WrkReg1;

	call	F_ChkLowBatter;
	dec*	R_TimerSendLo;
	jc	L_PreIntRet;
	dec*	R_TimerSendHi;
	jc	L_PreIntRet;

	lds	R_TimerSendLo,D_TimerSendLo;
	lds	R_TimerSendHi,D_TimerSendHi;
	lda	R_Flags1;
	jb1	L_PreIntRet;  主程式正在发射中断不发射。
	
	lds	R_WrkReg1,0;
	lcp	R_RFLEDBuf,R_WrkReg1;
	lds	R_LoopSend,3;
L_LoopSendIs:	
	lds	R_IntWrk,D_ScanCommand%16;
	sta	R_SendCommandLo;
	lds	R_IntWrk,D_ScanCommand/16;
	sta	R_SendCommandHi;
	call	F_SendRFCommand;
	
	dec*	R_LoopSend;
	jnz	L_LoopSendIs;
	
	lds	R_WrkReg1,D_RFLED;
	lcp	R_RFLEDBuf,R_WrkReg1;
L_PreIntRet:
	lda	R_Flags1;
	jb0	L_STOPModeRet;
L_NormalModeRet:
	mrw	R_WrkReg1,R_TempWrk;
	mra	R_TempStatus;
	lda	R_TempAcc;
	sie*	D_Tmr1IntEnable+D_PreIntEnable;
	rts;
L_STOPModeRet:
	mrw	R_WrkReg1,R_TempWrk;
	mra	R_TempStatus;
	lda	R_TempAcc;
	sie*	D_PreIntEnable;
	rts;
;**************************************************************		
;The Inlude file.
	.INCLUDE	function.asm
	.INCLUDE	cc2500.asm	
	
.endc

;*************************************************************
;
.table


.endt

⌨️ 快捷键说明

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