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

📄 cc1100.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0516           ;  void cc1100_rx_isr()
 0516           ;         {                         
 0516           ;                   unsigned char packetLength;         
 0516           ;                   //led2Toggle();
 0516           ;                       packetLength = halSpiReadReg(CCxxx0_RXFIFO);                    
 0516 0FEF              ldi R16,255
 0518 0BDF              xcall _halSpiReadReg
 051A 402F              mov R20,R16
 051C           ;                       rxBuffer[0]=packetLength;                       
 051C 40930100          sts _rxBuffer,R20
 0520           ;                       if(rxBuffer[0] <= 32)
 0520 80E2              ldi R24,32
 0522 8017              cp R24,R16
 0524 50F0              brlo L96
 0526           ;                   {
 0526           ;                               halSpiReadBurstReg(CCxxx0_RXFIFO, &rxBuffer[1], packetLength);
 0526 4883              std y+0,R20
 0528 20E0              ldi R18,<_rxBuffer+1
 052A 30E0              ldi R19,>_rxBuffer+1
 052C 0FEF              ldi R16,255
 052E 2DDF              xcall _halSpiReadBurstReg
 0530           ;                               post(CC1100_receive);
 0530 00E0              ldi R16,<PL_CC1100_receive
 0532 10E0              ldi R17,>PL_CC1100_receive
 0534 0E940000          xcall _post
 0538           ;                   }
 0538 02C0              xjmp L97
 053A           L96:
 053A           ; 		    else
 053A           ; 		    {
 053A           ; 		    	 halSpiStrobe(CCxxx0_SFRX);
 053A 0AE3              ldi R16,58
 053C 52DE              xcall _halSpiStrobe
 053E           ;                   }
 053E           L97:
 053E           ; 		    halSpiStrobe(CCxxx0_SFRX);
 053E 0AE3              ldi R16,58
 0540 50DE              xcall _halSpiStrobe
 0542           ;                   halSpiStrobe(CCxxx0_SRX);                                                                                                                                                              
 0542 04E3              ldi R16,52
 0544 4EDE              xcall _halSpiStrobe
 0546           L95:
 0546 2196              adiw R28,1
 0548 0E940000          xcall pop_gset1
 054C 0E940000          xcall pop_lset
 0550                   .dbline 0 ; func end
 0550 1895              reti
 0552           ;            nnn -> R20,R21
                        .even
 0552           _CC1100_init::
 0552 0E940000          xcall push_gset1
 0556 2197              sbiw R28,1
 0558           ;         }
 0558           ; /**************************************************/ 
 0558           ; //extern led2On();
 0558           ;       //初始化
 0558           ;       uint8_t CC1100_init()
 0558           ;       {
 0558           ;               uint16_t nnn;
 0558           ;               
 0558           ;               SET_CSN();
 0558 AA9A              sbi 0x15,2
 055A           ;               CLEAR_CLOCK();
 055A 80916500          lds R24,101
 055E 8E7F              andi R24,254
 0560 80936500          sts 101,R24
 0564           ;               CLEAR_IN();
 0564 80916500          lds R24,101
 0568 8D7F              andi R24,253
 056A 80936500          sts 101,R24
 056E           ;       
 056E           ;               CC1100_setInterrupt(0x00);
 056E 0027              clr R16
 0570 1127              clr R17
 0572 54D0              xcall _CC1100_setInterrupt
 0574           ;               CC1100_POR();
 0574 83DE              xcall _CC1100_POR
 0576 4427              clr R20
 0578 5527              clr R21
 057A 02C0              xjmp L103
 057C           L100:
 057C           L101:
 057C 4F5F              subi R20,255  ; offset = 1
 057E 5F4F              sbci R21,255
 0580           L103:
 0580           ; 		for(nnn=0;nnn<500;nnn++);
 0580 443F              cpi R20,244
 0582 E1E0              ldi R30,1
 0584 5E07              cpc R21,R30
 0586 D0F3              brlo L100
 0588           ;                       
 0588           ;               halRfWriteRfSettings();
 0588 58DF              xcall _halRfWriteRfSettings
 058A           ;                  // led2On();
 058A           ;               halSpiWriteBurstReg(CCxxx0_PATABLE, paTable, sizeof(paTable));
 058A 88E0              ldi R24,8
 058C 8883              std y+0,R24
 058E 20E0              ldi R18,<_paTable
 0590 30E0              ldi R19,>_paTable
 0592 0EE3              ldi R16,62
 0594 43DE              xcall _halSpiWriteBurstReg
 0596           ;               
 0596           ;               CC1100_setInterrupt(0x00);
 0596 0027              clr R16
 0598 1127              clr R17
 059A 40D0              xcall _CC1100_setInterrupt
 059C           ;               CC1100_setStrobe(CCxxx0_SIDLE);
 059C 06E3              ldi R16,54
 059E 10E0              ldi R17,0
 05A0 05D0              xcall _CC1100_setStrobe
 05A2           ;               
 05A2           ;               return 1;
 05A2 01E0              ldi R16,1
 05A4           L99:
 05A4 2196              adiw R28,1
 05A6 0E940000          xcall pop_gset1
 05AA                   .dbline 0 ; func end
 05AA 0895              ret
 05AC           ;          state -> R20
                        .even
 05AC           _CC1100_setStrobe::
 05AC 0E940000          xcall push_gset1
 05B0 402F              mov R20,R16
 05B2           ;       } 
 05B2           ;       //设置状态
 05B2           ;       uint8_t CC1100_setStrobe(uint8_t state)
 05B2           ;       {
 05B2           ;               halSpiStrobe(state);
 05B2 042F              mov R16,R20
 05B4 16DE              xcall _halSpiStrobe
 05B6           ;               Dly1mS(5);
 05B6 05E0              ldi R16,5
 05B8 10E0              ldi R17,0
 05BA 45DD              xcall _Dly1mS
 05BC           ;               return 1;
 05BC 01E0              ldi R16,1
 05BE           L104:
 05BE 0E940000          xcall pop_gset1
 05C2                   .dbline 0 ; func end
 05C2 0895              ret
 05C4           ;          value -> R22
 05C4           ;        address -> R20
                        .even
 05C4           _CC1100_setRegister::
 05C4 0E940000          xcall push_gset2
 05C8 622F              mov R22,R18
 05CA 402F              mov R20,R16
 05CC           ;       }
 05CC           ;       //写寄存器
 05CC           ;       uint8_t CC1100_setRegister(uint8_t address,uint8_t value)
 05CC           ;       {
 05CC           ;               halSpiWriteReg(address,value);
 05CC 262F              mov R18,R22
 05CE 042F              mov R16,R20
 05D0 E7DD              xcall _halSpiWriteReg
 05D2           ;               return 1;
 05D2 01E0              ldi R16,1
 05D4           L105:
 05D4 0E940000          xcall pop_gset2
 05D8                   .dbline 0 ; func end
 05D8 0895              ret
 05DA           ;        address -> R20
                        .even
 05DA           _CC1100_readRegister::
 05DA 0E940000          xcall push_gset1
 05DE 402F              mov R20,R16
 05E0           ;       }
 05E0           ;     //读寄存器        
 05E0           ;       uint8_t CC1100_readRegister(uint8_t address)
 05E0           ;       {               
 05E0           ;               rd_reg = halSpiReadReg(address);
 05E0 042F              mov R16,R20
 05E2 A6DE              xcall _halSpiReadReg
 05E4 00930000          sts _rd_reg,R16
 05E8           ;               return rd_reg;
 05E8           L106:
 05E8 0E940000          xcall pop_gset1
 05EC                   .dbline 0 ; func end
 05EC 0895              ret
 05EE           ;        address -> R20
                        .even
 05EE           _CC1100_readStatus::
 05EE 0E940000          xcall push_gset1
 05F2 402F              mov R20,R16
 05F4           ;       }
 05F4           ;       //读状态
 05F4           ;       uint8_t CC1100_readStatus(uint8_t address)
 05F4           ;       {               
 05F4           ;               return halSpiReadStatus(address);
 05F4 042F              mov R16,R20
 05F6 01DF              xcall _halSpiReadStatus
 05F8           L107:
 05F8 0E940000          xcall pop_gset1
 05FC                   .dbline 0 ; func end
 05FC 0895              ret
 05FE           ;          count -> y+5
 05FE           ;         buffer -> R22,R23
 05FE           ;           addr -> R20
                        .even
 05FE           _CC1100_readBurstReg::
 05FE 0E940000          xcall push_gset2
 0602 B901              movw R22,R18
 0604 402F              mov R20,R16
 0606 2197              sbiw R28,1
 0608           ;               
 0608           ;       }
 0608           ;       //连续读
 0608           ;       uint8_t CC1100_readBurstReg(unsigned char addr, unsigned char *buffer, unsigned char count)
 0608           ;       {               
 0608           ;                halSpiReadBurstReg(addr, buffer, count);
 0608 0D80              ldd R0,y+5
 060A 0882              std y+0,R0
 060C 9B01              movw R18,R22
 060E 042F              mov R16,R20
 0610 BCDE              xcall _halSpiReadBurstReg
 0612           ;               return 1;
 0612 01E0              ldi R16,1
 0614           L108:
 0614 2196              adiw R28,1
 0616 0E940000          xcall pop_gset2
 061A                   .dbline 0 ; func end
 061A 0895              ret
 061C           ;           flag -> R20
                        .even
 061C           _CC1100_setInterrupt::
 061C 0E940000          xcall push_gset1
 0620 402F              mov R20,R16
 0622           ;       }
 0622           ;       //halSpiReadStatus
 0622           ;       //设置中断
 0622           ;       uint8_t CC1100_setInterrupt(uint8_t flag)
 0622           ;       {
 0622           ;               if(flag==0x00)
 0622 4423              tst R20
 0624 49F4              brne L110
 0626           ;               {
 0626           ;                       EIFR=0x02;EICRA=0x08;EICRB=0x00;EIMSK=0x00;
 0626 82E0              ldi R24,2
 0628 88BF              out 0x38,R24
 062A 88E0              ldi R24,8
 062C 80936A00          sts 106,R24
 0630 2224              clr R2
 0632 2ABE              out 0x3a,R2
 0634 29BE              out 0x39,R2
 0636           ;               }
 0636 12C0              xjmp L111
 0638           L110:
 0638           ; 		else if(flag==0x01)
 0638 4130              cpi R20,1
 063A 61F4              brne L112
 063C           ;               {
 063C           ;                       EIFR=0x02;EICRA=0x08;EICRB=0x00;EIMSK=0x02;
 063C 82E0              ldi R24,2
 063E 88BF              out 0x38,R24
 0640 88E0              ldi R24,8
 0642 80936A00          sts 106,R24
 0646 2224              clr R2
 0648 2ABE              out 0x3a,R2
 064A 82E0              ldi R24,2
 064C 89BF              out 0x39,R24
 064E           ;                       halSpiStrobe(CCxxx0_SRX);
 064E 04E3              ldi R16,52
 0650 C8DD              xcall _halSpiStrobe
 0652           ;               }
 0652 04C0              xjmp L113
 0654           L112:
 0654           ; 		else if(flag==0x02)
 0654 4230              cpi R20,2
 0656 11F4              brne L114
 0658           ;               {
 0658           ;                       halSpiStrobe(CCxxx0_SRX); 
 0658 04E3              ldi R16,52
 065A C3DD              xcall _halSpiStrobe
 065C           ;               }               
 065C           L114:
 065C           L113:
 065C           L111:
 065C           ; 		return 1;
 065C 01E0              ldi R16,1
 065E           L109:
 065E 0E940000          xcall pop_gset1
 0662                   .dbline 0 ; func end
 0662 0895              ret
 0664           ;           size -> R22
 0664           ;          txPtr -> R20,R21
                        .even
 0664           _CC1100_sendRFburst::
 0664 0E940000          xcall push_gset2
 0668 622F              mov R22,R18
 066A A801              movw R20,R16
 066C           ;       }
 066C           ;       
 066C           ;       //extern led1On();
 066C           ;       //连续发
 066C           ;       uint8_t CC1100_sendRFburst(uint8_t *txPtr,uint8_t size)
 066C           ;       {
 066C           ;               //led1On();
 066C           ;               CC1100_setInterrupt(0x00); //关中断
 066C 0027              clr R16
 066E D6DF              xcall _CC1100_setInterrupt
 0670           ;               halSpiStrobe(CCxxx0_SIDLE);
 0670 06E3              ldi R16,54
 0672 B7DD              xcall _halSpiStrobe
 0674           ;               halRfSendPacket(txPtr, size);
 0674 262F              mov R18,R22
 0676 8A01              movw R16,R20
 0678 38DE              xcall _halRfSendPacket
 067A           ;               //Dly1mS(100);
 067A           ;               if(SEND_DONE==0x01) //表明发送完成
 067A 80910800          lds R24,_SEND_DONE
 067E 8130              cpi R24,1
 0680 49F4              brne L117
 0682           ;               {
 0682           ;                       SEND_DONE=0x00;
 0682 2224              clr R2
 0684 20920800          sts _SEND_DONE,R2
 0688           ;                       //led2On();
 0688           ;                       CC1100_sendDone(1);
 0688 01E0              ldi R16,1
 068A 10E0              ldi R17,0
 068C 0E940000          xcall _CC1100_sendDone
 0690           ;                       CC1100_setInterrupt(0x01); //开中断
 0690 01E0              ldi R16,1
 0692 C4DF              xcall _CC1100_setInterrupt
 0694           ;               }
 0694           L117:
 0694           ; 		return 1;
 0694 01E0              ldi R16,1
 0696           L116:
 0696 0E940000          xcall pop_gset2
 069A                   .dbline 0 ; func end
 069A 0895              ret
 069C           ;      channr_NO -> R20
                        .even
 069C           _CC1100_change_channr::
 069C 0E940000          xcall push_gset1
 06A0 402F              mov R20,R16
 06A2           ;       }
 06A2           ; /*
 06A2           ;       uint8_t CC1100_sendDone()
 06A2           ;       {
 06A2           ;               return success;
 06A2           ;       }
 06A2           ;       uint8_t CC1100_receive(uint8_t *msg)
 06A2           ;       {
 06A2           ;               return msg;
 06A2           ;       }
 06A2           ; */
 06A2           ; //更改通道号
 06A2           ; void CC1100_change_channr(unsigned char channr_NO)
 06A2           ; {
 06A2           ;   halSpiWriteReg(CCxxx0_CHANNR,channr_NO );
 06A2 242F              mov R18,R20
 06A4 0AE0              ldi R16,10
 06A6 7CDD              xcall _halSpiWriteReg
 06A8           L119:
 06A8 0E940000          xcall pop_gset1
 06AC                   .dbline 0 ; func end
 06AC 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 + -