📄 cc1100.lis
字号:
0248 L72:
0248 L73:
0248 4F5F subi R20,255 ; offset = 1
024A 5F4F sbci R21,255
024C L75:
024C ; for(i=0;i<100;i++);
024C 4436 cpi R20,100
024E E0E0 ldi R30,0
0250 5E07 cpc R21,R30
0252 D0F3 brlo L72
0254 ; SET_CSN();
0254 EDDE xcall _SET_CSN
0256 4427 clr R20
0258 5527 clr R21
025A 02C0 xjmp L79
025C L76:
025C L77:
025C 4F5F subi R20,255 ; offset = 1
025E 5F4F sbci R21,255
0260 L79:
0260 ; for(i=0;i<2000;i++);
0260 403D cpi R20,208
0262 E7E0 ldi R30,7
0264 5E07 cpc R21,R30
0266 D0F3 brlo L76
0268 ; CLEAR_CSN();
0268 E5DE xcall _CLEAR_CSN
026A L80:
026A L81:
026A ; while(GET_OUT());
026A E6DE xcall _GET_OUT
026C 0030 cpi R16,0
026E 0107 cpc R16,R17
0270 E1F7 brne L80
0272 X4:
0272 ; halSpiStrobe(CCxxx0_SRES);
0272 00E3 ldi R16,48
0274 A2DF xcall _halSpiStrobe
0276 ; CLEAR_CLOCK();
0276 CADE xcall _CLEAR_CLOCK
0278 ; CLEAR_IN();
0278 D5DE xcall _CLEAR_IN
027A ; SET_CSN();
027A DADE xcall _SET_CSN
027C L67:
027C 0E940000 xcall pop_gset1
0280 .dbline 0 ; func end
0280 0895 ret
0282 ; size -> R22
0282 ; txBuffer -> R20,R21
.even
0282 _halRfSendPacket::
0282 0E940000 xcall push_gset2
0286 622F mov R22,R18
0288 A801 movw R20,R16
028A 2197 sbiw R28,1
028C ; }
028C ; /*******************************************/
028C ; unsigned char halRfSendPacket(unsigned char *txBuffer, unsigned char size)
028C ; {
028C ; halSpiStrobe(CCxxx0_SFTX);
028C 0BE3 ldi R16,59
028E 95DF xcall _halSpiStrobe
0290 ; Dly1mS(15);
0290 0FE0 ldi R16,15
0292 10E0 ldi R17,0
0294 F4DE xcall _Dly1mS
0296 ; //Dly1mS(25);
0296 ; halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);
0296 6883 std y+0,R22
0298 9A01 movw R18,R20
029A 0FE7 ldi R16,127
029C 9FDF xcall _halSpiWriteBurstReg
029E ; Dly1mS(15);
029E 0FE0 ldi R16,15
02A0 10E0 ldi R17,0
02A2 EDDE xcall _Dly1mS
02A4 ; //Dly1mS(25);
02A4 ; halSpiStrobe(CCxxx0_STX);
02A4 05E3 ldi R16,53
02A6 89DF xcall _halSpiStrobe
02A8 03C0 xjmp L85
02AA L84:
02AA 01E0 ldi R16,1
02AC 10E0 ldi R17,0
02AE E7DE xcall _Dly1mS
02B0 L85:
02B0 ; while(spiGetRxTxStatus()&0x70)
02B0 5DDF xcall _spiGetRxTxStatus
02B2 802F mov R24,R16
02B4 8077 andi R24,112
02B6 C9F7 brne L84
02B8 ; {
02B8 ; Dly1mS(1);
02B8 ; //Dly1mS(2);
02B8 ; }
02B8 ; SEND_DONE=0x01;
02B8 81E0 ldi R24,1
02BA 80930800 sts _SEND_DONE,R24
02BE ; return 0;
02BE 0027 clr R16
02C0 L83:
02C0 2196 adiw R28,1
02C2 0E940000 xcall pop_gset2
02C6 .dbline 0 ; func end
02C6 0895 ret
02C8 ; value -> R20
02C8 ; addr -> R20
.even
02C8 _halSpiReadReg::
02C8 0E940000 xcall push_gset1
02CC 402F mov R20,R16
02CE ; }// halRfSendPacket
02CE ; /*******************************************/
02CE ; /*
02CE ; void TxCCxx00()
02CE ; {
02CE ; unsigned char i;
02CE ; halSpiWriteReg(CCxxx0_FREND0, 0x10); //CC1100:POWER=10DBM;CC2500:1DBM
02CE ; Dly1mS(25);;
02CE ; for(i=0;i<4;i++) //发四次
02CE ; {
02CE ; halRfSendPacket(txBuffer_CCxx00, sizeof(txBuffer_CCxx00));
02CE ; Dly1mS(50);
02CE ; }
02CE ; halSpiWriteReg(CCxxx0_FREND0, 0x15); //CC1100太近会收不到,将发射功率降低到-10DBM //#define CCxxx0_FREND0 0x22
02CE ; Dly1mS(50);
02CE ; halRfSendPacket(txBuffer_CCxx00, sizeof(txBuffer_CCxx00));
02CE ; Dly1mS(100);
02CE ; }
02CE ; */
02CE ; /*********************************************************/
02CE ; unsigned char halSpiReadReg(unsigned char addr)
02CE ; {
02CE ; unsigned char value;
02CE ; CLEAR_CLOCK();
02CE 9EDE xcall _CLEAR_CLOCK
02D0 ; Dly10us();Dly10us();
02D0 C6DE xcall _Dly10us
02D2 C5DE xcall _Dly10us
02D4 ; CLEAR_CSN(); // CSn=0
02D4 AFDE xcall _CLEAR_CSN
02D6 ; addr|=READ_SINGLE;
02D6 4068 ori R20,128
02D8 ; SPI_write(addr);
02D8 042F mov R16,R20
02DA F0DE xcall _SPI_write
02DC ; CLEAR_IN();
02DC A3DE xcall _CLEAR_IN
02DE ; Dly10us();Dly10us();Dly10us();Dly10us();Dly10us();
02DE BFDE xcall _Dly10us
02E0 BEDE xcall _Dly10us
02E2 BDDE xcall _Dly10us
02E4 BCDE xcall _Dly10us
02E6 BBDE xcall _Dly10us
02E8 ; value=0;
02E8 4427 clr R20
02EA ; value=SPI_read();
02EA 19DF xcall _SPI_read
02EC 402F mov R20,R16
02EE ; Dly10us();Dly10us();Dly10us();
02EE B7DE xcall _Dly10us
02F0 B6DE xcall _Dly10us
02F2 B5DE xcall _Dly10us
02F4 ; CLEAR_CLOCK();
02F4 8BDE xcall _CLEAR_CLOCK
02F6 ; CLEAR_IN();
02F6 96DE xcall _CLEAR_IN
02F8 ; SET_CSN(); // CSn=0 P_CSn=0;
02F8 9BDE xcall _SET_CSN
02FA ; return value;
02FA 042F mov R16,R20
02FC L87:
02FC 0E940000 xcall pop_gset1
0300 .dbline 0 ; func end
0300 0895 ret
0302 ; value -> R20
0302 ; i -> R22
0302 ; count -> R10
0302 ; buffer -> R12,R13
0302 ; addr -> R20
.even
0302 _halSpiReadBurstReg::
0302 0E940000 xcall push_gset4
0306 6901 movw R12,R18
0308 402F mov R20,R16
030A A884 ldd R10,y+8
030C ; }
030C ; /**************************************************/
030C ; void halSpiReadBurstReg(unsigned char addr, unsigned char *buffer, unsigned char count)
030C ; {
030C ; unsigned char i,value;
030C ; CLEAR_CLOCK();
030C 7FDE xcall _CLEAR_CLOCK
030E ; Dly10us();Dly10us();
030E A7DE xcall _Dly10us
0310 A6DE xcall _Dly10us
0312 ; CLEAR_CSN(); // CSn=0 P_CSn=0;
0312 90DE xcall _CLEAR_CSN
0314 ; addr|=READ_BURST;
0314 406C ori R20,192
0316 ; SPI_write(addr);
0316 042F mov R16,R20
0318 D1DE xcall _SPI_write
031A ; CLEAR_IN();
031A 84DE xcall _CLEAR_IN
031C ; Dly10us();Dly10us();Dly10us();Dly10us();Dly10us();
031C A0DE xcall _Dly10us
031E 9FDE xcall _Dly10us
0320 9EDE xcall _Dly10us
0322 9DDE xcall _Dly10us
0324 9CDE xcall _Dly10us
0326 ; value=0;
0326 4427 clr R20
0328 ; for(i=0;i<count;i++)
0328 6627 clr R22
032A 08C0 xjmp L92
032C L89:
032C F8DE xcall _SPI_read
032E 402F mov R20,R16
0330 E62F mov R30,R22
0332 FF27 clr R31
0334 EC0D add R30,R12
0336 FD1D adc R31,R13
0338 4083 std z+0,R20
033A L90:
033A 6395 inc R22
033C L92:
033C 6A15 cp R22,R10
033E B0F3 brlo L89
0340 ; {
0340 ; value=SPI_read();
0340 ; buffer[i]=value;
0340 ; }
0340 ; Dly10us();Dly10us();Dly10us();
0340 8EDE xcall _Dly10us
0342 8DDE xcall _Dly10us
0344 8CDE xcall _Dly10us
0346 ; CLEAR_CLOCK();
0346 62DE xcall _CLEAR_CLOCK
0348 ; CLEAR_IN();
0348 6DDE xcall _CLEAR_IN
034A ; SET_CSN(); // CSn=0 P_CSn=0;
034A 72DE xcall _SET_CSN
034C L88:
034C 0E940000 xcall pop_gset4
0350 .dbline 0 ; func end
0350 0895 ret
0352 ; rd_pin -> <dead>
0352 ; value -> R22
0352 ; addr -> R20
.even
0352 _halSpiReadStatus::
0352 0E940000 xcall push_gset2
0356 402F mov R20,R16
0358 ; }
0358 ; /**************************************************/
0358 ; unsigned char halSpiReadStatus(unsigned char addr)
0358 ; {
0358 ; unsigned char value,rd_pin;
0358 ; CLEAR_CSN(); // CSn=0 P_CSn=0;
0358 6DDE xcall _CLEAR_CSN
035A L94:
035A L95:
035A ; while(GET_OUT());
035A 6EDE xcall _GET_OUT
035C 0030 cpi R16,0
035E 0107 cpc R16,R17
0360 E1F7 brne L94
0362 X5:
0362 ; CLEAR_CLOCK(); //SCLK=0 //P_SCLK=0;
0362 54DE xcall _CLEAR_CLOCK
0364 ; addr|=READ_BURST;
0364 406C ori R20,192
0366 ; SPI_write(addr);
0366 042F mov R16,R20
0368 A9DE xcall _SPI_write
036A ; value=SPI_read();
036A D9DE xcall _SPI_read
036C 602F mov R22,R16
036E ; CLEAR_CLOCK(); //SCLK=0 //P_SCLK=0;
036E 4EDE xcall _CLEAR_CLOCK
0370 ; CLEAR_IN(); // SI=0 P_SI=0;
0370 59DE xcall _CLEAR_IN
0372 ; SET_CSN(); //CSn=1 P_CSn=1;
0372 5EDE xcall _SET_CSN
0374 ; return value;
0374 062F mov R16,R22
0376 L93:
0376 0E940000 xcall pop_gset2
037A .dbline 0 ; func end
037A 0895 ret
.even
037C _halRfWriteRfSettings::
037C ; }// halSpiReadStatus
037C ; /**************************************************/
037C ; void halRfWriteRfSettings()
037C ; {
037C L98:
037C ; l_setCC1100:
037C ; halSpiWriteReg(CCxxx0_FSCTRL1, 0x0C);
037C 2CE0 ldi R18,12
037E 0BE0 ldi R16,11
0380 07DF xcall _halSpiWriteReg
0382 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -