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

📄 cc1100.lis

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