📄 cc2500.asm.bak
字号:
lds R_Delay,2;
call F_DelxxUS;
rts;
;*********************************************************************
;F: Function Name: F_DelxxUs.
;F: Input:
;F: R_Delay.
;F:
;F:
;*********************************************************************
F_DelxxUS:
nop;
nop;
nop;
nop;
nop;
dec* R_Delay;
jnz F_DelxxUS;
rts;
;*********************************************************************
;F: Function Name: F_CC2500WRStrobe.
;F: Input:
;F: R_ParLow,R_ParHigh.
;F: Output:
;F: None:
;F:
;**********************************************************************
F_CC2500WRStrobe:
andi* R_PortA,D_NCSn;
opa R_PortA;
L_WaitSOLO00:
ipb R_WrkReg1;
jb3 L_WaitSOLO00;
call F_WRCC2500Bit;
call F_WRCC2500_REG_Addr;
lds R_Delay,10;
call F_DelxxUS;
ori* R_PortA,D_CSn;
opa R_PortA;
rts;
;***********************************************************************
;F: Function Name: F_WRCC2500Bit.
;F:
;F: 送出一位写信号位。
;F:
;F:
;************************************************************************
F_WRCC2500Bit:
andi* R_PortA,D_NSI;
opa R_PortA;
nop;
nop;
nop;
nop;
ori* R_PortA,D_SCLK;
opa R_PortA;
nop;
nop;
andi* R_PortA,D_NSCLK;
opa R_PortA;
rts;
;************************************************************************
;F: Function Name: F_RDCC2500Bit.
;F:
;F: 送出一位读信号位。
;F:
;F:
;F:
;*************************************************************************
F_RDCC2500Bit:
ori* R_PortA,D_SI;
opa R_PortA;
nop;
nop;
nop;
nop;
ori* R_PortA,D_SCLK;
opa R_PortA;
nop;
nop;
andi* R_PortA,D_NSCLK;
opa R_PortA;
rts;
;*************************************************************************
;F: Function Name: F_WRCC2500_REG_Addr.
;F:
;F: Write 7bit register address.
;F:
;F:
;*************************************************************************
F_WRCC2500_REG_Addr:
lds R_cc2500Count,7;
lda R_ParLow;
add* R_ParLow;
lda R_ParHigh;
adc* R_ParHigh;
L_LoopWR00:
lda R_ParLow;
add* R_ParLow;
lda R_ParHigh;
adc* R_ParHigh;
jc L_WRHi00;
L_WRLo00:
andi* R_PortA,D_NSI;
opa R_PortA;
jmp L_WRClk00;
L_WRHi00:
ori* R_PortA,D_SI;
opa R_PortA;
L_WRClk00:
nop;
nop;
nop;
nop;
ori* R_PortA,D_SCLK;
opa R_PortA;
nop;
nop;
andi* R_PortA,D_NSCLK;
opa R_PortA;
dec* R_cc2500Count;
jnz L_LoopWR00;
andi* R_PortA,D_NSI;
opa R_PortA;
rts;
;**************************************************************************
;F: Function Name: F_WRCC2500_ABYTE.
;F: Write 8bit data to register.
;F:
;F: Input:
;F: R_ParLow,R_ParHigh.
;F:
;**************************************************************************
F_WRCC2500_ABYTE:
lds R_cc2500Count,8;
L_LoopWR02:
lda R_ParLow;
add* R_ParLow;
lda R_ParHigh;
adc* R_ParHigh;
jnc L_WRLO02;
L_WRHi02:
ori* R_PortA,D_SI;
opa R_PortA;
jmp L_Clk02;
L_WRLO02:
andi* R_PortA,D_NSI;
opa R_PortA;
L_Clk02:
nop;
nop;
nop;
nop;
ori* R_PortA,D_SCLK;
opa R_PortA;
nop;
nop;
andi* R_PortA,D_NSCLK;
opa R_PortA;
dec* R_cc2500Count;
jnz L_LoopWR02;
andi* R_PortA,D_NSI;
opa R_PortA;
rts;
;**********************************************************************
;F: Function Name: F_ReadCC2500AByte.
;F:
;F:
;F:
;F:
;***********************************************************************
F_ReadCC2500AByte:
lds R_ParLow,0;
lds R_ParHigh,0;
lds R_cc2500Count,8;
L_LoopRdByte:
ipb R_WrkReg1;
jb3 L_RdCC2500Hi
L_RdCC2500Lo:
lds R_WrkReg1,0;
mra R_WrkReg1;
jmp L_RdClk;
;======================================
;======================================
L_RdCC2500Hi:
lds R_WrkReg1,1000b;
mra R_WrkReg1;
L_RdClk:
lda R_ParLow;
adc* R_ParLow;
lda R_ParHigh;
adc* R_ParHigh;
ori* R_PortA,D_SCLK;
opa R_PortA;
nop;
nop;
andi* R_PortA,D_NSCLK;
opa R_PortA;
dec* R_cc2500Count;
jnz L_LoopRdByte;
rts;
;*********************************************************************
;F: Function Name: F_SendRFCommand.
;F: Build Date:
;F: 2006/11/6.
;F:
;F:
;*********************************************************************
F_SendRFCommand:
lds R_ParLow,CMD_CC2500_SIDLE%16;
lds R_ParHigh,CMD_CC2500_SIDLE/16;
call F_CC2500WRStrobe;
lds R_Delay,4;
call F_DelxxUS;
lds R_ParLow,CMD_CC2500_SFTX%16;
lds R_ParHigh,CMD_CC2500_SFTX/16;
call F_CC2500WRStrobe;
call F_CfgChannel;
call F_CfgPKGLong;
;==============================================
;==============================================
;Write TX FIFO BUffer.
andi* R_PortA,D_NCSn;
opa R_PortA;
L_WaitSOLo07:
ipb R_WrkReg1;
jb3 L_WaitSOLo07;
call F_WRCC2500Bit;
lds R_ParLow,7FH%16;
lds R_ParHigh,7FH/16;
call F_WRCC2500_REG_Addr; packet long register.
;ipd R_WrkReg1;
lds R_WrkReg1,4;
sta R_ParLow;
lds R_ParHigh,0;
call F_WRCC2500_ABYTE; 地址值。
lda R_SendCommandLo;
sta R_ParLow;
lda R_SendCommandHi;
sta R_ParHigh;
call F_WRCC2500_ABYTE;
lds R_ParLow,55h%16;
lds R_ParHigh,55h/16;
call F_WRCC2500_ABYTE;
lds R_ParLow,0aah%16;
lds R_ParHigh,0aah/16;
call F_WRCC2500_ABYTE;
ori* R_PortA,D_CSn;
opa R_PortA;
lds R_ParLow,CMD_CC2500_STX%16;
lds R_ParHigh,CMD_CC2500_STX/16;
call F_CC2500WRStrobe;
L_SendRFCMDRet:
rts;
;**********************************************************************
;F: Function Name: F_ReadCC2500Reg.
;F:
;F:
;F:
;F:
;**********************************************************************
F_ReadCC2500Reg:
andi* R_PortA,D_NCSn;
opa R_PortA;
L_WaitSOLO10:
ipb R_WrkReg1;
jb3 L_WaitSOLO10;
call F_RDCC2500Bit;
lda R_RdAddrLow;
sta R_ParLow;
lda R_RdAddrHigh;
sta R_ParHigh;
call F_WRCC2500_REG_Addr;
call F_ReadCC2500AByte;
ori* R_PortA,D_CSn;
opa R_PortA;
rts;
;**********************************************************************
;F: Function Name: F_CfgPKGLong.
;F:
;F:
;F:
;F:********************************************************************
F_CfgPKGLong:
andi* R_PortA,D_NCSn;
opa R_PortA;
L_WaitSOLo05:
ipb R_WrkReg1;
jb3 L_WaitSOLo05;
call F_WRCC2500Bit;
lds R_ParLow,06h;
lds R_ParHigh,0;
call F_WRCC2500_REG_Addr; packet long register.
lds R_ParLow,4;
lds R_ParHigh,0;
call F_WRCC2500_ABYTE;
ori* R_PortA,D_CSn;
opa R_PortA;
rts;
;**********************************************************************
;F: Function Name: F_CfgChannel.
;F:
;F:
;F:
;F:
;**********************************************************************
F_CfgChannel:
andi* R_PortA,D_NCSn;
opa R_PortA;
L_WaitSOLo06:
ipb R_WrkReg1;
jb3 L_WaitSOLo06;
call F_WRCC2500Bit;
lds R_ParLow,0ah;
lds R_ParHigh,0;
call F_WRCC2500_REG_Addr;
;ipd R_WrkReg1;
lds R_WrkReg1,2;
sta R_ParLow;
lds R_ParHigh,0;
call F_WRCC2500_ABYTE;
ori* R_PortA,D_CSn;
opa R_PortA;
rts;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -