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

📄 cc1100.lis

📁 主要是通过AMEGAL88 来控制cc1100
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0274           ;  
 0274           ;       while(1)
 0274           ;       {
 0274                   .dbline 231
 0274           ;         status = spiReadStatus(0x35);
 0274 05E3              ldi R16,53
 0276 02DF              rcall _spiReadStatus
 0278 402F              mov R20,R16
 027A                   .dbline 232
 027A           ;         if(status == 1)
 027A 0130              cpi R16,1
 027C 09F4              brne L191
 027E                   .dbline 233
 027E           ;           break;
 027E 01C0              rjmp L190
 0280           L191:
 0280                   .dbline 234
 0280           L189:
 0280                   .dbline 229
 0280 F9CF              rjmp L188
 0282           L190:
 0282                   .dbline 240
 0282           ;       }
 0282           ;        /*
 0282           ;       
 0282           ;       while(!GDO0_PIN);
 0282           ;       while(GDO0_PIN);
 0282           ;    */
 0282           ;   fCC1100 = IDLE; 
 0282 2224              clr R2
 0284 20920000          sts _fCC1100,R2
 0288                   .dbline -2
 0288           L187:
 0288 2196              adiw R28,1
 028A 00D0              rcall pop_gset2
 028C                   .dbline 0 ; func end
 028C 0895              ret
 028E                   .dbsym r status 20 c
 028E                   .dbsym r size 22 c
 028E                   .dbsym r txBuffer 20 pc
 028E                   .dbend
 028E                   .dbfunc e spiReceivePacket _spiReceivePacket fc
 028E           ;       rxStatus -> y+2
 028E           ;   packetLength -> R20
 028E           ;         status -> R20
 028E           ;         length -> R22
 028E           ;       rxBuffer -> R10,R11
                        .even
 028E           _spiReceivePacket::
 028E 00D0              rcall push_gset3
 0290 622F              mov R22,R18
 0292 5801              movw R10,R16
 0294 2497              sbiw R28,4
 0296                   .dbline -1
 0296                   .dbline 244
 0296           ; }
 0296           ; 
 0296           ; BOOL spiReceivePacket(BYTE *rxBuffer,UINT8 length)
 0296           ; {
 0296                   .dbline 248
 0296           ;       
 0296           ;   UINT8 packetLength;
 0296           ;   BYTE  rxStatus[2];
 0296           ;   BYTE status = 0;
 0296 4427              clr R20
 0298                   .dbline 250
 0298           ;               
 0298           ;   memset(rxBuffer,0,10);
 0298 8AE0              ldi R24,10
 029A 90E0              ldi R25,0
 029C 9983              std y+1,R25
 029E 8883              std y+0,R24
 02A0 2227              clr R18
 02A2 3327              clr R19
 02A4 8501              movw R16,R10
 02A6 00D0              rcall _memset
 02A8                   .dbline 252
 02A8           ;     
 02A8           ;   spiStrobe(CC1100_SRX);
 02A8 04E3              ldi R16,52
 02AA 1FDF              rcall _spiStrobe
 02AC                   .dbline 253
 02AC           ;   fCC1100 = RECIEVE;
 02AC 82E0              ldi R24,2
 02AE 80930000          sts _fCC1100,R24
 02B2 06C0              rjmp L195
 02B4           L194:
 02B4                   .dbline 257
 02B4           ;   
 02B4           ;     
 02B4           ;   while(1)
 02B4           ;       {
 02B4                   .dbline 258
 02B4           ;         status = spiReadStatus(0x35);
 02B4 05E3              ldi R16,53
 02B6 E2DE              rcall _spiReadStatus
 02B8 402F              mov R20,R16
 02BA                   .dbline 260
 02BA           ;         
 02BA           ;         if(status == 1)
 02BA 0130              cpi R16,1
 02BC 09F4              brne L197
 02BE                   .dbline 261
 02BE           ;         {
 02BE                   .dbline 262
 02BE           ;           break;
 02BE 01C0              rjmp L196
 02C0           L197:
 02C0                   .dbline 264
 02C0           L195:
 02C0                   .dbline 256
 02C0 F9CF              rjmp L194
 02C2           L196:
 02C2                   .dbline 265
 02C2           ;         }
 02C2           ;       }
 02C2           ;   fCC1100 = IDLE;
 02C2 2224              clr R2
 02C4 20920000          sts _fCC1100,R2
 02C8                   .dbline 267
 02C8           ;       
 02C8           ;        if ((spiReadStatus(CC1100_RXBYTES) & BYTES_IN_RXFIFO))
 02C8 0BE3              ldi R16,59
 02CA D8DE              rcall _spiReadStatus
 02CC 802F              mov R24,R16
 02CE 8F77              andi R24,127
 02D0 C1F0              breq L199
 02D2                   .dbline 268
 02D2           ;        {
 02D2                   .dbline 270
 02D2           ;         // Read the first byte, also is the length byte
 02D2           ;         packetLength = spiReadReg(CC1100_RXFIFO);
 02D2 0FE3              ldi R16,63
 02D4 BEDE              rcall _spiReadReg
 02D6 402F              mov R20,R16
 02D8                   .dbline 273
 02D8           ;     
 02D8           ;         // Read data from RX FIFO and store in rxBuffer
 02D8           ;         if (packetLength <= length) 
 02D8 6017              cp R22,R16
 02DA 70F0              brlo L201
 02DC                   .dbline 274
 02DC           ;                   {
 02DC                   .dbline 275
 02DC           ;             spiReadBurstReg(CC1100_RXFIFO, rxBuffer, packetLength); 
 02DC 4883              std y+0,R20
 02DE 9501              movw R18,R10
 02E0 0FE3              ldi R16,63
 02E2 E3DE              rcall _spiReadBurstReg
 02E4                   .dbline 276
 02E4           ;             length = packetLength;     
 02E4 642F              mov R22,R20
 02E6                   .dbline 277
 02E6           ;             spiReadBurstReg(CC1100_RXFIFO, rxStatus, 2); 
 02E6 82E0              ldi R24,2
 02E8 8883              std y+0,R24
 02EA 9E01              movw R18,R28
 02EC 2E5F              subi R18,254  ; offset = 2
 02EE 3F4F              sbci R19,255
 02F0 0FE3              ldi R16,63
 02F2 DBDE              rcall _spiReadBurstReg
 02F4                   .dbline 279
 02F4           ;                            
 02F4           ;                       return TRUE;
 02F4 01E0              ldi R16,1
 02F6 06C0              rjmp L193
 02F8           L201:
 02F8                   .dbline 282
 02F8           ;             } 
 02F8           ;               else 
 02F8           ;                   {
 02F8                   .dbline 283
 02F8           ;             length = packetLength;
 02F8 642F              mov R22,R20
 02FA                   .dbline 285
 02FA           ; 
 02FA           ;             spiStrobe(CC1100_SFRX);
 02FA 0AE3              ldi R16,58
 02FC F6DE              rcall _spiStrobe
 02FE                   .dbline 286
 02FE           ;             return FALSE;
 02FE 0027              clr R16
 0300 01C0              rjmp L193
 0302           L199:
 0302                   .dbline 289
 0302           ;            }
 0302           ;     }
 0302           ;        return FALSE;
 0302 0027              clr R16
 0304                   .dbline -2
 0304           L193:
 0304 2496              adiw R28,4
 0306 00D0              rcall pop_gset3
 0308                   .dbline 0 ; func end
 0308 0895              ret
 030A                   .dbsym l rxStatus 2 A[2:2]c
 030A                   .dbsym r packetLength 20 c
 030A                   .dbsym r status 20 c
 030A                   .dbsym r length 22 c
 030A                   .dbsym r rxBuffer 10 pc
 030A                   .dbend
 030A                   .dbfunc e recPacket _recPacket fV
 030A           ;       rxStatus -> y+1
 030A           ;   packetLength -> R20
 030A           ;         length -> R22
 030A           ;       rxBuffer -> R10,R11
                        .even
 030A           _recPacket::
 030A 00D0              rcall push_gset3
 030C 622F              mov R22,R18
 030E 5801              movw R10,R16
 0310 2397              sbiw R28,3
 0312                   .dbline -1
 0312                   .dbline 293
 0312           ; }
 0312           ;       
 0312           ; void recPacket(BYTE *rxBuffer,UINT8 length)
 0312           ; {
 0312                   .dbline 299
 0312           ;   
 0312           ;   UINT8  packetLength;
 0312           ;   BYTE  rxStatus[2];
 0312           ;   
 0312           ;   
 0312           ;   if ((spiReadStatus(CC1100_RXBYTES) & BYTES_IN_RXFIFO))
 0312 0BE3              ldi R16,59
 0314 B3DE              rcall _spiReadStatus
 0316 802F              mov R24,R16
 0318 8F77              andi R24,127
 031A 99F0              breq L204
 031C                   .dbline 300
 031C           ;        {
 031C                   .dbline 301
 031C           ;         packetLength = spiReadReg(CC1100_RXFIFO);
 031C 0FE3              ldi R16,63
 031E 99DE              rcall _spiReadReg
 0320 402F              mov R20,R16
 0322                   .dbline 304
 0322           ;     
 0322           ;         // Read data from RX FIFO and store in rxBuffer
 0322           ;         if (packetLength <= length) 
 0322 6017              cp R22,R16
 0324 68F0              brlo L206
 0326                   .dbline 305
 0326           ;               {
 0326                   .dbline 306
 0326           ;             spiReadBurstReg(CC1100_RXFIFO, rxBuffer, packetLength); 
 0326 4883              std y+0,R20
 0328 9501              movw R18,R10
 032A 0FE3              ldi R16,63
 032C BEDE              rcall _spiReadBurstReg
 032E                   .dbline 307
 032E           ;             length = packetLength;     
 032E 642F              mov R22,R20
 0330                   .dbline 308
 0330           ;             spiReadBurstReg(CC1100_RXFIFO, rxStatus, 2); 
 0330 82E0              ldi R24,2
 0332 8883              std y+0,R24
 0334 9E01              movw R18,R28
 0336 2F5F              subi R18,255  ; offset = 1
 0338 3F4F              sbci R19,255
 033A 0FE3              ldi R16,63
 033C B6DE              rcall _spiReadBurstReg
 033E                   .dbline 312
 033E           ;                       
 033E           ;                             
 033E           ;                         
 033E           ;         } 
 033E 01C0              rjmp L207
 0340           L206:
 0340                   .dbline 314
 0340           ;               else 
 0340           ;               {
 0340                   .dbline 315
 0340           ;             length = packetLength;
 0340 642F              mov R22,R20
 0342                   .dbline 319
 0342           ; 
 0342           ;             
 0342           ;             
 0342           ;         }
 0342           L207:
 0342                   .dbline 320
 0342           ;               }
 0342           L204:
 0342                   .dbline 321
 0342           ;               spiStrobe(CC1100_SFRX);
 0342 0AE3              ldi R16,58
 0344 D2DE              rcall _spiStrobe
 0346                   .dbline 322
 0346           ;               fCC1100 = IDLE;
 0346 2224              clr R2
 0348 20920000          sts _fCC1100,R2
 034C                   .dbline -2
 034C           L203:
 034C 2396              adiw R28,3
 034E 00D0              rcall pop_gset3
 0350                   .dbline 0 ; func end
 0350 0895              ret
 0352                   .dbsym l rxStatus 1 A[2:2]c
 0352                   .dbsym r packetLength 20 c
 0352                   .dbsym r length 22 c
 0352                   .dbsym r rxBuffer 10 pc
 0352                   .dbend
 0352                   .dbfunc e initWorMode _initWorMode fV
                        .even
 0352           _initWorMode::
 0352                   .dbline -1
 0352                   .dbline 326
 0352           ; }     
 0352           ; 
 0352           ; void initWorMode(void)
 0352           ; {
 0352                   .dbline 330
 0352           ;   // Enable automatic initial calibration of RCosc.
 0352           ;   // Set T_event1 ~ 1.4 ms, enough for XOSC stabilize and FS calibration before RX.
 0352           ;   // Enable RC oscillator before starting with WOR (or else it will not wake up).
 0352           ;   spiWriteReg(CC1100_WORCTRL, 0x78);           // Not using AUTO_SYNC function.
 0352 28E7              ldi R18,120
 0354 00E2              ldi R16,32
 0356 D5DE              rcall _spiWriteReg
 0358                   .dbline 336
 0358           ;   
 0358           ;   // Set Event0 timeout = 1 s (RX polling interval)
 0358           ;   // WOR_RES = 0
 0358           ;   // T_event0 = 750 / f_xosc * EVENT0 * 2^(5*WOR_RES) = 1 s,f_xosc = 27 MHz
 0358           ;   // =>  EVENT0 = 0x8CA0
 0358           ;   spiWriteReg(CC1100_WOREVT1, 0x8C);                // High byte Event0 timeout
 0358 2CE8              ldi R18,140
 035A 0EE1              ldi R16,30
 035C D2DE              rcall _spiWriteReg
 035E                   .dbline 337
 035E           ;   spiWriteReg(CC1100_WOREVT0, 0xA0);                // Low byte Event0 timeout.
 035E 20EA              ldi R18,160
 0360 0FE1              ldi R16,31
 0362 CFDE              rcall _spiWriteReg
 0364                   .dbline 342
 0364           ;   
 0364           ;   // Setting Rx_timeout =2.596 ms.
 0364           ;   // MCSM2.RX_TIME = 000b
 0364           ;   // => Rx_timeout = EVENT0*C(RX_TIME, WOR_RES)
 0364           ;   spiWriteReg(CC1100_MCSM2, 0x00);
 0364 2227              clr R18
 0366 06E1              ldi R16,22
 0368 CCDE              rcall _spiWriteReg
 036A                   .dbline 345
 036A           ; 
 036A           ;   // Enable automatic FS calibration when going from IDLE to RX/TX/FSTXON (in between EVENT0 and EVENT1)
 036A           ;   spiWriteReg(CC1100_MCSM0, 0x18);
 036A 28E1              ldi R18,24
 036C 08E1              ldi R16,24
 036E C9DE              rcall _spiWriteReg
 0370                   .dbline 347
 0370           ;   
 0370           ;   spiStrobe(CC1100_SWORRST);
 0370 0CE3              ldi R16,60
 0372 BBDE              rcall _spiStrobe
 0374                   .dbline 348
 0374           ;   spiStrobe(CC1100_SWOR);
 0374 08E3              ldi R16,56
 0376 B9DE              rcall _spiStrobe
 0378                   .dbline 350
 0378           ;   
 0378           ;   fCC1100 = SLEEP;
 0378 83E0              ldi R24,3
 037A 80930000          sts _fCC1100,R24
 037E                   .dbline -2
 037E           L208:
 037E                   .dbline 0 ; func end
 037E 0895              ret
 0380                   .dbend

⌨️ 快捷键说明

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