⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cc1100.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -