📄 cc1100.lis
字号:
0382 ; halSpiWriteReg(CCxxx0_FSCTRL0, 0x00);
0382 2227 clr R18
0384 0CE0 ldi R16,12
0386 04DF xcall _halSpiWriteReg
0388 ; halSpiWriteReg(CCxxx0_FREQ2, 0x10);
0388 20E1 ldi R18,16
038A 0DE0 ldi R16,13
038C 01DF xcall _halSpiWriteReg
038E ; halSpiWriteReg(CCxxx0_FREQ1, 0x09);
038E 29E0 ldi R18,9
0390 0EE0 ldi R16,14
0392 FEDE xcall _halSpiWriteReg
0394 ; halSpiWriteReg(CCxxx0_FREQ0, 0x7B);
0394 2BE7 ldi R18,123
0396 0FE0 ldi R16,15
0398 FBDE xcall _halSpiWriteReg
039A ; halSpiWriteReg(CCxxx0_MDMCFG4, 0xC6);
039A 26EC ldi R18,198
039C 00E1 ldi R16,16
039E F8DE xcall _halSpiWriteReg
03A0 ; halSpiWriteReg(CCxxx0_MDMCFG3, 0x83);
03A0 23E8 ldi R18,131
03A2 01E1 ldi R16,17
03A4 F5DE xcall _halSpiWriteReg
03A6 ; halSpiWriteReg(CCxxx0_MDMCFG2, 0x02);
03A6 22E0 ldi R18,2
03A8 02E1 ldi R16,18
03AA F2DE xcall _halSpiWriteReg
03AC ; halSpiWriteReg(CCxxx0_MDMCFG1, 0x22);
03AC 22E2 ldi R18,34
03AE 03E1 ldi R16,19
03B0 EFDE xcall _halSpiWriteReg
03B2 ; halSpiWriteReg(CCxxx0_MDMCFG0, 0xF8);
03B2 28EF ldi R18,248
03B4 04E1 ldi R16,20
03B6 ECDE xcall _halSpiWriteReg
03B8 ; halSpiWriteReg(CCxxx0_CHANNR, 0x00);
03B8 2227 clr R18
03BA 0AE0 ldi R16,10
03BC E9DE xcall _halSpiWriteReg
03BE ; halSpiWriteReg(CCxxx0_DEVIATN, 0x30);
03BE 20E3 ldi R18,48
03C0 05E1 ldi R16,21
03C2 E6DE xcall _halSpiWriteReg
03C4 ; halSpiWriteReg(CCxxx0_FREND1, 0x56);
03C4 26E5 ldi R18,86
03C6 01E2 ldi R16,33
03C8 E3DE xcall _halSpiWriteReg
03CA ; halSpiWriteReg(CCxxx0_FREND0, 0x10);
03CA 20E1 ldi R18,16
03CC 02E2 ldi R16,34
03CE E0DE xcall _halSpiWriteReg
03D0 ;
03D0 ;
03D0 ; halSpiWriteReg(CCxxx0_MCSM0, 0x18);
03D0 28E1 ldi R18,24
03D2 08E1 ldi R16,24
03D4 DDDE xcall _halSpiWriteReg
03D6 ; halSpiWriteReg(CCxxx0_FOCCFG, 0x15);
03D6 25E1 ldi R18,21
03D8 09E1 ldi R16,25
03DA DADE xcall _halSpiWriteReg
03DC ; halSpiWriteReg(CCxxx0_BSCFG, 0x6C);
03DC 2CE6 ldi R18,108
03DE 0AE1 ldi R16,26
03E0 D7DE xcall _halSpiWriteReg
03E2 ; halSpiWriteReg(CCxxx0_AGCCTRL2, 0x03);
03E2 23E0 ldi R18,3
03E4 0BE1 ldi R16,27
03E6 D4DE xcall _halSpiWriteReg
03E8 ; halSpiWriteReg(CCxxx0_AGCCTRL0, 0x91);
03E8 21E9 ldi R18,145
03EA 0DE1 ldi R16,29
03EC D1DE xcall _halSpiWriteReg
03EE ; halSpiWriteReg(CCxxx0_FSCAL3, 0xA9);
03EE 29EA ldi R18,169
03F0 03E2 ldi R16,35
03F2 CEDE xcall _halSpiWriteReg
03F4 ; halSpiWriteReg(CCxxx0_FSCAL2, 0x2A);
03F4 2AE2 ldi R18,42
03F6 04E2 ldi R16,36
03F8 CBDE xcall _halSpiWriteReg
03FA ; halSpiWriteReg(CCxxx0_FSCAL0, 0x0D);
03FA 2DE0 ldi R18,13
03FC 06E2 ldi R16,38
03FE C8DE xcall _halSpiWriteReg
0400 ; halSpiWriteReg(CCxxx0_FSTEST, 0x59);
0400 29E5 ldi R18,89
0402 09E2 ldi R16,41
0404 C5DE xcall _halSpiWriteReg
0406 ; halSpiWriteReg(CCxxx0_TEST2, 0x86);
0406 26E8 ldi R18,134
0408 0CE2 ldi R16,44
040A C2DE xcall _halSpiWriteReg
040C ; halSpiWriteReg(CCxxx0_TEST1, 0x3D);
040C 2DE3 ldi R18,61
040E 0DE2 ldi R16,45
0410 BFDE xcall _halSpiWriteReg
0412 ; halSpiWriteReg(CCxxx0_TEST0, 0x09);
0412 29E0 ldi R18,9
0414 0EE2 ldi R16,46
0416 BCDE xcall _halSpiWriteReg
0418 ;
0418 ;
0418 ; halSpiWriteReg(CCxxx0_IOCFG2, 0x24);
0418 24E2 ldi R18,36
041A 0027 clr R16
041C B9DE xcall _halSpiWriteReg
041E ;
041E ; halSpiWriteReg(CCxxx0_IOCFG0, 0x06);
041E 26E0 ldi R18,6
0420 02E0 ldi R16,2
0422 B6DE xcall _halSpiWriteReg
0424 ; halSpiWriteReg(CCxxx0_PKTCTRL1, 0x04);
0424 24E0 ldi R18,4
0426 07E0 ldi R16,7
0428 B3DE xcall _halSpiWriteReg
042A ; halSpiWriteReg(CCxxx0_PKTCTRL0, 0x05);
042A 25E0 ldi R18,5
042C 08E0 ldi R16,8
042E B0DE xcall _halSpiWriteReg
0430 ; halSpiWriteReg(CCxxx0_ADDR, 0x00);
0430 2227 clr R18
0432 09E0 ldi R16,9
0434 ADDE xcall _halSpiWriteReg
0436 ;
0436 ; halSpiWriteReg(CCxxx0_PKTLEN, 0x1F); // hejie ,接收数据长度
0436 2FE1 ldi R18,31
0438 06E0 ldi R16,6
043A AADE xcall _halSpiWriteReg
043C ; //halSpiWriteReg(CCxxx0_PKTLEN, 0xFF);
043C ;
043C ; halSpiWriteReg(CCxxx0_MCSM2, 0x08); // CCxxx0_MCSM2 修改限制时间 默认为07 修改为00
043C 28E0 ldi R18,8
043E 06E1 ldi R16,22
0440 A7DE xcall _halSpiWriteReg
0442 ; //halSpiWriteReg(CCxxx0_FIFOTHR, 0x07);
0442 ;
0442 ;
0442 ; if(halSpiReadReg(CCxxx0_MDMCFG1)!=0x22){
0442 03E1 ldi R16,19
0444 41DF xcall _halSpiReadReg
0446 0232 cpi R16,34
0448 09F0 breq L99
044A ; // led1On();
044A ; goto l_setCC1100;
044A 98CF xjmp L98
044C L99:
044C L97:
044C .dbline 0 ; func end
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -