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

📄 cc1100.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 044C 0895              ret
                        .area vector(rom, abs)
                        .org 8
 0008 0C942702          jmp _cc1100_rx_isr
                        .area text(rom, con, rel)
                ;   packetLength -> R20
                        .even
 044E           _cc1100_rx_isr::
 044E 0E940000          xcall push_lset
 0452 0E940000          xcall push_gset1
 0456 2197              sbiw R28,1
 0458           ;               }
 0458           ;       }
 0458           ; /**************************************************/   
 0458           ; 
 0458           ;   //接收到数据中断
 0458           ; 
 0458           ;   #pragma interrupt_handler cc1100_rx_isr:3
 0458           ;  void cc1100_rx_isr()
 0458           ;         {                         
 0458           ;                   unsigned char packetLength;         
 0458           ;                   //led2Toggle();
 0458           ;                       packetLength = halSpiReadReg(CCxxx0_RXFIFO);                    
 0458 0FEF              ldi R16,255
 045A 36DF              xcall _halSpiReadReg
 045C 402F              mov R20,R16
 045E           ;                       rxBuffer[0]=packetLength;                       
 045E 40930100          sts _rxBuffer,R20
 0462           ;                       if(rxBuffer[0] <= 32)
 0462 80E2              ldi R24,32
 0464 8017              cp R24,R16
 0466 50F0              brlo L102
 0468           ;                   {
 0468           ;                               halSpiReadBurstReg(CCxxx0_RXFIFO, &rxBuffer[1], packetLength);
 0468 4883              std y+0,R20
 046A 20E0              ldi R18,<_rxBuffer+1
 046C 30E0              ldi R19,>_rxBuffer+1
 046E 0FEF              ldi R16,255
 0470 48DF              xcall _halSpiReadBurstReg
 0472           ;                               post(CC1100_receive);
 0472 00E0              ldi R16,<PL_CC1100_receive
 0474 10E0              ldi R17,>PL_CC1100_receive
 0476 0E940000          xcall _post
 047A           ;                   }
 047A 02C0              xjmp L103
 047C           L102:
 047C           ; 		    else
 047C           ; 		    {
 047C           ; 		    	 halSpiStrobe(CCxxx0_SFRX);   
 047C 0AE3              ldi R16,58
 047E 9DDE              xcall _halSpiStrobe
 0480           ;                   }
 0480           L103:
 0480           ; 		    halSpiStrobe(CCxxx0_SFRX);
 0480 0AE3              ldi R16,58
 0482 9BDE              xcall _halSpiStrobe
 0484           ;                   halSpiStrobe(CCxxx0_SRX);                                                                                                                                                              
 0484 04E3              ldi R16,52
 0486 99DE              xcall _halSpiStrobe
 0488           L101:
 0488 2196              adiw R28,1
 048A 0E940000          xcall pop_gset1
 048E 0E940000          xcall pop_lset
 0492                   .dbline 0 ; func end
 0492 1895              reti
 0494           ;            nnn -> R20,R21
                        .even
 0494           _CC1100_init::
 0494 0E940000          xcall push_gset1
 0498 2197              sbiw R28,1
 049A           ;         }
 049A           ; /**************************************************/ 
 049A           ; //extern led2On();
 049A           ;       //初始化
 049A           ;       uint8_t CC1100_init()
 049A           ;       {
 049A           ;               uint16_t nnn;
 049A           ;               
 049A           ;               SET_CSN();
 049A CADD              xcall _SET_CSN
 049C           ;               CLEAR_CLOCK();
 049C B7DD              xcall _CLEAR_CLOCK
 049E           ;               CLEAR_IN();
 049E C2DD              xcall _CLEAR_IN
 04A0           ;       
 04A0           ;               CC1100_setInterrupt(0x00);
 04A0 0027              clr R16
 04A2 1127              clr R17
 04A4 54D0              xcall _CC1100_setInterrupt
 04A6           ;               CC1100_POR();
 04A6 BEDE              xcall _CC1100_POR
 04A8 4427              clr R20
 04AA 5527              clr R21
 04AC 02C0              xjmp L109
 04AE           L106:
 04AE           L107:
 04AE 4F5F              subi R20,255  ; offset = 1
 04B0 5F4F              sbci R21,255
 04B2           L109:
 04B2           ; 		for(nnn=0;nnn<500;nnn++);
 04B2 443F              cpi R20,244
 04B4 E1E0              ldi R30,1
 04B6 5E07              cpc R21,R30
 04B8 D0F3              brlo L106
 04BA           ;                       
 04BA           ;               halRfWriteRfSettings();
 04BA 60DF              xcall _halRfWriteRfSettings
 04BC           ;                  // led2On();
 04BC           ;               halSpiWriteBurstReg(CCxxx0_PATABLE, paTable, sizeof(paTable));
 04BC 88E0              ldi R24,8
 04BE 8883              std y+0,R24
 04C0 20E0              ldi R18,<_paTable
 04C2 30E0              ldi R19,>_paTable
 04C4 0EE3              ldi R16,62
 04C6 8ADE              xcall _halSpiWriteBurstReg
 04C8           ;               
 04C8           ;               CC1100_setInterrupt(0x00);
 04C8 0027              clr R16
 04CA 1127              clr R17
 04CC 40D0              xcall _CC1100_setInterrupt
 04CE           ;               CC1100_setStrobe(CCxxx0_SIDLE);
 04CE 06E3              ldi R16,54
 04D0 10E0              ldi R17,0
 04D2 05D0              xcall _CC1100_setStrobe
 04D4           ;               
 04D4           ;               return 1;
 04D4 01E0              ldi R16,1
 04D6           L105:
 04D6 2196              adiw R28,1
 04D8 0E940000          xcall pop_gset1
 04DC                   .dbline 0 ; func end
 04DC 0895              ret
 04DE           ;          state -> R20
                        .even
 04DE           _CC1100_setStrobe::
 04DE 0E940000          xcall push_gset1
 04E2 402F              mov R20,R16
 04E4           ;       } 
 04E4           ;       //设置状态
 04E4           ;       uint8_t CC1100_setStrobe(uint8_t state)
 04E4           ;       {
 04E4           ;               halSpiStrobe(state);
 04E4 042F              mov R16,R20
 04E6 69DE              xcall _halSpiStrobe
 04E8           ;               Dly1mS(5);
 04E8 05E0              ldi R16,5
 04EA 10E0              ldi R17,0
 04EC C8DD              xcall _Dly1mS
 04EE           ;               return 1;
 04EE 01E0              ldi R16,1
 04F0           L110:
 04F0 0E940000          xcall pop_gset1
 04F4                   .dbline 0 ; func end
 04F4 0895              ret
 04F6           ;          value -> R22
 04F6           ;        address -> R20
                        .even
 04F6           _CC1100_setRegister::
 04F6 0E940000          xcall push_gset2
 04FA 622F              mov R22,R18
 04FC 402F              mov R20,R16
 04FE           ;       }
 04FE           ;       //写寄存器
 04FE           ;       uint8_t CC1100_setRegister(uint8_t address,uint8_t value)
 04FE           ;       {
 04FE           ;               halSpiWriteReg(address,value);
 04FE 262F              mov R18,R22
 0500 042F              mov R16,R20
 0502 46DE              xcall _halSpiWriteReg
 0504           ;               return 1;
 0504 01E0              ldi R16,1
 0506           L111:
 0506 0E940000          xcall pop_gset2
 050A                   .dbline 0 ; func end
 050A 0895              ret
 050C           ;        address -> R20
                        .even
 050C           _CC1100_readRegister::
 050C 0E940000          xcall push_gset1
 0510 402F              mov R20,R16
 0512           ;       }
 0512           ;     //读寄存器        
 0512           ;       uint8_t CC1100_readRegister(uint8_t address)
 0512           ;       {               
 0512           ;               rd_reg = halSpiReadReg(address);
 0512 042F              mov R16,R20
 0514 D9DE              xcall _halSpiReadReg
 0516 00930000          sts _rd_reg,R16
 051A           ;               return rd_reg;
 051A           L112:
 051A 0E940000          xcall pop_gset1
 051E                   .dbline 0 ; func end
 051E 0895              ret
 0520           ;        address -> R20
                        .even
 0520           _CC1100_readStatus::
 0520 0E940000          xcall push_gset1
 0524 402F              mov R20,R16
 0526           ;       }
 0526           ;       //读状态
 0526           ;       uint8_t CC1100_readStatus(uint8_t address)
 0526           ;       {               
 0526           ;               return halSpiReadStatus(address);
 0526 042F              mov R16,R20
 0528 14DF              xcall _halSpiReadStatus
 052A           L113:
 052A 0E940000          xcall pop_gset1
 052E                   .dbline 0 ; func end
 052E 0895              ret
 0530           ;          count -> y+5
 0530           ;         buffer -> R22,R23
 0530           ;           addr -> R20
                        .even
 0530           _CC1100_readBurstReg::
 0530 0E940000          xcall push_gset2
 0534 B901              movw R22,R18
 0536 402F              mov R20,R16
 0538 2197              sbiw R28,1
 053A           ;               
 053A           ;       }
 053A           ;       //连续读
 053A           ;       uint8_t CC1100_readBurstReg(unsigned char addr, unsigned char *buffer, unsigned char count)
 053A           ;       {               
 053A           ;                halSpiReadBurstReg(addr, buffer, count);
 053A 0D80              ldd R0,y+5
 053C 0882              std y+0,R0
 053E 9B01              movw R18,R22
 0540 042F              mov R16,R20
 0542 DFDE              xcall _halSpiReadBurstReg
 0544           ;               return 1;
 0544 01E0              ldi R16,1
 0546           L114:
 0546 2196              adiw R28,1
 0548 0E940000          xcall pop_gset2
 054C                   .dbline 0 ; func end
 054C 0895              ret
 054E           ;           flag -> R20
                        .even
 054E           _CC1100_setInterrupt::
 054E 0E940000          xcall push_gset1
 0552 402F              mov R20,R16
 0554           ;       }
 0554           ;       //halSpiReadStatus
 0554           ;       //设置中断
 0554           ;       uint8_t CC1100_setInterrupt(uint8_t flag)
 0554           ;       {
 0554           ;               if(flag==0x00)
 0554 4423              tst R20
 0556 49F4              brne L116
 0558           ;               {
 0558           ;                       EIFR=0x02;EICRA=0x08;EICRB=0x00;EIMSK=0x00;
 0558 82E0              ldi R24,2
 055A 88BF              out 0x38,R24
 055C 88E0              ldi R24,8
 055E 80936A00          sts 106,R24
 0562 2224              clr R2
 0564 2ABE              out 0x3a,R2
 0566 29BE              out 0x39,R2
 0568           ;               }
 0568 12C0              xjmp L117
 056A           L116:
 056A           ; 		else if(flag==0x01)
 056A 4130              cpi R20,1
 056C 61F4              brne L118
 056E           ;               {
 056E           ;                       EIFR=0x02;EICRA=0x08;EICRB=0x00;EIMSK=0x02;
 056E 82E0              ldi R24,2
 0570 88BF              out 0x38,R24
 0572 88E0              ldi R24,8
 0574 80936A00          sts 106,R24
 0578 2224              clr R2
 057A 2ABE              out 0x3a,R2
 057C 82E0              ldi R24,2
 057E 89BF              out 0x39,R24
 0580           ;                       halSpiStrobe(CCxxx0_SRX);
 0580 04E3              ldi R16,52
 0582 1BDE              xcall _halSpiStrobe
 0584           ;               }
 0584 04C0              xjmp L119
 0586           L118:
 0586           ; 		else if(flag==0x02)
 0586 4230              cpi R20,2
 0588 11F4              brne L120
 058A           ;               {
 058A           ;                       halSpiStrobe(CCxxx0_SRX); 
 058A 04E3              ldi R16,52
 058C 16DE              xcall _halSpiStrobe
 058E           ;               }               
 058E           L120:
 058E           L119:
 058E           L117:
 058E           ; 		return 1;
 058E 01E0              ldi R16,1
 0590           L115:
 0590 0E940000          xcall pop_gset1
 0594                   .dbline 0 ; func end
 0594 0895              ret
 0596           ;           size -> R22
 0596           ;          txPtr -> R20,R21
                        .even
 0596           _CC1100_sendRFburst::
 0596 0E940000          xcall push_gset2
 059A 622F              mov R22,R18
 059C A801              movw R20,R16
 059E           ;       }
 059E           ;       
 059E           ;       //extern led1On();
 059E           ;       //连续发
 059E           ;       uint8_t CC1100_sendRFburst(uint8_t *txPtr,uint8_t size)
 059E           ;       {
 059E           ;               //led1On();
 059E           ;               CC1100_setInterrupt(0x00); //关中断
 059E 0027              clr R16
 05A0 D6DF              xcall _CC1100_setInterrupt
 05A2           ;               halSpiStrobe(CCxxx0_SIDLE);
 05A2 06E3              ldi R16,54
 05A4 0ADE              xcall _halSpiStrobe
 05A6           ;               halRfSendPacket(txPtr, size);
 05A6 262F              mov R18,R22
 05A8 8A01              movw R16,R20
 05AA 6BDE              xcall _halRfSendPacket
 05AC           ;               //Dly1mS(100);
 05AC           ;               if(SEND_DONE==0x01) //表明发送完成
 05AC 80910800          lds R24,_SEND_DONE
 05B0 8130              cpi R24,1
 05B2 49F4              brne L123
 05B4           ;               {
 05B4           ;                       SEND_DONE=0x00;
 05B4 2224              clr R2
 05B6 20920800          sts _SEND_DONE,R2
 05BA           ;                       //led2On();
 05BA           ;                       CC1100_sendDone(1);
 05BA 01E0              ldi R16,1
 05BC 10E0              ldi R17,0
 05BE 0E940000          xcall _CC1100_sendDone
 05C2           ;                       CC1100_setInterrupt(0x01); //开中断
 05C2 01E0              ldi R16,1
 05C4 C4DF              xcall _CC1100_setInterrupt
 05C6           ;               }
 05C6           L123:
 05C6           ; 		return 1;
 05C6 01E0              ldi R16,1
 05C8           L122:
 05C8 0E940000          xcall pop_gset2
 05CC                   .dbline 0 ; func end
 05CC 0895              ret
                        .area bss(ram, con, rel)
 0000           _rd_reg::
 0000                   .blkb 1
 0001           _rxBuffer::
 0001                   .blkb 32
                        .area func_lit
 0000 0000      PL_CC1100_receive:      .word `_CC1100_receive

⌨️ 快捷键说明

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