📄 cc1100.lis
字号:
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 + -