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

📄 cc1000avr.lis

📁 CC1000通信
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 011A 9498              cbi 0x12,4
 011C                   .dbline 296
 011C           ;     Data=Data<<1;
 011C AA0C              lsl R10
 011E                   .dbline 297
 011E           ;     Debug=(1<<PDATA);
 011E 48E0              ldi R20,8
 0120                   .dbline 298
 0120           ;     if ((PIND&Debug)==0) {
 0120 20B2              in R2,0x10
 0122 2422              and R2,R20
 0124 21F4              brne L40
 0126                   .dbline 298
 0126                   .dbline 299
 0126           ;       Data&=0xFE;
 0126 8A2D              mov R24,R10
 0128 8E7F              andi R24,254
 012A A82E              mov R10,R24
 012C                   .dbline 300
 012C 03C0              xjmp L41
 012E           L40:
 012E                   .dbline 300
 012E           ;     } else {
 012E                   .dbline 301
 012E           ;       Data|=0x01;
 012E 8A2D              mov R24,R10
 0130 8160              ori R24,1
 0132 A82E              mov R10,R24
 0134                   .dbline 302
 0134           ;     }
 0134           L41:
 0134                   .dbline 303
 0134 949A              sbi 0x12,4
 0136                   .dbline 304
 0136           L37:
 0136                   .dbline 293
 0136 6395              inc R22
 0138           L39:
 0138                   .dbline 293
 0138 6830              cpi R22,8
 013A 78F3              brlo L36
 013C                   .dbline 307
 013C           ;     PORTD|=(1<<PCLK); //PCLK=1
 013C           ;   }
 013C           ;   
 013C           ;   
 013C           ;   DDRD|=(1<<PDATA); /* Set up PDATA as an output again */
 013C 8B9A              sbi 0x11,3
 013E                   .dbline 309
 013E           ;  
 013E           ;   return Data;
 013E 0A2D              mov R16,R10
 0140                   .dbline -2
 0140           L29:
 0140 0E940000          xcall pop_gset3
 0144                   .dbline 0 ; func end
 0144 0895              ret
 0146                   .dbsym r Debug 20 c
 0146                   .dbsym r BitCounter 22 c
 0146                   .dbsym r Data 10 c
 0146                   .dbsym r addr 16 c
 0146                   .dbend
 0146                   .dbfunc e ResetCC1000 _ResetCC1000 fV
 0146           ;      MainValue -> R20
                        .even
 0146           _ResetCC1000::
 0146 0E940000          xcall push_gset1
 014A                   .dbline -1
 014A                   .dbline 381
 014A           ; }
 014A           ;  /****************************************************************************/////////////////////////新的READ
 014A           ; /*  This routine reads from a single CC1000 register                        */
 014A           ; /****************************************************************************/
 014A           ; /* 
 014A           ; char ReadFromCC1000Register(char addr)
 014A           ; {
 014A           ;   char BitCounter;
 014A           ;   char Data;
 014A           ;   char Debug;
 014A           ;   
 014A           ;     
 014A           ;   PORTA|=(1<<PALE); //PALE=1
 014A           ;   
 014A           ;   Data=addr<<1;
 014A           ;   PORTA&=~(1<<PALE);
 014A           ;     
 014A           ;   /* Send address bits */
 014A           ;  /*  for (BitCounter=0;BitCounter<7;BitCounter++)
 014A           ;   {
 014A           ;     PORTB|=(1<<PCLK); // PCLK=1
 014A           ;     if ((Data&0x80)==0) {
 014A           ;       PORTB&=~(1<<PDATA); // PDATA=0
 014A           ;     }
 014A           ;     else {
 014A           ;       PORTB|=(1<<PDATA); // PDATA=1
 014A           ;     }
 014A           ;     Data=Data<<1;
 014A           ;     PORTB&=~(1<<PCLK); //PCLK=0;
 014A           ;   }
 014A           ;   
 014A           ;   /* Send read/write bit */
 014A           ;   /* Ignore bit in data, always use 0 */
 014A           ;  /*  
 014A           ;   PORTB|=(1<<PCLK); //PCLK=1
 014A           ;   PORTB&=~(1<<PDATA); //PDATA=0
 014A           ;   PORTB&=~(1<<PCLK); //PCLK=0
 014A           ;  
 014A           ;  
 014A           ;   PORTB|=(1<<PCLK); //PCLK=1
 014A           ;   PORTA|=(1<<PALE); //PALE=1
 014A           ;     
 014A           ;   /* Receive data bits */
 014A           ;  /*  
 014A           ;   PORTB|=(1<<PDATA); //PDATA=1
 014A           ;    
 014A           ;   DDRD&=~(1<<PDATA); /* Set up PDATA as an input */
 014A           ;  /*    
 014A           ;   for (BitCounter=0;BitCounter<8;BitCounter++)
 014A           ;   {
 014A           ;     PORTB&=~(1<<PCLK); //PCLK=0
 014A           ;     Data=Data<<1;
 014A           ;     Debug=(1<<PDATA);
 014A           ;     if ((PIND&Debug)==0) {
 014A           ;       Data&=0xFE;
 014A           ;     } else {
 014A           ;       Data|=0x01;
 014A           ;     }
 014A           ;     PORTB|=(1<<PCLK); //PCLK=1
 014A           ;   }
 014A           ;   
 014A           ;   
 014A           ;   DDRD|=(1<<PDATA); /* Set up PDATA as an output again */
 014A           ;   
 014A           ; /*   return Data;
 014A           ; } 
 014A           ; /****************************************************************************/
 014A           ; /*  This routine resets the CC1000, clearing all registers.                 */
 014A           ; /****************************************************************************/  
 014A           ; 
 014A           ; void ResetCC1000(void)
 014A           ; {
 014A                   .dbline 384
 014A           ;   char MainValue;
 014A           ;   
 014A           ;   MainValue=ReadFromCC1000Register(CC1000_MAIN);
 014A 0027              clr R16
 014C CADF              xcall _ReadFromCC1000Register
 014E 402F              mov R20,R16
 0150                   .dbline 385
 0150           ;   WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFE);         // Reset CC1000
 0150 242F              mov R18,R20
 0152 2E7F              andi R18,254
 0154 0027              clr R16
 0156 A2DF              xcall _WriteToCC1000Register
 0158                   .dbline 386
 0158           ;   WriteToCC1000Register(CC1000_MAIN,MainValue | 0x01);         // Bring CC1000 out of reset
 0158 242F              mov R18,R20
 015A 2160              ori R18,1
 015C 0027              clr R16
 015E 9EDF              xcall _WriteToCC1000Register
 0160                   .dbline -2
 0160           L42:
 0160 0E940000          xcall pop_gset1
 0164                   .dbline 0 ; func end
 0164 0895              ret
 0166                   .dbsym r MainValue 20 c
 0166                   .dbend
 0166                   .dbfunc e CalibrateCC1000 _CalibrateCC1000 fc
 0166           ; TimeOutCounter -> R20,R21
                        .even
 0166           _CalibrateCC1000::
 0166 0E940000          xcall push_gset1
 016A                   .dbline -1
 016A                   .dbline 397
 016A           ; }
 016A           ; 
 016A           ; 
 016A           ; /****************************************************************************/
 016A           ; /*  This routine calibrates the CC1000                                      */
 016A           ; /*  Returns 0 if calibration fails, non-zero otherwise. Checks the LOCK     */
 016A           ; /*  to check for success.                                                   */
 016A           ; /****************************************************************************/
 016A           ; 
 016A           ; char CalibrateCC1000(void)
 016A           ; {  
 016A                   .dbline 400
 016A           ;   int TimeOutCounter;
 016A           ; 
 016A           ;   WriteToCC1000Register(CC1000_PA_POW,0x00); // Turn off PA to avoid spurs
 016A 2227              clr R18
 016C 0BE0              ldi R16,11
 016E 96DF              xcall _WriteToCC1000Register
 0170                   .dbline 402
 0170           ;                                              // during calibration in TX mode
 0170           ;   WriteToCC1000Register(CC1000_CAL,0xA6); // Start calibration
 0170 26EA              ldi R18,166
 0172 0EE0              ldi R16,14
 0174 93DF              xcall _WriteToCC1000Register
 0176                   .dbline 405
 0176 4EEF              ldi R20,32766
 0178 5FE7              ldi R21,127
 017A 02C0              xjmp L47
 017C           L44:
 017C                   .dbline 405
 017C           L45:
 017C                   .dbline 405
 017C 4150              subi R20,1
 017E 5040              sbci R21,0
 0180           L47:
 0180                   .dbline 405
 0180           ; 
 0180           ;   // Wait for calibration complete
 0180           ;   for(TimeOutCounter=CAL_TIMEOUT; ((ReadFromCC1000Register(CC1000_CAL)&0x08)==0)&&(TimeOutCounter>0); TimeOutCounter--);
 0180 0EE0              ldi R16,14
 0182 AFDF              xcall _ReadFromCC1000Register
 0184 03FD              sbrc R16,3
 0186 05C0              rjmp L48
 0188 2224              clr R2
 018A 3324              clr R3
 018C 2416              cp R2,R20
 018E 3506              cpc R3,R21
 0190 ACF3              brlt L44
 0192           L48:
 0192                   .dbline 407
 0192           ; 
 0192           ;   WriteToCC1000Register(CC1000_CAL,0x26); /* End calibration */
 0192 26E2              ldi R18,38
 0194 0EE0              ldi R16,14
 0196 82DF              xcall _WriteToCC1000Register
 0198                   .dbline 408
 0198           ;   WriteToCC1000Register(CC1000_PA_POW,PA_VALUE); /* Restore PA setting */
 0198 20EF              ldi R18,240
 019A 0BE0              ldi R16,11
 019C 7FDF              xcall _WriteToCC1000Register
 019E                   .dbline 410
 019E 4EEF              ldi R20,32766
 01A0 5FE7              ldi R21,127
 01A2 02C0              xjmp L52
 01A4           L49:
 01A4                   .dbline 410
 01A4           L50:
 01A4                   .dbline 410
 01A4 4150              subi R20,1
 01A6 5040              sbci R21,0
 01A8           L52:
 01A8                   .dbline 410
 01A8           ;   // Wait for lock
 01A8           ;   for(TimeOutCounter=LOCK_TIMEOUT; ((ReadFromCC1000Register(CC1000_LOCK)&0x01)==0)&&(TimeOutCounter>0); TimeOutCounter--);
 01A8 0DE0              ldi R16,13
 01AA 9BDF              xcall _ReadFromCC1000Register
 01AC 00FD              sbrc R16,0
 01AE 05C0              rjmp L53
 01B0 2224              clr R2
 01B2 3324              clr R3
 01B4 2416              cp R2,R20
 01B6 3506              cpc R3,R21
 01B8 ACF3              brlt L49
 01BA           L53:
 01BA                   .dbline 414
 01BA           ;   
 01BA           ;   
 01BA           ; 
 01BA           ;   return ((ReadFromCC1000Register(CC1000_LOCK)&0x01)==1);
 01BA 0DE0              ldi R16,13
 01BC 92DF              xcall _ReadFromCC1000Register
 01BE 802F              mov R24,R16
 01C0 8170              andi R24,1
 01C2 8130              cpi R24,1
 01C4 19F4              brne L54
 01C6 41E0              ldi R20,1
 01C8 50E0              ldi R21,0
 01CA 02C0              xjmp L55
 01CC           L54:
 01CC 4427              clr R20
 01CE 5527              clr R21
 01D0           L55:
 01D0 042F              mov R16,R20
 01D2                   .dbline -2
 01D2           L43:
 01D2 0E940000          xcall pop_gset1
 01D6                   .dbline 0 ; func end
 01D6 0895              ret
 01D8                   .dbsym r TimeOutCounter 20 I
 01D8                   .dbend
 01D8                   .dbfunc e SetupCC1000RX _SetupCC1000RX fc
 01D8           ;    lock_status -> R20
 01D8           ;              i -> R20,R21
 01D8           ;          RXPLL -> R22
 01D8           ;      RXCurrent -> R20
                        .even
 01D8           _SetupCC1000RX::
 01D8 0E940000          xcall push_gset2
 01DC 622F              mov R22,R18
 01DE 402F              mov R20,R16
 01E0                   .dbline -1
 01E0                   .dbline 425
 01E0           ;  //return (1);
 01E0           ; }
 01E0           ; 
 01E0           ; /****************************************************************************/
 01E0           ; /*  This routine puts the CC1000 into RX mode (from TX). When switching to  */
 01E0           ; /*  RX from PD, use WakeupC1000ToRX first                                   */
 01E0           ; /****************************************************************************/
 01E0           ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -