📄 receive.lst
字号:
_halSpiWriteBurstReg:
temp --> R20
i --> R22
count --> R10
buffer --> R12
addr --> R20
00C8 D1A7 RCALL push_gset4
00C9 0169 MOVW R12,R18
00CA 2F40 MOV R20,R16
00CB 84A8 LDD R10,Y+8
(0254) }
(0255)
(0256) //*****************************************************************************************
(0257) //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
(0258) //输入:地址,写入缓冲区,写入个数
(0259) //输出:无
(0260) //功能描述:SPI连续写配置寄存器
(0261) //*****************************************************************************************
(0262) void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
(0263) {
(0264) INT8U i, temp;
(0265) temp = addr | WRITE_BURST;
00CC 6440 ORI R20,0x40
(0266) CSN_0;
00CD 98C2 CBI 0x18,2
(0267) while (GDO0);
00CE 9982 SBIC 0x10,2
00CF CFFE RJMP 0x00CE
(0268) SpiTxRxByte(temp);
00D0 2F04 MOV R16,R20
00D1 DFB7 RCALL _SpiTxRxByte
(0269) for (i = 0; i < count; i++)
00D2 2766 CLR R22
00D3 C007 RJMP 0x00DB
(0270) {
(0271) SpiTxRxByte(buffer[i]);
00D4 2FE6 MOV R30,R22
00D5 27FF CLR R31
00D6 0DEC ADD R30,R12
00D7 1DFD ADC R31,R13
00D8 8100 LDD R16,Z+0
00D9 DFAF RCALL _SpiTxRxByte
00DA 9563 INC R22
00DB 156A CP R22,R10
00DC F3B8 BCS 0x00D4
(0272) }
(0273) CSN_1;
00DD 9AC2 SBI 0x18,2
00DE D18D RCALL pop_gset4
00DF 9508 RET
_halSpiStrobe:
strobe --> R20
00E0 D195 RCALL push_gset1
00E1 2F40 MOV R20,R16
(0274) }
(0275)
(0276) //*****************************************************************************************
(0277) //函数名:void halSpiStrobe(INT8U strobe)
(0278) //输入:命令
(0279) //输出:无
(0280) //功能描述:SPI写命令
(0281) //*****************************************************************************************
(0282) void halSpiStrobe(INT8U strobe)
(0283) {
(0284) CSN_0;
00E2 98C2 CBI 0x18,2
(0285) while (GDO0);
00E3 9982 SBIC 0x10,2
00E4 CFFE RJMP 0x00E3
(0286) SpiTxRxByte(strobe); //写入命令
00E5 2F04 MOV R16,R20
00E6 DFA2 RCALL _SpiTxRxByte
(0287) CSN_1;
00E7 9AC2 SBI 0x18,2
00E8 D190 RCALL pop_gset1
00E9 9508 RET
_halSpiReadReg:
value --> R20
temp --> R22
addr --> R20
00EA D189 RCALL push_gset2
00EB 2F40 MOV R20,R16
(0288) }
(0289)
(0290)
(0291)
(0292)
(0293)
(0294) //*****************************************************************************************
(0295) //函数名:INT8U halSpiReadReg(INT8U addr)
(0296) //输入:地址
(0297) //输出:该寄存器的配置字
(0298) //功能描述:SPI读寄存器
(0299) //*****************************************************************************************
(0300) INT8U halSpiReadReg(INT8U addr)
(0301) {
(0302) INT8U temp, value;
(0303) temp = addr|READ_SINGLE;//读寄存器命令
00EC 2F64 MOV R22,R20
00ED 6860 ORI R22,0x80
(0304) CSN_0;
00EE 98C2 CBI 0x18,2
(0305) while (GDO0);
00EF 9982 SBIC 0x10,2
00F0 CFFE RJMP 0x00EF
(0306) SpiTxRxByte(temp);
00F1 2F06 MOV R16,R22
00F2 DF96 RCALL _SpiTxRxByte
(0307) value = SpiTxRxByte(0);
00F3 2700 CLR R16
00F4 DF94 RCALL _SpiTxRxByte
00F5 2F40 MOV R20,R16
(0308) CSN_1;
00F6 9AC2 SBI 0x18,2
(0309) return value;
00F7 D172 RCALL pop_gset2
00F8 9508 RET
_halSpiReadBurstReg:
temp --> R20
i --> R22
count --> R10
buffer --> R12
addr --> R20
00F9 D176 RCALL push_gset4
00FA 0169 MOVW R12,R18
00FB 2F40 MOV R20,R16
00FC 84A8 LDD R10,Y+8
(0310) }
(0311)
(0312)
(0313) //*****************************************************************************************
(0314) //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
(0315) //输入:地址,读出数据后暂存的缓冲区,读出配置个数
(0316) //输出:无
(0317) //功能描述:SPI连续写配置寄存器
(0318) //*****************************************************************************************
(0319) void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
(0320) {
(0321) INT8U i,temp;
(0322) temp = addr | READ_BURST; //写入要读的配置寄存器地址和读命令
00FD 6C40 ORI R20,0xC0
(0323) CSN_0;
00FE 98C2 CBI 0x18,2
(0324) while (GDO0);
00FF 9982 SBIC 0x10,2
0100 CFFE RJMP 0x00FF
(0325) SpiTxRxByte(temp);
0101 2F04 MOV R16,R20
0102 DF86 RCALL _SpiTxRxByte
(0326) for (i = 0; i < count; i++)
0103 2766 CLR R22
0104 C008 RJMP 0x010D
(0327) {
(0328) buffer[i] = SpiTxRxByte(0);
0105 2700 CLR R16
0106 DF82 RCALL _SpiTxRxByte
0107 2FE6 MOV R30,R22
0108 27FF CLR R31
0109 0DEC ADD R30,R12
010A 1DFD ADC R31,R13
010B 8300 STD Z+0,R16
010C 9563 INC R22
010D 156A CP R22,R10
010E F3B0 BCS 0x0105
(0329) }
(0330) CSN_1;
010F 9AC2 SBI 0x18,2
0110 D15B RCALL pop_gset4
0111 9508 RET
_halSpiReadStatus:
temp --> R20
value --> R22
addr --> R20
0112 D161 RCALL push_gset2
0113 2F40 MOV R20,R16
(0331) }
(0332)
(0333)
(0334) //*****************************************************************************************
(0335) //函数名:INT8U halSpiReadReg(INT8U addr)
(0336) //输入:地址
(0337) //输出:该状态寄存器当前值
(0338) //功能描述:SPI读状态寄存器
(0339) //*****************************************************************************************
(0340) INT8U halSpiReadStatus(INT8U addr)
(0341) {
(0342) INT8U value,temp;
(0343) temp = addr | READ_BURST; //写入要读的状态寄存器的地址同时写入读命令
0114 6C40 ORI R20,0xC0
(0344) CSN_0;
0115 98C2 CBI 0x18,2
(0345) while (GDO0);
0116 9982 SBIC 0x10,2
0117 CFFE RJMP 0x0116
(0346) SpiTxRxByte(temp);
0118 2F04 MOV R16,R20
0119 DF6F RCALL _SpiTxRxByte
(0347) value = SpiTxRxByte(0);
011A 2700 CLR R16
011B DF6D RCALL _SpiTxRxByte
011C 2F60 MOV R22,R16
(0348) CSN_1;
011D 9AC2 SBI 0x18,2
(0349) return value;
011E D14B RCALL pop_gset2
011F 9508 RET
(0350) }
(0351)
(0352)
(0353) //*****************************************************************************************
(0354) //函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
(0355) //输入:无
(0356) //输出:无
(0357) //功能描述:配置CC1100的寄存器
(0358) //*****************************************************************************************
(0359) void halRfWriteRfSettings(void)
(0360) {
(0361) //halSpiWriteReg(CCxxx0_FIFOTHR,0x09);
(0362) //halSpiWriteReg(CCxxx0_MCSM1,0x00); //CCA,没有作通
(0363) halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL2);//自已加的
_halRfWriteRfSettings:
0120 E2E6 LDI R30,0x26
0121 E0F0 LDI R31,0
0122 9124 LPM R18,0(Z)
0123 E00C LDI R16,0xC
0124 DF96 RCALL _halSpiWriteReg
(0364) // Write register settings
(0365) halSpiWriteReg(CCxxx0_FSCTRL1, rfSettings.FSCTRL1);
0125 E2E7 LDI R30,0x27
0126 E0F0 LDI R31,0
0127 9124 LPM R18,0(Z)
0128 E00B LDI R16,0xB
0129 DF91 RCALL _halSpiWriteReg
(0366) halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL0);
012A E2E8 LDI R30,0x28
012B E0F0 LDI R31,0
012C 9124 LPM R18,0(Z)
012D E00C LDI R16,0xC
012E DF8C RCALL _halSpiWriteReg
(0367) halSpiWriteReg(CCxxx0_FREQ2, rfSettings.FREQ2);
012F E2E9 LDI R30,0x29
0130 E0F0 LDI R31,0
0131 9124 LPM R18,0(Z)
0132 E00D LDI R16,0xD
0133 DF87 RCALL _halSpiWriteReg
(0368) halSpiWriteReg(CCxxx0_FREQ1, rfSettings.FREQ1);
0134 E2EA LDI R30,0x2A
0135 E0F0 LDI R31,0
0136 9124 LPM R18,0(Z)
0137 E00E LDI R16,0xE
0138 DF82 RCALL _halSpiWriteReg
(0369) halSpiWriteReg(CCxxx0_FREQ0, rfSettings.FREQ0);
0139 E2EB LDI R30,0x2B
013A E0F0 LDI R31,0
013B 9124 LPM R18,0(Z)
013C E00F LDI R16,0xF
013D DF7D RCALL _halSpiWriteReg
(0370) halSpiWriteReg(CCxxx0_MDMCFG4, rfSettings.MDMCFG4);
013E E2EC LDI R30,0x2C
013F E0F0 LDI R31,0
0140 9124 LPM R18,0(Z)
0141 E100 LDI R16,0x10
0142 DF78 RCALL _halSpiWriteReg
(0371) halSpiWriteReg(CCxxx0_MDMCFG3, rfSettings.MDMCFG3);
0143 E2ED LDI R30,0x2D
0144 E0F0 LDI R31,0
0145 9124 LPM R18,0(Z)
0146 E101 LDI R16,0x11
0147 DF73 RCALL _halSpiWriteReg
(0372) halSpiWriteReg(CCxxx0_MDMCFG2, rfSettings.MDMCFG2);
0148 E2EE LDI R30,0x2E
0149 E0F0 LDI R31,0
014A 9124 LPM R18,0(Z)
014B E102 LDI R16,0x12
014C DF6E RCALL _halSpiWriteReg
(0373) halSpiWriteReg(CCxxx0_MDMCFG1, rfSettings.MDMCFG1);
014D E2EF LDI R30,0x2F
014E E0F0 LDI R31,0
014F 9124 LPM R18,0(Z)
0150 E103 LDI R16,0x13
0151 DF69 RCALL _halSpiWriteReg
(0374) halSpiWriteReg(CCxxx0_MDMCFG0, rfSettings.MDMCFG0);
0152 E3E0 LDI R30,0x30
0153 E0F0 LDI R31,0
0154 9124 LPM R18,0(Z)
0155 E104 LDI R16,0x14
0156 DF64 RCALL _halSpiWriteReg
(0375) halSpiWriteReg(CCxxx0_CHANNR, rfSettings.CHANNR);
0157 E3E1 LDI R30,0x31
0158 E0F0 LDI R31,0
0159 9124 LPM R18,0(Z)
015A E00A LDI R16,0xA
015B DF5F RCALL _halSpiWriteReg
(0376) halSpiWriteReg(CCxxx0_DEVIATN, rfSettings.DEVIATN);
015C E3E2 LDI R30,0x32
015D E0F0 LDI R31,0
015E 9124 LPM R18,0(Z)
015F E105 LDI R16,0x15
0160 DF5A RCALL _halSpiWriteReg
(0377) halSpiWriteReg(CCxxx0_FREND1, rfSettings.FREND1);
0161 E3E3 LDI R30,0x33
0162 E0F0 LDI R31,0
0163 9124 LPM R18,0(Z)
0164 E201 LDI R16,0x21
0165 DF55 RCALL _halSpiWriteReg
(0378) halSpiWriteReg(CCxxx0_FREND0, rfSettings.FREND0);
0166 E3E4 LDI R30,0x34
0167 E0F0 LDI R31,0
0168 9124 LPM R18,0(Z)
0169 E202 LDI R16,0x22
016A DF50 RCALL _halSpiWriteReg
(0379) halSpiWriteReg(CCxxx0_MCSM0 , rfSettings.MCSM0 );
016B E3E5 LDI R30,0x35
016C E0F0 LDI R31,0
016D 9124 LPM R18,0(Z)
016E E108 LDI R16,0x18
016F DF4B RCALL _halSpiWriteReg
(0380) halSpiWriteReg(CCxxx0_FOCCFG, rfSettings.FOCCFG);
0170 E3E6 LDI R30,0x36
0171 E0F0 LDI R31,0
0172 9124 LPM R18,0(Z)
0173 E109 LDI R16,0x19
0174 DF46 RCALL _halSpiWriteReg
(0381) halSpiWriteReg(CCxxx0_BSCFG, rfSettings.BSCFG);
0175 E3E7 LDI R30,0x37
0176 E0F0 LDI R31,0
0177 9124 LPM R18,0(Z)
0178 E10A LDI R16,0x1A
0179 DF41 RCALL _halSpiWriteReg
(0382) halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
017A E3E8 LDI R30,0x38
017B E0F0 LDI R31,0
017C 9124 LPM R18,0(Z)
017D E10B LDI R16,0x1B
017E DF3C RCALL _halSpiWriteReg
(0383) halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
017F E3E9 LDI R30,0x39
0180 E0F0 LDI R31,0
0181 9124 LPM R18,0(Z)
0182 E10C LDI R16,0x1C
0183 DF37 RCALL _halSpiWriteReg
(0384) halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
0184 E3EA LDI R30,0x3A
0185 E0F0 LDI R31,0
0186 9124 LPM R18,0(Z)
0187 E10D LDI R16,0x1D
0188 DF32 RCALL _halSpiWriteReg
(0385) halSpiWriteReg(CCxxx0_FSCAL3, rfSettings.FSCAL3);
0189 E3EB LDI R30,0x3B
018A E0F0 LDI R31,0
018B 9124 LPM R18,0(Z)
018C E203 LDI R16,0x23
018D DF2D RCALL _halSpiWriteReg
(0386) halSpiWriteReg(CCxxx0_FSCAL2, rfSettings.FSCAL2);
018E E3EC LDI R30,0x3C
018F E0F0 LDI R31,0
0190 9124 LPM R18,0(Z)
0191 E204 LDI R16,0x24
0192 DF28 RCALL _halSpiWriteReg
(0387) halSpiWriteReg(CCxxx0_FSCAL1, rfSettings.FSCAL1);
0193 E3ED LDI R30,0x3D
0194 E0F0 LDI R31,0
0195 9124 LPM R18,0(Z)
0196 E205 LDI R16,0x25
0197 DF23 RCALL _halSpiWriteReg
(0388) halSpiWriteReg(CCxxx0_FSCAL0, rfSettings.FSCAL0);
0198 E3EE LDI R30,0x3E
0199 E0F0 LDI R31,0
019A 9124 LPM R18,0(Z)
019B E206 LDI R16,0x26
019C DF1E RCALL _halSpiWriteReg
(0389) halSpiWriteReg(CCxxx0_FSTEST, rfSettings.FSTEST);
019D E3EF LDI R30,0x3F
019E E0F0 LDI R31,0
019F 9124 LPM R18,0(Z)
01A0 E209 LDI R16,0x29
01A1 DF19 RCALL _halSpiWriteReg
(0390) halSpiWriteReg(CCxxx0_TEST2, rfSettings.TEST2);
01A2 E4E0 LDI R30,0x40
01A3 E0F0 LDI R31,0
01A4 9124 LPM R18,0(Z)
01A5 E20C LDI R16,0x2C
01A6 DF14 RCALL _halSpiWriteReg
(0391) halSpiWriteReg(CCxxx0_TEST1, rfSettings.TEST1);
01A7 E4E1 LDI R30,0x41
01A8 E0F0 LDI R31,0
01A9 9124 LPM R18,0(Z)
01AA E20D LDI R16,0x2D
01AB DF0F RCALL _halSpiWriteReg
(0392) halSpiWriteReg(CCxxx0_TEST0, rfSettings.TEST0);
01AC E4E2 LDI R30,0x42
01AD E0F0 LDI R31,0
01AE 9124 LPM R18,0(Z)
01AF E20E LDI R16,0x2E
01B0 DF0A RCALL _halSpiWriteReg
(0393) halSpiWriteReg(CCxxx0_IOCFG2, rfSettings.IOCFG2);
01B1 E4E3 LDI R30,0x43
01B2 E0F0 LDI R31,0
01B3 9124 LPM R18,0(Z)
01B4 2700 CLR R16
01B5 DF05 RCALL _halSpiWriteReg
(0394) halSpiWriteReg(CCxxx0_IOCFG0, rfSettings.IOCFG0);
01B6 E4E4 LDI R30,0x44
01B7 E0F0 LDI R31,0
01B8 9124 LPM R18,0(Z)
01B9 E002 LDI R16,2
01BA DF00 RCALL _halSpiWriteReg
(0395) halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);
01BB E4E5 LDI R30,0x45
01BC E0F0 LDI R31,0
01BD 9124 LPM R18,0(Z)
01BE E007 LDI R16,7
01BF DEFB RCALL _halSpiWriteReg
(0396) halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);
01C0 E4E6 LDI R30,0x46
01C1 E0F0 LDI R31,0
01C2 9124 LPM R18,0(Z)
01C3 E008 LDI R16,0x8
01C4 DEF6 RCALL _halSpiWriteReg
(0397) halSpiWriteReg(CCxxx0_ADDR, rfSettings.ADDR);
01C5 E4E7 LDI R30,0x47
01C6 E0F0 LDI R31,0
01C7 9124 LPM R18,0(Z)
01C8 E009 LDI R16,0x9
01C9 DEF1 RCALL _halSpiWriteReg
(0398) halSpiWriteReg(CCxxx0_PKTLEN, rfSettings.PKTLEN);
01CA E4E8 LDI R30,0x48
01CB E0F0 LDI R31,0
01CC 9124 LPM R18,0(Z)
01CD E006 LDI R16,6
01CE DEEC RCALL _halSpiWriteReg
01CF 9508 RET
_halRfSendPacket:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -