📄 cc1100.lis
字号:
0166 ; RxTxstatus -> R20
.even
0166 _spiGetRxTxStatus::
0166 0E940000 xcall push_gset1
016A ; }
016A ; /******************************************/
016A ; unsigned char spiGetRxTxStatus()
016A ; {
016A ; unsigned char RxTxstatus;
016A ; CLEAR_CSN(); // CSn=0
016A AA98 cbi 0x15,2
016C L41:
016C L42:
016C ; while(GET_OUT());
016C 49DF xcall _GET_OUT
016E 0030 cpi R16,0
0170 0107 cpc R16,R17
0172 E1F7 brne L41
0174 X2:
0174 ; CLEAR_CLOCK();
0174 80916500 lds R24,101
0178 8E7F andi R24,254
017A 80936500 sts 101,R24
017E ; RxTxstatus=SPI_write(CCxxx0_SNOP);
017E 0DE3 ldi R16,61
0180 81DF xcall _SPI_write
0182 402F mov R20,R16
0184 ; CLEAR_CLOCK(); //SCLK=0
0184 80916500 lds R24,101
0188 8E7F andi R24,254
018A 80936500 sts 101,R24
018E ; CLEAR_IN(); // SI=0
018E 80916500 lds R24,101
0192 8D7F andi R24,253
0194 80936500 sts 101,R24
0198 ; SET_CSN(); //CSn=1
0198 AA9A sbi 0x15,2
019A ; return(RxTxstatus);
019A L40:
019A 0E940000 xcall pop_gset1
019E .dbline 0 ; func end
019E 0895 ret
01A0 ; value -> R20
01A0 ; addr -> R22
.even
01A0 _halSpiWriteReg::
01A0 0E940000 xcall push_gset2
01A4 422F mov R20,R18
01A6 602F mov R22,R16
01A8 ; }
01A8 ; /******************************************/
01A8 ; void halSpiWriteReg(unsigned char addr, unsigned char value)
01A8 ; {
01A8 ; CLEAR_CSN();
01A8 AA98 cbi 0x15,2
01AA L45:
01AA L46:
01AA ; while(GET_OUT());
01AA 2ADF xcall _GET_OUT
01AC 0030 cpi R16,0
01AE 0107 cpc R16,R17
01B0 E1F7 brne L45
01B2 X3:
01B2 ; CLEAR_CLOCK();
01B2 80916500 lds R24,101
01B6 8E7F andi R24,254
01B8 80936500 sts 101,R24
01BC ; addr&=0x7F;
01BC 6F77 andi R22,127
01BE ; SPI_write(addr);
01BE 062F mov R16,R22
01C0 61DF xcall _SPI_write
01C2 ; SPI_write(value);
01C2 042F mov R16,R20
01C4 5FDF xcall _SPI_write
01C6 ; CLEAR_CLOCK();
01C6 80916500 lds R24,101
01CA 8E7F andi R24,254
01CC 80936500 sts 101,R24
01D0 ; CLEAR_IN();
01D0 80916500 lds R24,101
01D4 8D7F andi R24,253
01D6 80936500 sts 101,R24
01DA ; SET_CSN();
01DA AA9A sbi 0x15,2
01DC L44:
01DC 0E940000 xcall pop_gset2
01E0 .dbline 0 ; func end
01E0 0895 ret
01E2 ; strobe -> R20
.even
01E2 _halSpiStrobe::
01E2 0E940000 xcall push_gset1
01E6 402F mov R20,R16
01E8 ; }
01E8 ; /******************************************/
01E8 ; void halSpiStrobe(unsigned char strobe)
01E8 ; {
01E8 ; CLEAR_CSN(); // CSn=0
01E8 AA98 cbi 0x15,2
01EA ; CLEAR_CLOCK();
01EA 80916500 lds R24,101
01EE 8E7F andi R24,254
01F0 80936500 sts 101,R24
01F4 L49:
01F4 L50:
01F4 ; while(GET_OUT());
01F4 05DF xcall _GET_OUT
01F6 0030 cpi R16,0
01F8 0107 cpc R16,R17
01FA E1F7 brne L49
01FC X4:
01FC ; SPI_write(strobe);
01FC 042F mov R16,R20
01FE 42DF xcall _SPI_write
0200 ; CLEAR_CLOCK();
0200 80916500 lds R24,101
0204 8E7F andi R24,254
0206 80936500 sts 101,R24
020A ; CLEAR_IN();
020A 80916500 lds R24,101
020E 8D7F andi R24,253
0210 80936500 sts 101,R24
0214 ; SET_CSN();
0214 AA9A sbi 0x15,2
0216 L48:
0216 0E940000 xcall pop_gset1
021A .dbline 0 ; func end
021A 0895 ret
021C ; value -> R20
021C ; j -> R22
021C ; i -> R14
021C ; count -> R10
021C ; buffer -> R12,R13
021C ; addr -> R20
.even
021C _halSpiWriteBurstReg::
021C 0E940000 xcall push_gset5
0220 6901 movw R12,R18
0222 402F mov R20,R16
0224 AA84 ldd R10,y+10
0226 ; }
0226 ; /*******************************************/
0226 ; void halSpiWriteBurstReg(unsigned char addr, unsigned char *buffer, unsigned char count)
0226 ; {
0226 ; unsigned char i,j,value;
0226 ; CLEAR_CLOCK();
0226 80916500 lds R24,101
022A 8E7F andi R24,254
022C 80936500 sts 101,R24
0230 ; Dly10us();Dly10us();
0230 FADE xcall _Dly10us
0232 F9DE xcall _Dly10us
0234 ; CLEAR_CSN(); // CSn=0
0234 AA98 cbi 0x15,2
0236 ; addr|=WRITE_BURST;
0236 4064 ori R20,64
0238 ; SPI_write(addr);
0238 042F mov R16,R20
023A 24DF xcall _SPI_write
023C ; CLEAR_IN();
023C 80916500 lds R24,101
0240 8D7F andi R24,253
0242 80936500 sts 101,R24
0246 ; for(j=0;j<count;j++)
0246 6627 clr R22
0248 13C0 xjmp L56
024A L53:
024A ; {
024A ; value=buffer[j];
024A E62F mov R30,R22
024C FF27 clr R31
024E EC0D add R30,R12
0250 FD1D adc R31,R13
0252 4081 ldd R20,z+0
0254 ; SPI_write(value);
0254 042F mov R16,R20
0256 16DF xcall _SPI_write
0258 ; CLEAR_IN();
0258 80916500 lds R24,101
025C 8D7F andi R24,253
025E 80936500 sts 101,R24
0262 EE24 clr R14
0264 01C0 xjmp L60
0266 L57:
0266 L58:
0266 E394 inc R14
0268 L60:
0268 8E2D mov R24,R14
026A 8436 cpi R24,100
026C E0F3 brlo L57
026E L54:
026E 6395 inc R22
0270 L56:
0270 6A15 cp R22,R10
0272 58F3 brlo L53
0274 ; for(i=0;i<100;i++);
0274 ; }
0274 ; SET_CSN();
0274 AA9A sbi 0x15,2
0276 L52:
0276 0E940000 xcall pop_gset5
027A .dbline 0 ; func end
027A 0895 ret
027C ; i -> R20,R21
.even
027C _CC1100_POR::
027C 0E940000 xcall push_gset1
0280 ; }
0280 ; /******************************/
0280 ; void CC1100_POR()
0280 ; {
0280 ; unsigned int i;
0280 ; halSpiStrobe(CCxxx0_SIDLE);
0280 06E3 ldi R16,54
0282 AFDF xcall _halSpiStrobe
0284 ; SET_CSN();
0284 AA9A sbi 0x15,2
0286 4427 clr R20
0288 5527 clr R21
028A 02C0 xjmp L65
028C L62:
028C L63:
028C 4F5F subi R20,255 ; offset = 1
028E 5F4F sbci R21,255
0290 L65:
0290 ; for(i=0;i<100;i++);
0290 4436 cpi R20,100
0292 E0E0 ldi R30,0
0294 5E07 cpc R21,R30
0296 D0F3 brlo L62
0298 ; CLEAR_CSN();
0298 AA98 cbi 0x15,2
029A 4427 clr R20
029C 5527 clr R21
029E 02C0 xjmp L69
02A0 L66:
02A0 L67:
02A0 4F5F subi R20,255 ; offset = 1
02A2 5F4F sbci R21,255
02A4 L69:
02A4 ; for(i=0;i<100;i++);
02A4 4436 cpi R20,100
02A6 E0E0 ldi R30,0
02A8 5E07 cpc R21,R30
02AA D0F3 brlo L66
02AC ; SET_CSN();
02AC AA9A sbi 0x15,2
02AE 4427 clr R20
02B0 5527 clr R21
02B2 02C0 xjmp L73
02B4 L70:
02B4 L71:
02B4 4F5F subi R20,255 ; offset = 1
02B6 5F4F sbci R21,255
02B8 L73:
02B8 ; for(i=0;i<2000;i++);
02B8 403D cpi R20,208
02BA E7E0 ldi R30,7
02BC 5E07 cpc R21,R30
02BE D0F3 brlo L70
02C0 ; CLEAR_CSN();
02C0 AA98 cbi 0x15,2
02C2 L74:
02C2 L75:
02C2 ; while(GET_OUT());
02C2 9EDE xcall _GET_OUT
02C4 0030 cpi R16,0
02C6 0107 cpc R16,R17
02C8 E1F7 brne L74
02CA X5:
02CA ; halSpiStrobe(CCxxx0_SRES);
02CA 00E3 ldi R16,48
02CC 8ADF xcall _halSpiStrobe
02CE ; CLEAR_CLOCK();
02CE 80916500 lds R24,101
02D2 8E7F andi R24,254
02D4 80936500 sts 101,R24
02D8 ; CLEAR_IN();
02D8 80916500 lds R24,101
02DC 8D7F andi R24,253
02DE 80936500 sts 101,R24
02E2 ; SET_CSN();
02E2 AA9A sbi 0x15,2
02E4 L61:
02E4 0E940000 xcall pop_gset1
02E8 .dbline 0 ; func end
02E8 0895 ret
02EA ; size -> R22
02EA ; txBuffer -> R20,R21
.even
02EA _halRfSendPacket::
02EA 0E940000 xcall push_gset2
02EE 622F mov R22,R18
02F0 A801 movw R20,R16
02F2 2197 sbiw R28,1
02F4 ; }
02F4 ; /*******************************************/
02F4 ; unsigned char halRfSendPacket(unsigned char *txBuffer, unsigned char size)
02F4 ; {
02F4 ; halSpiStrobe(CCxxx0_SFTX);
02F4 0BE3 ldi R16,59
02F6 75DF xcall _halSpiStrobe
02F8 ; Dly1mS(15);
02F8 0FE0 ldi R16,15
02FA 10E0 ldi R17,0
02FC A4DE xcall _Dly1mS
02FE ; //Dly1mS(25);
02FE ; halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);
02FE 6883 std y+0,R22
0300 9A01 movw R18,R20
0302 0FE7 ldi R16,127
0304 8BDF xcall _halSpiWriteBurstReg
0306 ; Dly1mS(15);
0306 0FE0 ldi R16,15
0308 10E0 ldi R17,0
030A 9DDE xcall _Dly1mS
030C ; //Dly1mS(25);
030C ; halSpiStrobe(CCxxx0_STX);
030C 05E3 ldi R16,53
030E 69DF xcall _halSpiStrobe
0310 03C0 xjmp L79
0312 L78:
0312 01E0 ldi R16,1
0314 10E0 ldi R17,0
0316 97DE xcall _Dly1mS
0318 L79:
0318 ; while(spiGetRxTxStatus()&0x70)
0318 26DF xcall _spiGetRxTxStatus
031A 802F mov R24,R16
031C 8077 andi R24,112
031E C9F7 brne L78
0320 ; {
0320 ; Dly1mS(1);
0320 ; //Dly1mS(2);
0320 ; }
0320 ; SEND_DONE=0x01;
0320 81E0 ldi R24,1
0322 80930800 sts _SEND_DONE,R24
0326 ; return 0;
0326 0027 clr R16
0328 L77:
0328 2196 adiw R28,1
032A 0E940000 xcall pop_gset2
032E .dbline 0 ; func end
032E 0895 ret
0330 ; value -> R20
0330 ; addr -> R20
.even
0330 _halSpiReadReg::
0330 0E940000 xcall push_gset1
0334 402F mov R20,R16
0336 ; }// halRfSendPacket
0336 ; /*******************************************/
0336 ; /*
0336 ; void TxCCxx00()
0336 ; {
0336 ; unsigned char i;
0336 ; halSpiWriteReg(CCxxx0_FREND0, 0x10); //CC1100:POWER=10DBM;CC2500:1DBM
0336 ; Dly1mS(25);;
0336 ; for(i=0;i<4;i++) //发四次
0336 ; {
0336 ; halRfSendPacket(txBuffer_CCxx00, sizeof(txBuffer_CCxx00));
0336 ; Dly1mS(50);
0336 ; }
0336 ; halSpiWriteReg(CCxxx0_FREND0, 0x15); //CC1100太近会收不到,将发射功率降低到-10DBM //#define CCxxx0_FREND0 0x22
0336 ; Dly1mS(50);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -