📄 cc1100.lis
字号:
0132 95DF xcall _Dly10us
0134 ; rd_pin=GET_OUT();
0134 81DF xcall _GET_OUT
0136 602F mov R22,R16
0138 ; if((rd_pin&0x01)==0x01) value|=0x01;
0138 862F mov R24,R22
013A 8170 andi R24,1
013C 8130 cpi R24,1
013E 21F4 brne L44
0140 8A2D mov R24,R10
0142 8160 ori R24,1
0144 A82E mov R10,R24
0146 03C0 xjmp L45
0148 L44:
0148 ; else value&=0xfe;
0148 8A2D mov R24,R10
014A 8E7F andi R24,254
014C A82E mov R10,R24
014E L45:
014E 87DF xcall _Dly10us
0150 86DF xcall _Dly10us
0152 5CDF xcall _CLEAR_CLOCK
0154 84DF xcall _Dly10us
0156 83DF xcall _Dly10us
0158 82DF xcall _Dly10us
015A 81DF xcall _Dly10us
015C 80DF xcall _Dly10us
015E L41:
015E 4395 inc R20
0160 L43:
0160 4830 cpi R20,8
0162 08F3 brlo L40
0164 ; Dly10us();Dly10us();
0164 ; CLEAR_CLOCK(); //SCLK=0 //P_SCLK=0;
0164 ; Dly10us();Dly10us();Dly10us();Dly10us();Dly10us();
0164 ; }
0164 ; return value;
0164 0A2D mov R16,R10
0166 L39:
0166 0E940000 xcall pop_gset3
016A .dbline 0 ; func end
016A 0895 ret
016C ; RxTxstatus -> R20
.even
016C _spiGetRxTxStatus::
016C 0E940000 xcall push_gset1
0170 ; }
0170 ; /******************************************/
0170 ; unsigned char spiGetRxTxStatus()
0170 ; {
0170 ; unsigned char RxTxstatus;
0170 ; CLEAR_CSN(); // CSn=0
0170 61DF xcall _CLEAR_CSN
0172 L47:
0172 L48:
0172 ; while(GET_OUT());
0172 62DF xcall _GET_OUT
0174 0030 cpi R16,0
0176 0107 cpc R16,R17
0178 E1F7 brne L47
017A X1:
017A ; CLEAR_CLOCK();
017A 48DF xcall _CLEAR_CLOCK
017C ; RxTxstatus=SPI_write(CCxxx0_SNOP);
017C 0DE3 ldi R16,61
017E 9EDF xcall _SPI_write
0180 402F mov R20,R16
0182 ; CLEAR_CLOCK(); //SCLK=0
0182 44DF xcall _CLEAR_CLOCK
0184 ; CLEAR_IN(); // SI=0
0184 4FDF xcall _CLEAR_IN
0186 ; SET_CSN(); //CSn=1
0186 54DF xcall _SET_CSN
0188 ; return(RxTxstatus);
0188 042F mov R16,R20
018A L46:
018A 0E940000 xcall pop_gset1
018E .dbline 0 ; func end
018E 0895 ret
0190 ; value -> R20
0190 ; addr -> R22
.even
0190 _halSpiWriteReg::
0190 0E940000 xcall push_gset2
0194 422F mov R20,R18
0196 602F mov R22,R16
0198 ; }
0198 ; /******************************************/
0198 ; void halSpiWriteReg(unsigned char addr, unsigned char value)
0198 ; {
0198 ; CLEAR_CSN();
0198 4DDF xcall _CLEAR_CSN
019A L51:
019A L52:
019A ; while(GET_OUT());
019A 4EDF xcall _GET_OUT
019C 0030 cpi R16,0
019E 0107 cpc R16,R17
01A0 E1F7 brne L51
01A2 X2:
01A2 ; CLEAR_CLOCK();
01A2 34DF xcall _CLEAR_CLOCK
01A4 ; addr&=0x7F;
01A4 6F77 andi R22,127
01A6 ; SPI_write(addr);
01A6 062F mov R16,R22
01A8 89DF xcall _SPI_write
01AA ; SPI_write(value);
01AA 042F mov R16,R20
01AC 87DF xcall _SPI_write
01AE ; CLEAR_CLOCK();
01AE 2EDF xcall _CLEAR_CLOCK
01B0 ; CLEAR_IN();
01B0 39DF xcall _CLEAR_IN
01B2 ; SET_CSN();
01B2 3EDF xcall _SET_CSN
01B4 L50:
01B4 0E940000 xcall pop_gset2
01B8 .dbline 0 ; func end
01B8 0895 ret
01BA ; strobe -> R20
.even
01BA _halSpiStrobe::
01BA 0E940000 xcall push_gset1
01BE 402F mov R20,R16
01C0 ; }
01C0 ; /******************************************/
01C0 ; void halSpiStrobe(unsigned char strobe)
01C0 ; {
01C0 ; CLEAR_CSN(); // CSn=0
01C0 39DF xcall _CLEAR_CSN
01C2 ; CLEAR_CLOCK();
01C2 24DF xcall _CLEAR_CLOCK
01C4 L55:
01C4 L56:
01C4 ; while(GET_OUT());
01C4 39DF xcall _GET_OUT
01C6 0030 cpi R16,0
01C8 0107 cpc R16,R17
01CA E1F7 brne L55
01CC X3:
01CC ; SPI_write(strobe);
01CC 042F mov R16,R20
01CE 76DF xcall _SPI_write
01D0 ; CLEAR_CLOCK();
01D0 1DDF xcall _CLEAR_CLOCK
01D2 ; CLEAR_IN();
01D2 28DF xcall _CLEAR_IN
01D4 ; SET_CSN();
01D4 2DDF xcall _SET_CSN
01D6 L54:
01D6 0E940000 xcall pop_gset1
01DA .dbline 0 ; func end
01DA 0895 ret
01DC ; value -> R12
01DC ; j -> R20
01DC ; i -> R14
01DC ; count -> R22
01DC ; buffer -> R10,R11
01DC ; addr -> R20
.even
01DC _halSpiWriteBurstReg::
01DC 0E940000 xcall push_gset5
01E0 5901 movw R10,R18
01E2 402F mov R20,R16
01E4 6A85 ldd R22,y+10
01E6 ; }
01E6 ; /*******************************************/
01E6 ; void halSpiWriteBurstReg(unsigned char addr, unsigned char *buffer, unsigned char count)
01E6 ; {
01E6 ; unsigned char i,j,value;
01E6 ; CLEAR_CLOCK();
01E6 12DF xcall _CLEAR_CLOCK
01E8 ; Dly10us();Dly10us();
01E8 3ADF xcall _Dly10us
01EA 39DF xcall _Dly10us
01EC ; CLEAR_CSN(); // CSn=0
01EC 23DF xcall _CLEAR_CSN
01EE ; addr|=WRITE_BURST;
01EE 4064 ori R20,64
01F0 ; SPI_write(addr);
01F0 042F mov R16,R20
01F2 64DF xcall _SPI_write
01F4 ; CLEAR_IN();
01F4 17DF xcall _CLEAR_IN
01F6 ; for(j=0;j<count;j++)
01F6 4427 clr R20
01F8 0FC0 xjmp L62
01FA L59:
01FA ; {
01FA ; value=buffer[j];
01FA E42F mov R30,R20
01FC FF27 clr R31
01FE EA0D add R30,R10
0200 FB1D adc R31,R11
0202 C080 ldd R12,z+0
0204 ; SPI_write(value);
0204 0C2D mov R16,R12
0206 5ADF xcall _SPI_write
0208 ; CLEAR_IN();
0208 0DDF xcall _CLEAR_IN
020A EE24 clr R14
020C 01C0 xjmp L66
020E L63:
020E L64:
020E E394 inc R14
0210 L66:
0210 8E2D mov R24,R14
0212 8436 cpi R24,100
0214 E0F3 brlo L63
0216 L60:
0216 4395 inc R20
0218 L62:
0218 4617 cp R20,R22
021A 78F3 brlo L59
021C ; for(i=0;i<100;i++);
021C ; }
021C ; SET_CSN();
021C 09DF xcall _SET_CSN
021E L58:
021E 0E940000 xcall pop_gset5
0222 .dbline 0 ; func end
0222 0895 ret
0224 ; i -> R20,R21
.even
0224 _CC1100_POR::
0224 0E940000 xcall push_gset1
0228 ; }
0228 ; /******************************/
0228 ; void CC1100_POR()
0228 ; {
0228 ; unsigned int i;
0228 ; halSpiStrobe(CCxxx0_SIDLE);
0228 06E3 ldi R16,54
022A C7DF xcall _halSpiStrobe
022C ; SET_CSN();
022C 01DF xcall _SET_CSN
022E 4427 clr R20
0230 5527 clr R21
0232 02C0 xjmp L71
0234 L68:
0234 L69:
0234 4F5F subi R20,255 ; offset = 1
0236 5F4F sbci R21,255
0238 L71:
0238 ; for(i=0;i<100;i++);
0238 4436 cpi R20,100
023A E0E0 ldi R30,0
023C 5E07 cpc R21,R30
023E D0F3 brlo L68
0240 ; CLEAR_CSN();
0240 F9DE xcall _CLEAR_CSN
0242 4427 clr R20
0244 5527 clr R21
0246 02C0 xjmp L75
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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -