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

📄 cc1100.lis

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