📄 cc1100.lis
字号:
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
05CE ; channr_NO -> R20
.even
05CE _CC1100_change_channr::
05CE 0E940000 xcall push_gset1
05D2 402F mov R20,R16
05D4 ; }
05D4 ; /*
05D4 ; uint8_t CC1100_sendDone()
05D4 ; {
05D4 ; return success;
05D4 ; }
05D4 ; uint8_t CC1100_receive(uint8_t *msg)
05D4 ; {
05D4 ; return msg;
05D4 ; }
05D4 ; */
05D4 ; //更改通道号
05D4 ; void CC1100_change_channr(unsigned char channr_NO)
05D4 ; {
05D4 ; halSpiWriteReg(CCxxx0_CHANNR,channr_NO );
05D4 242F mov R18,R20
05D6 0AE0 ldi R16,10
05D8 DBDD xcall _halSpiWriteReg
05DA L125:
05DA 0E940000 xcall pop_gset1
05DE .dbline 0 ; func end
05DE 0895 ret
05E0 ; n -> R20,R21
05E0 ; m -> R22,R23
.even
05E0 _CC1100_wakeup::
05E0 0E940000 xcall push_gset2
05E4 ; }
05E4 ;
05E4 ; uint8_t CC1100_wakeup()
05E4 ; {
05E4 ; uint16_t n,m;
05E4 ; SET_CSN();
05E4 25DD xcall _SET_CSN
05E6 4427 clr R20
05E8 5527 clr R21
05EA 02C0 xjmp L130
05EC L127:
05EC L128:
05EC 4F5F subi R20,255 ; offset = 1
05EE 5F4F sbci R21,255
05F0 L130:
05F0 ; for(n=0;n<1000;n++);
05F0 483E cpi R20,232
05F2 E3E0 ldi R30,3
05F4 5E07 cpc R21,R30
05F6 D0F3 brlo L127
05F8 ; CLEAR_CSN();
05F8 1DDD xcall _CLEAR_CSN
05FA ; for(n=0;n<1000;n++)
05FA 4427 clr R20
05FC 5527 clr R21
05FE 0BC0 xjmp L134
0600 L131:
0600 6627 clr R22
0602 7727 clr R23
0604 02C0 xjmp L138
0606 L135:
0606 L136:
0606 6F5F subi R22,255 ; offset = 1
0608 7F4F sbci R23,255
060A L138:
060A 683E cpi R22,232
060C E3E0 ldi R30,3
060E 7E07 cpc R23,R30
0610 D0F3 brlo L135
0612 L132:
0612 4F5F subi R20,255 ; offset = 1
0614 5F4F sbci R21,255
0616 L134:
0616 483E cpi R20,232
0618 E3E0 ldi R30,3
061A 5E07 cpc R21,R30
061C 88F3 brlo L131
061E ; for(m=0;m<1000;m++);
061E ; SET_CSN();
061E 08DD xcall _SET_CSN
0620 ; return 1;
0620 01E0 ldi R16,1
0622 L126:
0622 0E940000 xcall pop_gset2
0626 .dbline 0 ; func end
0626 0895 ret
.even
0628 _CC1100_sleep::
0628 ; }
0628 ; uint8_t CC1100_sleep()
0628 ; {
0628 ; halSpiStrobe(CCxxx0_SIDLE);
0628 06E3 ldi R16,54
062A C7DD xcall _halSpiStrobe
062C ; CC1100_setStrobe(0x39);
062C 09E3 ldi R16,57
062E 57DF xcall _CC1100_setStrobe
0630 ; PowerEnable();
0630 0E940000 xcall _PowerEnable
0634 ; return 1;
0634 01E0 ldi R16,1
0636 L139:
0636 .dbline 0 ; func end
0636 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 + -