📄 cc1100.lis
字号:
0122 ; value <<=1;Dly10us();Dly10us();Dly10us();Dly10us();Dly10us();
0122 AA0C lsl R10
0124 99DF xcall _Dly10us
0126 98DF xcall _Dly10us
0128 97DF xcall _Dly10us
012A 96DF xcall _Dly10us
012C 95DF xcall _Dly10us
012E ; rd_pin=GET_OUT();
012E 84DF xcall _GET_OUT
0130 602F mov R22,R16
0132 ; if((rd_pin&0x01)==0x01) value|=0x01;
0132 862F mov R24,R22
0134 8170 andi R24,1
0136 8130 cpi R24,1
0138 21F4 brne L44
013A 8A2D mov R24,R10
013C 8160 ori R24,1
013E A82E mov R10,R24
0140 03C0 xjmp L45
0142 L44:
0142 ; else value&=0xfe;
0142 8A2D mov R24,R10
0144 8E7F andi R24,254
0146 A82E mov R10,R24
0148 L45:
0148 87DF xcall _Dly10us
014A 86DF xcall _Dly10us
014C 5FDF xcall _CLEAR_CLOCK
014E 84DF xcall _Dly10us
0150 83DF xcall _Dly10us
0152 82DF xcall _Dly10us
0154 81DF xcall _Dly10us
0156 80DF xcall _Dly10us
0158 L41:
0158 4395 inc R20
015A L43:
015A 4830 cpi R20,8
015C 08F3 brlo L40
015E ; Dly10us();Dly10us();
015E ; CLEAR_CLOCK(); //SCLK=0 //P_SCLK=0;
015E ; Dly10us();Dly10us();Dly10us();Dly10us();Dly10us();
015E ; }
015E ; return value;
015E 0A2D mov R16,R10
0160 L39:
0160 0E940000 xcall pop_gset3
0164 .dbline 0 ; func end
0164 0895 ret
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 64DF xcall _CLEAR_CSN
016C L47:
016C L48:
016C ; while(GET_OUT());
016C 65DF xcall _GET_OUT
016E 0023 tst R16
0170 E9F7 brne L47
0172 ; CLEAR_CLOCK();
0172 4CDF xcall _CLEAR_CLOCK
0174 ; RxTxstatus=SPI_write(CCxxx0_SNOP);
0174 0DE3 ldi R16,61
0176 9FDF xcall _SPI_write
0178 402F mov R20,R16
017A ; CLEAR_CLOCK(); //SCLK=0
017A 48DF xcall _CLEAR_CLOCK
017C ; CLEAR_IN(); // SI=0
017C 53DF xcall _CLEAR_IN
017E ; SET_CSN(); //CSn=1
017E 58DF xcall _SET_CSN
0180 ; return(RxTxstatus);
0180 042F mov R16,R20
0182 L46:
0182 0E940000 xcall pop_gset1
0186 .dbline 0 ; func end
0186 0895 ret
0188 ; value -> R20
0188 ; addr -> R22
.even
0188 _halSpiWriteReg::
0188 0E940000 xcall push_gset2
018C 422F mov R20,R18
018E 602F mov R22,R16
0190 ; }
0190 ; /******************************************/
0190 ; void halSpiWriteReg(unsigned char addr, unsigned char value)
0190 ; {
0190 ; CLEAR_CSN();
0190 51DF xcall _CLEAR_CSN
0192 L51:
0192 L52:
0192 ; while(GET_OUT());
0192 52DF xcall _GET_OUT
0194 0023 tst R16
0196 E9F7 brne L51
0198 ; CLEAR_CLOCK();
0198 39DF xcall _CLEAR_CLOCK
019A ; addr&=0x7F;
019A 6F77 andi R22,127
019C ; SPI_write(addr);
019C 062F mov R16,R22
019E 8BDF xcall _SPI_write
01A0 ; SPI_write(value);
01A0 042F mov R16,R20
01A2 89DF xcall _SPI_write
01A4 ; CLEAR_CLOCK();
01A4 33DF xcall _CLEAR_CLOCK
01A6 ; CLEAR_IN();
01A6 3EDF xcall _CLEAR_IN
01A8 ; SET_CSN();
01A8 43DF xcall _SET_CSN
01AA L50:
01AA 0E940000 xcall pop_gset2
01AE .dbline 0 ; func end
01AE 0895 ret
01B0 ; strobe -> R20
.even
01B0 _halSpiStrobe::
01B0 0E940000 xcall push_gset1
01B4 402F mov R20,R16
01B6 ; }
01B6 ; /******************************************/
01B6 ; void halSpiStrobe(unsigned char strobe)
01B6 ; {
01B6 ; CLEAR_CSN(); // CSn=0
01B6 3EDF xcall _CLEAR_CSN
01B8 ; CLEAR_CLOCK();
01B8 29DF xcall _CLEAR_CLOCK
01BA L55:
01BA L56:
01BA ; while(GET_OUT());
01BA 3EDF xcall _GET_OUT
01BC 0023 tst R16
01BE E9F7 brne L55
01C0 ; SPI_write(strobe);
01C0 042F mov R16,R20
01C2 79DF xcall _SPI_write
01C4 ; CLEAR_CLOCK();
01C4 23DF xcall _CLEAR_CLOCK
01C6 ; CLEAR_IN();
01C6 2EDF xcall _CLEAR_IN
01C8 ; SET_CSN();
01C8 33DF xcall _SET_CSN
01CA L54:
01CA 0E940000 xcall pop_gset1
01CE .dbline 0 ; func end
01CE 0895 ret
01D0 ; value -> R12
01D0 ; j -> R20
01D0 ; i -> R14
01D0 ; count -> R22
01D0 ; buffer -> R10,R11
01D0 ; addr -> R20
.even
01D0 _halSpiWriteBurstReg::
01D0 0E940000 xcall push_gset5
01D4 5901 movw R10,R18
01D6 402F mov R20,R16
01D8 6A85 ldd R22,y+10
01DA ; }
01DA ; /*******************************************/
01DA ; void halSpiWriteBurstReg(unsigned char addr, unsigned char *buffer, unsigned char count)
01DA ; {
01DA ; unsigned char i,j,value;
01DA ; CLEAR_CLOCK();
01DA 18DF xcall _CLEAR_CLOCK
01DC ; Dly10us();Dly10us();
01DC 3DDF xcall _Dly10us
01DE 3CDF xcall _Dly10us
01E0 ; CLEAR_CSN(); // CSn=0
01E0 29DF xcall _CLEAR_CSN
01E2 ; addr|=WRITE_BURST;
01E2 4064 ori R20,64
01E4 ; SPI_write(addr);
01E4 042F mov R16,R20
01E6 67DF xcall _SPI_write
01E8 ; CLEAR_IN();
01E8 1DDF xcall _CLEAR_IN
01EA ; for(j=0;j<count;j++)
01EA 4427 clr R20
01EC 0FC0 xjmp L62
01EE L59:
01EE ; {
01EE ; value=buffer[j];
01EE E42F mov R30,R20
01F0 FF27 clr R31
01F2 EA0D add R30,R10
01F4 FB1D adc R31,R11
01F6 C080 ldd R12,z+0
01F8 ; SPI_write(value);
01F8 0C2D mov R16,R12
01FA 5DDF xcall _SPI_write
01FC ; CLEAR_IN();
01FC 13DF xcall _CLEAR_IN
01FE EE24 clr R14
0200 01C0 xjmp L66
0202 L63:
0202 L64:
0202 E394 inc R14
0204 L66:
0204 8E2D mov R24,R14
0206 8436 cpi R24,100
0208 E0F3 brlo L63
020A L60:
020A 4395 inc R20
020C L62:
020C 4617 cp R20,R22
020E 78F3 brlo L59
0210 ; for(i=0;i<100;i++);
0210 ; }
0210 ; SET_CSN();
0210 0FDF xcall _SET_CSN
0212 L58:
0212 0E940000 xcall pop_gset5
0216 .dbline 0 ; func end
0216 0895 ret
0218 ; i -> R20,R21
.even
0218 _CC1100_POR::
0218 0E940000 xcall push_gset1
021C ; }
021C ; /******************************/
021C ; void CC1100_POR()
021C ; {
021C ; unsigned int i;
021C ; halSpiStrobe(CCxxx0_SIDLE);
021C 06E3 ldi R16,54
021E C8DF xcall _halSpiStrobe
0220 ; SET_CSN();
0220 07DF xcall _SET_CSN
0222 4427 clr R20
0224 5527 clr R21
0226 02C0 xjmp L71
0228 L68:
0228 L69:
0228 4F5F subi R20,255 ; offset = 1
022A 5F4F sbci R21,255
022C L71:
022C ; for(i=0;i<100;i++);
022C 4436 cpi R20,100
022E E0E0 ldi R30,0
0230 5E07 cpc R21,R30
0232 D0F3 brlo L68
0234 ; CLEAR_CSN();
0234 FFDE xcall _CLEAR_CSN
0236 4427 clr R20
0238 5527 clr R21
023A 02C0 xjmp L75
023C L72:
023C L73:
023C 4F5F subi R20,255 ; offset = 1
023E 5F4F sbci R21,255
0240 L75:
0240 ; for(i=0;i<100;i++);
0240 4436 cpi R20,100
0242 E0E0 ldi R30,0
0244 5E07 cpc R21,R30
0246 D0F3 brlo L72
0248 ; SET_CSN();
0248 F3DE xcall _SET_CSN
024A 4427 clr R20
024C 5527 clr R21
024E 02C0 xjmp L79
0250 L76:
0250 L77:
0250 4F5F subi R20,255 ; offset = 1
0252 5F4F sbci R21,255
0254 L79:
0254 ; for(i=0;i<2000;i++);
0254 403D cpi R20,208
0256 E7E0 ldi R30,7
0258 5E07 cpc R21,R30
025A D0F3 brlo L76
025C ; CLEAR_CSN();
025C EBDE xcall _CLEAR_CSN
025E L80:
025E L81:
025E ; while(GET_OUT());
025E ECDE xcall _GET_OUT
0260 0023 tst R16
0262 E9F7 brne L80
0264 ; halSpiStrobe(CCxxx0_SRES);
0264 00E3 ldi R16,48
0266 A4DF xcall _halSpiStrobe
0268 ; CLEAR_CLOCK();
0268 D1DE xcall _CLEAR_CLOCK
026A ; CLEAR_IN();
026A DCDE xcall _CLEAR_IN
026C ; SET_CSN();
026C E1DE xcall _SET_CSN
026E L67:
026E 0E940000 xcall pop_gset1
0272 .dbline 0 ; func end
0272 0895 ret
0274 ; size -> R22
0274 ; txBuffer -> R20,R21
.even
0274 _halRfSendPacket::
0274 0E940000 xcall push_gset2
0278 622F mov R22,R18
027A A801 movw R20,R16
027C 2197 sbiw R28,1
027E ; }
027E ; /*******************************************/
027E ; unsigned char halRfSendPacket(unsigned char *txBuffer, unsigned char size)
027E ; {
027E ; halSpiStrobe(CCxxx0_SFTX);
027E 0BE3 ldi R16,59
0280 97DF xcall _halSpiStrobe
0282 ; Dly1mS(15);
0282 0FE0 ldi R16,15
0284 10E0 ldi R17,0
0286 F8DE xcall _Dly1mS
0288 ; //Dly1mS(25);
0288 ; halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);
0288 6883 std y+0,R22
028A 9A01 movw R18,R20
028C 0FE7 ldi R16,127
028E A0DF xcall _halSpiWriteBurstReg
0290 ; Dly1mS(15);
0290 0FE0 ldi R16,15
0292 10E0 ldi R17,0
0294 F1DE xcall _Dly1mS
0296 ; //Dly1mS(25);
0296 ; halSpiStrobe(CCxxx0_STX);
0296 05E3 ldi R16,53
0298 8BDF xcall _halSpiStrobe
029A 03C0 xjmp L85
029C L84:
029C 01E0 ldi R16,1
029E 10E0 ldi R17,0
02A0 EBDE xcall _Dly1mS
02A2 L85:
02A2 ; while(spiGetRxTxStatus()&0x70)
02A2 61DF xcall _spiGetRxTxStatus
02A4 802F mov R24,R16
02A6 8077 andi R24,112
02A8 C9F7 brne L84
02AA ; {
02AA ; Dly1mS(1);
02AA ; //Dly1mS(2);
02AA ; }
02AA ; SEND_DONE=0x01;
02AA 81E0 ldi R24,1
02AC 80930800 sts _SEND_DONE,R24
02B0 ; return 0;
02B0 0027 clr R16
02B2 L83:
02B2 2196 adiw R28,1
02B4 0E940000 xcall pop_gset2
02B8 .dbline 0 ; func end
02B8 0895 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -