www.pudn.com > M8_cc1100_receive.rar > cc1100.lis


                        .module cc1100.c 
                        .area lit(rom, con, rel) 
 0000           _rfSettings:: 
 0000 00                .byte 0 
 0001 0B                .byte 11 
 0002 00                .byte 0 
 0003 10                .byte 16 
 0004 A7                .byte 167 
 0005 62                .byte 98 
 0006 2D                .byte 45 
 0007 3B                .byte 59 
 0008 73                .byte 115 
 0009 A2                .byte 162 
 000A F8                .byte 248 
 000B 00                .byte 0 
 000C 00                .byte 0 
 000D B6                .byte 182 
 000E 10                .byte 16 
 000F 18                .byte 24 
 0010 1D                .byte 29 
 0011 1C                .byte 28 
 0012 C7                .byte 199 
 0013 00                .byte 0 
 0014 B2                .byte 178 
 0015 EA                .byte 234 
 0016 0A                .byte 10 
 0017 00                .byte 0 
 0018 11                .byte 17 
 0019 59                .byte 89 
 001A 88                .byte 136 
 001B 31                .byte 49 
 001C 0B                .byte 11 
 001D 06                .byte 6 
 001E 06                .byte 6 
 001F 05                .byte 5 
 0020 45                .byte 69 
 0021 F0                .byte 240 
 0022 F0                .byte 240 
 0023                   .dbfile E:\学习基地\IMPORT~1\CC1100-RF-Design\cc1100-design\Firmware\M8_cc1100_receive\cc1100.c 
 0023                   .dbsym e rfSettings _rfSettings kX 
                        .area text(rom, con, rel) 
 0000                   .dbfile E:\学习基地\IMPORT~1\CC1100-RF-Design\cc1100-design\Firmware\M8_cc1100_receive\cc1100.c 
 0000                   .dbfunc e delay _delay fV 
 0000           ;              i -> R20,R21 
 0000           ;              s -> R16,R17 
                        .even 
 0000           _delay:: 
 0000 00D0              rcall push_gset1 
 0002                   .dbline -1 
 0002                   .dbline 105 
 0002           ; /*C************************************************************************** 
 0002           ; * NAME:         cc1100.c 
 0002           ; *---------------------------------------------------------------------------- 
 0002           ; * Copyright (c) 2007 endylu 
 0002           ; *---------------------------------------------------------------------------- 
 0002           ; * RELEASE:      M8-cc1100 
 0002           ; * REVISION:     1.0      
 0002           ; *---------------------------------------------------------------------------- 
 0002           ; * PURPOSE: 
 0002           ; * This file include cc1100 receive and send function 
 0002           ; *****************************************************************************/ 
 0002           ;  
 0002           ; /*_____ I N C L U D E S ____________________________________________________*/ 
 0002           ;  
 0002           ; #include  
 0002           ; #include  
 0002           ; #include "main.h" 
 0002           ; /*_____ M A C R O S ________________________________________________________*/ 
 0002           ;  
 0002           ;  
 0002           ; /*_____ D E F I N I T I O N ________________________________________________*/ 
 0002           ;  
 0002           ;  
 0002           ; //------------------------------------------------------------------------------------------------------ 
 0002           ; // Chipcon 
 0002           ; // Product = CC1100 
 0002           ; // Chip version = E 
 0002           ; // Crystal accuracy = 40 ppm 
 0002           ; // X-tal frequency = 26 MHz 
 0002           ; // RF output power = 0 dBm 
 0002           ; // RX filterbandwidth = 540.000000 kHz 
 0002           ; // Deviation = 0.000000  
 0002           ; // Datarate = 250.000000 kbps 
 0002           ; // Modulation = (7) MSK 
 0002           ; // Manchester enable = (0) Manchester disabled 
 0002           ; // RF Frequency = 433.000000 MHz 
 0002           ; // Channel spacing = 199.951172 kHz 
 0002           ; // Channel number = 0 
 0002           ; // Optimization = Sensitivity 
 0002           ; // Sync mode = (3) 30/32 sync word bits detected 
 0002           ; // Format of RX/TX data = (0) Normal mode, use FIFOs for RX and TX 
 0002           ; // CRC operation = (1) CRC calculation in TX and CRC check in RX enabled 
 0002           ; // Forward Error Correction = (0) FEC disabled 
 0002           ; // Length configuration = (1) Variable length packets, packet length configured by the first received byte after sync word. 
 0002           ; // Packetlength = 255 
 0002           ; // Preamble count = (2)  4 bytes 
 0002           ; // Append status = 1 
 0002           ; // Address check = (0) No address check 
 0002           ; // FIFO autoflush = 0 
 0002           ; // Device address = 0 
 0002           ; // GDO0 signal selection = ( 6) Asserts when sync word has been sent / received, and de-asserts at the end of the packet 
 0002           ; // GDO2 signal selection = (11) Serial Clock 
 0002           ; const RF_SETTINGS rfSettings = { 
 0002           ;     0x00, 
 0002           ;     0x0B,   // FSCTRL1   Frequency synthesizer control. 
 0002           ;     0x00,   // FSCTRL0   Frequency synthesizer control. 
 0002           ;     0x10,   // FREQ2     Frequency control word, high byte. 
 0002           ;     0xA7,   // FREQ1     Frequency control word, middle byte. 
 0002           ;     0x62,   // FREQ0     Frequency control word, low byte. 
 0002           ;     0x2D,   // MDMCFG4   Modem configuration. 
 0002           ;     0x3B,   // MDMCFG3   Modem configuration. 
 0002           ;     0x73,   // MDMCFG2   Modem configuration. 
 0002           ;     0xa2,   // MDMCFG1   Modem configuration. 
 0002           ;     0xF8,   // MDMCFG0   Modem configuration. 
 0002           ;  
 0002           ;     0x00,   // CHANNR    Channel number. 
 0002           ;     0x00,   // DEVIATN   Modem deviation setting (when FSK modulation is enabled). 
 0002           ;     0xB6,   // FREND1    Front end RX configuration. 
 0002           ;     0x10,   // FREND0    Front end RX configuration. 
 0002           ;     0x18,   // MCSM0     Main Radio Control State Machine configuration. 
 0002           ;     0x1D,   // FOCCFG    Frequency Offset Compensation Configuration. 
 0002           ;     0x1C,   // BSCFG     Bit synchronization Configuration. 
 0002           ;     0xC7,   // AGCCTRL2  AGC control. 
 0002           ;     0x00,   // AGCCTRL1  AGC control. 
 0002           ;     0xB2,   // AGCCTRL0  AGC control. 
 0002           ;  
 0002           ;     0xEA,   // FSCAL3    Frequency synthesizer calibration. 
 0002           ;     0x0A,   // FSCAL2    Frequency synthesizer calibration. 
 0002           ;     0x00,   // FSCAL1    Frequency synthesizer calibration. 
 0002           ;     0x11,   // FSCAL0    Frequency synthesizer calibration. 
 0002           ;     0x59,   // FSTEST    Frequency synthesizer calibration. 
 0002           ;     0x88,   // TEST2     Various test settings. 
 0002           ;     0x31,   // TEST1     Various test settings. 
 0002           ;     0x0B,   // TEST0     Various test settings. 
 0002           ;     0x06,    //IOCFG2    GDO2 output pin configuration. 
 0002           ;     0x06,   // IOCFG0    GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanation. 
 0002           ;  
 0002           ;     0x05,   // PKTCTRL1  Packet automation control. 
 0002           ;     0x45,   // PKTCTRL0  Packet automation control. 
 0002           ;     ID_Oneself,   // ADDR      Device address. 
 0002           ;     0xf0,    // PKTLEN    Packet length. 
 0002           ; }; 
 0002           ;  
 0002           ; /*_____ D E C L A R A T I O N ______________________________________________*/ 
 0002           ;  
 0002           ;  
 0002           ;  
 0002           ; //***************************************************************************************** 
 0002           ; //函数名:delay(unsigned int s) 
 0002           ; //输入:时间 
 0002           ; //输出:无 
 0002           ; //功能描述:普通廷时 
 0002           ; //*****************************************************************************************            
 0002           ; void delay(unsigned int s) 
 0002           ; { 
 0002                   .dbline 107 
 0002 4427              clr R20 
 0004 5527              clr R21 
 0006 02C0              rjmp L5 
 0008           L2: 
 0008                   .dbline 107 
 0008           L3: 
 0008                   .dbline 107 
 0008 4F5F              subi R20,255  ; offset = 1 
 000A 5F4F              sbci R21,255 
 000C           L5: 
 000C                   .dbline 107 
 000C           ;       unsigned int i; 
 000C           ;       for(i=0; i R16,R17 
                        .even 
 0026           _halWait:: 
 0026                   .dbline -1 
 0026                   .dbline 112 
 0026           ; } 
 0026           ;  
 0026           ;  
 0026           ; void halWait(INT16U timeout) { 
 0026           L11: 
 0026                   .dbline 113 
 0026           ;     do { 
 0026                   .dbline 114 
 0026           ;         _nop_(); 
 0026 0000              nop 
 0028                   .dbline 115 
 0028           ;               _nop_(); 
 0028 0000              nop 
 002A                   .dbline 116 
 002A           ;               _nop_(); 
 002A 0000              nop 
 002C                   .dbline 117 
 002C           ;               _nop_(); 
 002C 0000              nop 
 002E                   .dbline 118 
 002E           ;               _nop_(); 
 002E 0000              nop 
 0030                   .dbline 119 
 0030           ;               _nop_(); 
 0030 0000              nop 
 0032                   .dbline 120 
 0032           ;               _nop_(); 
 0032 0000              nop 
 0034                   .dbline 121 
 0034           ;               _nop_(); 
 0034 0000              nop 
 0036                   .dbline 122 
 0036           ;               _nop_(); 
 0036 0000              nop 
 0038                   .dbline 123 
 0038           ;               _nop_(); 
 0038 0000              nop 
 003A                   .dbline 124 
 003A           ;               _nop_(); 
 003A 0000              nop 
 003C                   .dbline 125 
 003C           ;               _nop_(); 
 003C 0000              nop 
 003E                   .dbline 126 
 003E           ;               _nop_(); 
 003E 0000              nop 
 0040                   .dbline 127 
 0040           ;               _nop_(); 
 0040 0000              nop 
 0042                   .dbline 128 
 0042           ;               _nop_();  
 0042 0000              nop 
 0044                   .dbline 129 
 0044           L12: 
 0044                   .dbline 129 
 0044           ;     } while (--timeout); 
 0044 C801              movw R24,R16 
 0046 0197              sbiw R24,1 
 0048 8C01              movw R16,R24 
 004A 0030              cpi R16,0 
 004C 0107              cpc R16,R17 
 004E 59F7              brne L11 
 0050           X0: 
 0050                   .dbline -2 
 0050           L10: 
 0050                   .dbline 0 ; func end 
 0050 0895              ret 
 0052                   .dbsym r timeout 16 i 
 0052                   .dbend 
 0052                   .dbfunc e UartInit _UartInit fV 
                        .even 
 0052           _UartInit:: 
 0052                   .dbline -1 
 0052                   .dbline 139 
 0052           ; } 
 0052           ;  
 0052           ; /***************************************************************************************** 
 0052           ; //函数名:UartInit() 
 0052           ; //输入:无 
 0052           ; //输出:无 
 0052           ; //功能描述:串口初始化程序 
 0052           ; /*****************************************************************************************/ 
 0052           ; void UartInit(void)           //用232串口发数据到PC,收集数据 
 0052           ;   { 
 0052                   .dbline 140 
 0052           ;     UCSRB=(1< R20 
 0080           ;              i -> R22 
 0080           ;            dat -> R16 
                        .even 
 0080           _SpiTxRxByte:: 
 0080 00D0              rcall push_gset2 
 0082                   .dbline -1 
 0082                   .dbline 182 
 0082           ; } 
 0082           ;        
 0082           ; //***************************************************************************************** 
 0082           ; //函数名:SpisendByte(INT8U dat) 
 0082           ; //输入:发送的数据 
 0082           ; //输出:无 
 0082           ; //功能描述:SPI发送一个字节 
 0082           ; //***************************************************************************************** 
 0082           ; INT8U SpiTxRxByte(INT8U dat) 
 0082           ; { 
 0082                   .dbline 184 
 0082           ;       INT8U i,temp; 
 0082           ;       temp = 0; 
 0082 4427              clr R20 
 0084                   .dbline 186 
 0084           ;        
 0084           ;       SCK_0; 
 0084 C598              cbi 0x18,5 
 0086                   .dbline 186 
 0086                   .dbline 187 
 0086           ;       for(i=0; i<8; i++) 
 0086 6627              clr R22 
 0088 11C0              rjmp L21 
 008A           L18: 
 008A                   .dbline 188 
 008A           ;       { 
 008A                   .dbline 189 
 008A           ;               if(dat & 0x80) 
 008A 07FF              sbrs R16,7 
 008C 02C0              rjmp L22 
 008E                   .dbline 190 
 008E           ;               { 
 008E                   .dbline 191 
 008E           ;                       MOSI_1; 
 008E C39A              sbi 0x18,3 
 0090                   .dbline 191 
 0090                   .dbline 192 
 0090           ;               } 
 0090 01C0              rjmp L23 
 0092           L22: 
 0092                   .dbline 193 
 0092 C398              cbi 0x18,3 
 0094           L23: 
 0094                   .dbline 193 
 0094           ;               else MOSI_0; 
 0094                   .dbline 194 
 0094           ;               dat <<= 1; 
 0094 000F              lsl R16 
 0096                   .dbline 196 
 0096           ;  
 0096           ;               SCK_1;  
 0096 C59A              sbi 0x18,5 
 0098                   .dbline 196 
 0098                   .dbline 197 
 0098           ;               _nop_(); 
 0098 0000              nop 
 009A                   .dbline 198 
 009A           ;               _nop_(); 
 009A 0000              nop 
 009C                   .dbline 200 
 009C           ;  
 009C           ;               temp <<= 1; 
 009C 440F              lsl R20 
 009E                   .dbline 201 
 009E           ;               if(MISO)temp++;  
 009E B49B              sbis 0x16,4 
 00A0 01C0              rjmp L24 
 00A2                   .dbline 201 
 00A2 4395              inc R20 
 00A4           L24: 
 00A4                   .dbline 202 
 00A4 C598              cbi 0x18,5 
 00A6                   .dbline 202 
 00A6                   .dbline 203 
 00A6 0000              nop 
 00A8                   .dbline 204 
 00A8 0000              nop 
 00AA                   .dbline 205 
 00AA           L19: 
 00AA                   .dbline 187 
 00AA 6395              inc R22 
 00AC           L21: 
 00AC                   .dbline 187 
 00AC 6830              cpi R22,8 
 00AE 68F3              brlo L18 
 00B0                   .dbline 206 
 00B0           ;               SCK_0; 
 00B0           ;               _nop_(); 
 00B0           ;               _nop_();         
 00B0           ;       } 
 00B0           ;       return temp; 
 00B0 042F              mov R16,R20 
 00B2                   .dbline -2 
 00B2           L17: 
 00B2 00D0              rcall pop_gset2 
 00B4                   .dbline 0 ; func end 
 00B4 0895              ret 
 00B6                   .dbsym r temp 20 c 
 00B6                   .dbsym r i 22 c 
 00B6                   .dbsym r dat 16 c 
 00B6                   .dbend 
 00B6                   .dbfunc e RESET_CC1100 _RESET_CC1100 fV 
                        .even 
 00B6           _RESET_CC1100:: 
 00B6                   .dbline -1 
 00B6                   .dbline 216 
 00B6           ; } 
 00B6           ;  
 00B6           ; //***************************************************************************************** 
 00B6           ; //函数名:void RESET_CC1100(void) 
 00B6           ; //输入:无 
 00B6           ; //输出:无 
 00B6           ; //功能描述:复位CC1100 
 00B6           ; //***************************************************************************************** 
 00B6           ; void RESET_CC1100(void)  
 00B6           ; { 
 00B6                   .dbline 217 
 00B6           ;       CSN_0;  
 00B6 C298              cbi 0x18,2 
 00B8                   .dbline 217 
 00B8           L27: 
 00B8                   .dbline 218 
 00B8           L28: 
 00B8                   .dbline 218 
 00B8           ;       while (GDO0);  
 00B8 8299              sbic 0x10,2 
 00BA FECF              rjmp L27 
 00BC                   .dbline 219 
 00BC           ;       SpiTxRxByte(CCxxx0_SRES);               //写入复位命令 
 00BC 00E3              ldi R16,48 
 00BE E0DF              rcall _SpiTxRxByte 
 00C0           L30: 
 00C0                   .dbline 220 
 00C0           L31: 
 00C0                   .dbline 220 
 00C0           ;       while (GDO0);  
 00C0 8299              sbic 0x10,2 
 00C2 FECF              rjmp L30 
 00C4                   .dbline 221 
 00C4           ;       CSN_1;  
 00C4 C29A              sbi 0x18,2 
 00C6                   .dbline 221 
 00C6                   .dbline -2 
 00C6           L26: 
 00C6                   .dbline 0 ; func end 
 00C6 0895              ret 
 00C8                   .dbend 
 00C8                   .dbfunc e POWER_UP_RESET_CC1100 _POWER_UP_RESET_CC1100 fV 
                        .even 
 00C8           _POWER_UP_RESET_CC1100:: 
 00C8                   .dbline -1 
 00C8                   .dbline 231 
 00C8           ; } 
 00C8           ;  
 00C8           ; //***************************************************************************************** 
 00C8           ; //函数名:void POWER_UP_RESET_CC1100(void)  
 00C8           ; //输入:无 
 00C8           ; //输出:无 
 00C8           ; //功能描述:上电复位CC1100 
 00C8           ; //***************************************************************************************** 
 00C8           ; void POWER_UP_RESET_CC1100(void)  
 00C8           ; { 
 00C8                   .dbline 232 
 00C8           ;       CSN_1;  
 00C8 C29A              sbi 0x18,2 
 00CA                   .dbline 232 
 00CA                   .dbline 233 
 00CA           ;       halWait(1);  
 00CA 01E0              ldi R16,1 
 00CC 10E0              ldi R17,0 
 00CE ABDF              rcall _halWait 
 00D0                   .dbline 234 
 00D0           ;       CSN_0;  
 00D0 C298              cbi 0x18,2 
 00D2                   .dbline 234 
 00D2                   .dbline 235 
 00D2           ;       halWait(1);  
 00D2 01E0              ldi R16,1 
 00D4 10E0              ldi R17,0 
 00D6 A7DF              rcall _halWait 
 00D8                   .dbline 236 
 00D8           ;       CSN_1;  
 00D8 C29A              sbi 0x18,2 
 00DA                   .dbline 236 
 00DA                   .dbline 237 
 00DA           ;       halWait(41);  
 00DA 09E2              ldi R16,41 
 00DC 10E0              ldi R17,0 
 00DE A3DF              rcall _halWait 
 00E0                   .dbline 238 
 00E0           ;       RESET_CC1100();                 //复位CC1100 
 00E0 EADF              rcall _RESET_CC1100 
 00E2                   .dbline -2 
 00E2           L33: 
 00E2                   .dbline 0 ; func end 
 00E2 0895              ret 
 00E4                   .dbend 
 00E4                   .dbfunc e halSpiWriteReg _halSpiWriteReg fV 
 00E4           ;          value -> R20 
 00E4           ;           addr -> R22 
                        .even 
 00E4           _halSpiWriteReg:: 
 00E4 00D0              rcall push_gset2 
 00E6 422F              mov R20,R18 
 00E8 602F              mov R22,R16 
 00EA                   .dbline -1 
 00EA                   .dbline 248 
 00EA           ; } 
 00EA           ;  
 00EA           ; //***************************************************************************************** 
 00EA           ; //函数名:void halSpiWriteReg(INT8U addr, INT8U value) 
 00EA           ; //输入:地址和配置字 
 00EA           ; //输出:无 
 00EA           ; //功能描述:SPI写寄存器 
 00EA           ; //***************************************************************************************** 
 00EA           ; void halSpiWriteReg(INT8U addr, INT8U value)  
 00EA           ; { 
 00EA                   .dbline 249 
 00EA           ;     CSN_0; 
 00EA C298              cbi 0x18,2 
 00EC                   .dbline 249 
 00EC           L35: 
 00EC                   .dbline 250 
 00EC           L36: 
 00EC                   .dbline 250 
 00EC           ;     while (GDO0); 
 00EC 8299              sbic 0x10,2 
 00EE FECF              rjmp L35 
 00F0                   .dbline 251 
 00F0           ;     SpiTxRxByte(addr);                //写地址 
 00F0 062F              mov R16,R22 
 00F2 C6DF              rcall _SpiTxRxByte 
 00F4                   .dbline 252 
 00F4           ;     SpiTxRxByte(value);               //写入配置 
 00F4 042F              mov R16,R20 
 00F6 C4DF              rcall _SpiTxRxByte 
 00F8                   .dbline 253 
 00F8           ;     CSN_1; 
 00F8 C29A              sbi 0x18,2 
 00FA                   .dbline 253 
 00FA                   .dbline -2 
 00FA           L34: 
 00FA 00D0              rcall pop_gset2 
 00FC                   .dbline 0 ; func end 
 00FC 0895              ret 
 00FE                   .dbsym r value 20 c 
 00FE                   .dbsym r addr 22 c 
 00FE                   .dbend 
 00FE                   .dbfunc e halSpiWriteBurstReg _halSpiWriteBurstReg fV 
 00FE           ;           temp -> R20 
 00FE           ;              i -> R22 
 00FE           ;          count -> R10 
 00FE           ;         buffer -> R12,R13 
 00FE           ;           addr -> R20 
                        .even 
 00FE           _halSpiWriteBurstReg:: 
 00FE 00D0              rcall push_gset4 
 0100 6901              movw R12,R18 
 0102 402F              mov R20,R16 
 0104 A884              ldd R10,y+8 
 0106                   .dbline -1 
 0106                   .dbline 263 
 0106           ; } 
 0106           ;  
 0106           ; //***************************************************************************************** 
 0106           ; //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
 0106           ; //输入:地址,写入缓冲区,写入个数 
 0106           ; //输出:无 
 0106           ; //功能描述:SPI连续写配置寄存器 
 0106           ; //***************************************************************************************** 
 0106           ; void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)  
 0106           ; { 
 0106                   .dbline 265 
 0106           ;     INT8U i, temp; 
 0106           ;       temp = addr | WRITE_BURST; 
 0106 4064              ori R20,64 
 0108                   .dbline 266 
 0108           ;     CSN_0; 
 0108 C298              cbi 0x18,2 
 010A                   .dbline 266 
 010A           L39: 
 010A                   .dbline 267 
 010A           L40: 
 010A                   .dbline 267 
 010A           ;     while (GDO0); 
 010A 8299              sbic 0x10,2 
 010C FECF              rjmp L39 
 010E                   .dbline 268 
 010E           ;     SpiTxRxByte(temp); 
 010E 042F              mov R16,R20 
 0110 B7DF              rcall _SpiTxRxByte 
 0112                   .dbline 269 
 0112           ;     for (i = 0; i < count; i++) 
 0112 6627              clr R22 
 0114 07C0              rjmp L45 
 0116           L42: 
 0116                   .dbline 270 
 0116                   .dbline 271 
 0116 E62F              mov R30,R22 
 0118 FF27              clr R31 
 011A EC0D              add R30,R12 
 011C FD1D              adc R31,R13 
 011E 0081              ldd R16,z+0 
 0120 AFDF              rcall _SpiTxRxByte 
 0122                   .dbline 272 
 0122           L43: 
 0122                   .dbline 269 
 0122 6395              inc R22 
 0124           L45: 
 0124                   .dbline 269 
 0124 6A15              cp R22,R10 
 0126 B8F3              brlo L42 
 0128                   .dbline 273 
 0128           ;       { 
 0128           ;         SpiTxRxByte(buffer[i]); 
 0128           ;     } 
 0128           ;     CSN_1; 
 0128 C29A              sbi 0x18,2 
 012A                   .dbline 273 
 012A                   .dbline -2 
 012A           L38: 
 012A 00D0              rcall pop_gset4 
 012C                   .dbline 0 ; func end 
 012C 0895              ret 
 012E                   .dbsym r temp 20 c 
 012E                   .dbsym r i 22 c 
 012E                   .dbsym r count 10 c 
 012E                   .dbsym r buffer 12 pc 
 012E                   .dbsym r addr 20 c 
 012E                   .dbend 
 012E                   .dbfunc e halSpiStrobe _halSpiStrobe fV 
 012E           ;         strobe -> R20 
                        .even 
 012E           _halSpiStrobe:: 
 012E 00D0              rcall push_gset1 
 0130 402F              mov R20,R16 
 0132                   .dbline -1 
 0132                   .dbline 283 
 0132           ; } 
 0132           ;  
 0132           ; //***************************************************************************************** 
 0132           ; //函数名:void halSpiStrobe(INT8U strobe) 
 0132           ; //输入:命令 
 0132           ; //输出:无 
 0132           ; //功能描述:SPI写命令 
 0132           ; //***************************************************************************************** 
 0132           ; void halSpiStrobe(INT8U strobe)  
 0132           ; { 
 0132                   .dbline 284 
 0132           ;     CSN_0; 
 0132 C298              cbi 0x18,2 
 0134                   .dbline 284 
 0134           L47: 
 0134                   .dbline 285 
 0134           L48: 
 0134                   .dbline 285 
 0134           ;     while (GDO0); 
 0134 8299              sbic 0x10,2 
 0136 FECF              rjmp L47 
 0138                   .dbline 286 
 0138           ;     SpiTxRxByte(strobe);              //写入命令 
 0138 042F              mov R16,R20 
 013A A2DF              rcall _SpiTxRxByte 
 013C                   .dbline 287 
 013C           ;     CSN_1; 
 013C C29A              sbi 0x18,2 
 013E                   .dbline 287 
 013E                   .dbline -2 
 013E           L46: 
 013E 00D0              rcall pop_gset1 
 0140                   .dbline 0 ; func end 
 0140 0895              ret 
 0142                   .dbsym r strobe 20 c 
 0142                   .dbend 
 0142                   .dbfunc e halSpiReadReg _halSpiReadReg fc 
 0142           ;          value -> R20 
 0142           ;           temp -> R22 
 0142           ;           addr -> R20 
                        .even 
 0142           _halSpiReadReg:: 
 0142 00D0              rcall push_gset2 
 0144 402F              mov R20,R16 
 0146                   .dbline -1 
 0146                   .dbline 301 
 0146           ; } 
 0146           ;  
 0146           ;  
 0146           ;  
 0146           ;  
 0146           ;  
 0146           ; //***************************************************************************************** 
 0146           ; //函数名:INT8U halSpiReadReg(INT8U addr) 
 0146           ; //输入:地址 
 0146           ; //输出:该寄存器的配置字 
 0146           ; //功能描述:SPI读寄存器 
 0146           ; //***************************************************************************************** 
 0146           ; INT8U halSpiReadReg(INT8U addr)  
 0146           ; { 
 0146                   .dbline 303 
 0146           ;       INT8U temp, value; 
 0146           ;        temp = addr|READ_SINGLE;//读寄存器命令 
 0146 642F              mov R22,R20 
 0148 6068              ori R22,128 
 014A                   .dbline 304 
 014A           ;       CSN_0; 
 014A C298              cbi 0x18,2 
 014C                   .dbline 304 
 014C           L51: 
 014C                   .dbline 305 
 014C           L52: 
 014C                   .dbline 305 
 014C           ;       while (GDO0); 
 014C 8299              sbic 0x10,2 
 014E FECF              rjmp L51 
 0150                   .dbline 306 
 0150           ;       SpiTxRxByte(temp); 
 0150 062F              mov R16,R22 
 0152 96DF              rcall _SpiTxRxByte 
 0154                   .dbline 307 
 0154           ;       value = SpiTxRxByte(0); 
 0154 0027              clr R16 
 0156 94DF              rcall _SpiTxRxByte 
 0158 402F              mov R20,R16 
 015A                   .dbline 308 
 015A           ;       CSN_1; 
 015A C29A              sbi 0x18,2 
 015C                   .dbline 308 
 015C                   .dbline 309 
 015C           ;       return value; 
 015C                   .dbline -2 
 015C           L50: 
 015C 00D0              rcall pop_gset2 
 015E                   .dbline 0 ; func end 
 015E 0895              ret 
 0160                   .dbsym r value 20 c 
 0160                   .dbsym r temp 22 c 
 0160                   .dbsym r addr 20 c 
 0160                   .dbend 
 0160                   .dbfunc e halSpiReadBurstReg _halSpiReadBurstReg fV 
 0160           ;           temp -> R20 
 0160           ;              i -> R22 
 0160           ;          count -> R10 
 0160           ;         buffer -> R12,R13 
 0160           ;           addr -> R20 
                        .even 
 0160           _halSpiReadBurstReg:: 
 0160 00D0              rcall push_gset4 
 0162 6901              movw R12,R18 
 0164 402F              mov R20,R16 
 0166 A884              ldd R10,y+8 
 0168                   .dbline -1 
 0168                   .dbline 320 
 0168           ; } 
 0168           ;  
 0168           ;  
 0168           ; //***************************************************************************************** 
 0168           ; //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
 0168           ; //输入:地址,读出数据后暂存的缓冲区,读出配置个数 
 0168           ; //输出:无 
 0168           ; //功能描述:SPI连续写配置寄存器 
 0168           ; //***************************************************************************************** 
 0168           ; void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)  
 0168           ; { 
 0168                   .dbline 322 
 0168           ;     INT8U i,temp; 
 0168           ;       temp = addr | READ_BURST;               //写入要读的配置寄存器地址和读命令 
 0168 406C              ori R20,192 
 016A                   .dbline 323 
 016A           ;     CSN_0; 
 016A C298              cbi 0x18,2 
 016C                   .dbline 323 
 016C           L55: 
 016C                   .dbline 324 
 016C           L56: 
 016C                   .dbline 324 
 016C           ;     while (GDO0); 
 016C 8299              sbic 0x10,2 
 016E FECF              rjmp L55 
 0170                   .dbline 325 
 0170           ;       SpiTxRxByte(temp);    
 0170 042F              mov R16,R20 
 0172 86DF              rcall _SpiTxRxByte 
 0174                   .dbline 326 
 0174           ;     for (i = 0; i < count; i++)  
 0174 6627              clr R22 
 0176 08C0              rjmp L61 
 0178           L58: 
 0178                   .dbline 327 
 0178                   .dbline 328 
 0178 0027              clr R16 
 017A 82DF              rcall _SpiTxRxByte 
 017C E62F              mov R30,R22 
 017E FF27              clr R31 
 0180 EC0D              add R30,R12 
 0182 FD1D              adc R31,R13 
 0184 0083              std z+0,R16 
 0186                   .dbline 329 
 0186           L59: 
 0186                   .dbline 326 
 0186 6395              inc R22 
 0188           L61: 
 0188                   .dbline 326 
 0188 6A15              cp R22,R10 
 018A B0F3              brlo L58 
 018C                   .dbline 330 
 018C           ;       { 
 018C           ;         buffer[i] = SpiTxRxByte(0); 
 018C           ;     } 
 018C           ;     CSN_1; 
 018C C29A              sbi 0x18,2 
 018E                   .dbline 330 
 018E                   .dbline -2 
 018E           L54: 
 018E 00D0              rcall pop_gset4 
 0190                   .dbline 0 ; func end 
 0190 0895              ret 
 0192                   .dbsym r temp 20 c 
 0192                   .dbsym r i 22 c 
 0192                   .dbsym r count 10 c 
 0192                   .dbsym r buffer 12 pc 
 0192                   .dbsym r addr 20 c 
 0192                   .dbend 
 0192                   .dbfunc e halSpiReadStatus _halSpiReadStatus fc 
 0192           ;           temp -> R20 
 0192           ;          value -> R22 
 0192           ;           addr -> R20 
                        .even 
 0192           _halSpiReadStatus:: 
 0192 00D0              rcall push_gset2 
 0194 402F              mov R20,R16 
 0196                   .dbline -1 
 0196                   .dbline 341 
 0196           ; } 
 0196           ;  
 0196           ;  
 0196           ; //***************************************************************************************** 
 0196           ; //函数名:INT8U halSpiReadReg(INT8U addr) 
 0196           ; //输入:地址 
 0196           ; //输出:该状态寄存器当前值 
 0196           ; //功能描述:SPI读状态寄存器 
 0196           ; //***************************************************************************************** 
 0196           ; INT8U halSpiReadStatus(INT8U addr)  
 0196           ; { 
 0196                   .dbline 343 
 0196           ;     INT8U value,temp; 
 0196           ;       temp = addr | READ_BURST;               //写入要读的状态寄存器的地址同时写入读命令 
 0196 406C              ori R20,192 
 0198                   .dbline 344 
 0198           ;     CSN_0; 
 0198 C298              cbi 0x18,2 
 019A                   .dbline 344 
 019A           L63: 
 019A                   .dbline 345 
 019A           L64: 
 019A                   .dbline 345 
 019A           ;     while (GDO0); 
 019A 8299              sbic 0x10,2 
 019C FECF              rjmp L63 
 019E                   .dbline 346 
 019E           ;     SpiTxRxByte(temp); 
 019E 042F              mov R16,R20 
 01A0 6FDF              rcall _SpiTxRxByte 
 01A2                   .dbline 347 
 01A2           ;       value = SpiTxRxByte(0); 
 01A2 0027              clr R16 
 01A4 6DDF              rcall _SpiTxRxByte 
 01A6 602F              mov R22,R16 
 01A8                   .dbline 348 
 01A8           ;       CSN_1; 
 01A8 C29A              sbi 0x18,2 
 01AA                   .dbline 348 
 01AA                   .dbline 349 
 01AA           ;       return value; 
 01AA                   .dbline -2 
 01AA           L62: 
 01AA 00D0              rcall pop_gset2 
 01AC                   .dbline 0 ; func end 
 01AC 0895              ret 
 01AE                   .dbsym r temp 20 c 
 01AE                   .dbsym r value 22 c 
 01AE                   .dbsym r addr 20 c 
 01AE                   .dbend 
 01AE                   .dbfunc e halRfWriteRfSettings _halRfWriteRfSettings fV 
                        .even 
 01AE           _halRfWriteRfSettings:: 
 01AE                   .dbline -1 
 01AE                   .dbline 360 
 01AE           ; } 
 01AE           ;  
 01AE           ;  
 01AE           ; //***************************************************************************************** 
 01AE           ; //函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings) 
 01AE           ; //输入:无 
 01AE           ; //输出:无 
 01AE           ; //功能描述:配置CC1100的寄存器 
 01AE           ; //***************************************************************************************** 
 01AE           ; void halRfWriteRfSettings(void)  
 01AE           ; { 
 01AE                   .dbline 363 
 01AE           ;     //halSpiWriteReg(CCxxx0_FIFOTHR,0x09); 
 01AE           ;     //halSpiWriteReg(CCxxx0_MCSM1,0x00);     //CCA,没有作通 
 01AE           ;     halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL2);//自已加的 
 01AE E0E0              ldi R30,<_rfSettings 
 01B0 F0E0              ldi R31,>_rfSettings 
 01B2 2491              lpm R18,Z 
 01B4 0CE0              ldi R16,12 
 01B6 96DF              rcall _halSpiWriteReg 
 01B8                   .dbline 365 
 01B8           ;     // Write register settings 
 01B8           ;     halSpiWriteReg(CCxxx0_FSCTRL1,  rfSettings.FSCTRL1); 
 01B8 E0E0              ldi R30,<_rfSettings+1 
 01BA F0E0              ldi R31,>_rfSettings+1 
 01BC 2491              lpm R18,Z 
 01BE 0BE0              ldi R16,11 
 01C0 91DF              rcall _halSpiWriteReg 
 01C2                   .dbline 366 
 01C2           ;     halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL0); 
 01C2 E0E0              ldi R30,<_rfSettings+2 
 01C4 F0E0              ldi R31,>_rfSettings+2 
 01C6 2491              lpm R18,Z 
 01C8 0CE0              ldi R16,12 
 01CA 8CDF              rcall _halSpiWriteReg 
 01CC                   .dbline 367 
 01CC           ;     halSpiWriteReg(CCxxx0_FREQ2,    rfSettings.FREQ2); 
 01CC E0E0              ldi R30,<_rfSettings+3 
 01CE F0E0              ldi R31,>_rfSettings+3 
 01D0 2491              lpm R18,Z 
 01D2 0DE0              ldi R16,13 
 01D4 87DF              rcall _halSpiWriteReg 
 01D6                   .dbline 368 
 01D6           ;     halSpiWriteReg(CCxxx0_FREQ1,    rfSettings.FREQ1); 
 01D6 E0E0              ldi R30,<_rfSettings+4 
 01D8 F0E0              ldi R31,>_rfSettings+4 
 01DA 2491              lpm R18,Z 
 01DC 0EE0              ldi R16,14 
 01DE 82DF              rcall _halSpiWriteReg 
 01E0                   .dbline 369 
 01E0           ;     halSpiWriteReg(CCxxx0_FREQ0,    rfSettings.FREQ0); 
 01E0 E0E0              ldi R30,<_rfSettings+5 
 01E2 F0E0              ldi R31,>_rfSettings+5 
 01E4 2491              lpm R18,Z 
 01E6 0FE0              ldi R16,15 
 01E8 7DDF              rcall _halSpiWriteReg 
 01EA                   .dbline 370 
 01EA           ;     halSpiWriteReg(CCxxx0_MDMCFG4,  rfSettings.MDMCFG4); 
 01EA E0E0              ldi R30,<_rfSettings+6 
 01EC F0E0              ldi R31,>_rfSettings+6 
 01EE 2491              lpm R18,Z 
 01F0 00E1              ldi R16,16 
 01F2 78DF              rcall _halSpiWriteReg 
 01F4                   .dbline 371 
 01F4           ;     halSpiWriteReg(CCxxx0_MDMCFG3,  rfSettings.MDMCFG3); 
 01F4 E0E0              ldi R30,<_rfSettings+7 
 01F6 F0E0              ldi R31,>_rfSettings+7 
 01F8 2491              lpm R18,Z 
 01FA 01E1              ldi R16,17 
 01FC 73DF              rcall _halSpiWriteReg 
 01FE                   .dbline 372 
 01FE           ;     halSpiWriteReg(CCxxx0_MDMCFG2,  rfSettings.MDMCFG2); 
 01FE E0E0              ldi R30,<_rfSettings+8 
 0200 F0E0              ldi R31,>_rfSettings+8 
 0202 2491              lpm R18,Z 
 0204 02E1              ldi R16,18 
 0206 6EDF              rcall _halSpiWriteReg 
 0208                   .dbline 373 
 0208           ;     halSpiWriteReg(CCxxx0_MDMCFG1,  rfSettings.MDMCFG1); 
 0208 E0E0              ldi R30,<_rfSettings+9 
 020A F0E0              ldi R31,>_rfSettings+9 
 020C 2491              lpm R18,Z 
 020E 03E1              ldi R16,19 
 0210 69DF              rcall _halSpiWriteReg 
 0212                   .dbline 374 
 0212           ;     halSpiWriteReg(CCxxx0_MDMCFG0,  rfSettings.MDMCFG0); 
 0212 E0E0              ldi R30,<_rfSettings+10 
 0214 F0E0              ldi R31,>_rfSettings+10 
 0216 2491              lpm R18,Z 
 0218 04E1              ldi R16,20 
 021A 64DF              rcall _halSpiWriteReg 
 021C                   .dbline 375 
 021C           ;     halSpiWriteReg(CCxxx0_CHANNR,   rfSettings.CHANNR); 
 021C E0E0              ldi R30,<_rfSettings+11 
 021E F0E0              ldi R31,>_rfSettings+11 
 0220 2491              lpm R18,Z 
 0222 0AE0              ldi R16,10 
 0224 5FDF              rcall _halSpiWriteReg 
 0226                   .dbline 376 
 0226           ;     halSpiWriteReg(CCxxx0_DEVIATN,  rfSettings.DEVIATN); 
 0226 E0E0              ldi R30,<_rfSettings+12 
 0228 F0E0              ldi R31,>_rfSettings+12 
 022A 2491              lpm R18,Z 
 022C 05E1              ldi R16,21 
 022E 5ADF              rcall _halSpiWriteReg 
 0230                   .dbline 377 
 0230           ;     halSpiWriteReg(CCxxx0_FREND1,   rfSettings.FREND1); 
 0230 E0E0              ldi R30,<_rfSettings+13 
 0232 F0E0              ldi R31,>_rfSettings+13 
 0234 2491              lpm R18,Z 
 0236 01E2              ldi R16,33 
 0238 55DF              rcall _halSpiWriteReg 
 023A                   .dbline 378 
 023A           ;     halSpiWriteReg(CCxxx0_FREND0,   rfSettings.FREND0); 
 023A E0E0              ldi R30,<_rfSettings+14 
 023C F0E0              ldi R31,>_rfSettings+14 
 023E 2491              lpm R18,Z 
 0240 02E2              ldi R16,34 
 0242 50DF              rcall _halSpiWriteReg 
 0244                   .dbline 379 
 0244           ;     halSpiWriteReg(CCxxx0_MCSM0 ,   rfSettings.MCSM0 ); 
 0244 E0E0              ldi R30,<_rfSettings+15 
 0246 F0E0              ldi R31,>_rfSettings+15 
 0248 2491              lpm R18,Z 
 024A 08E1              ldi R16,24 
 024C 4BDF              rcall _halSpiWriteReg 
 024E                   .dbline 380 
 024E           ;     halSpiWriteReg(CCxxx0_FOCCFG,   rfSettings.FOCCFG); 
 024E E0E0              ldi R30,<_rfSettings+16 
 0250 F0E0              ldi R31,>_rfSettings+16 
 0252 2491              lpm R18,Z 
 0254 09E1              ldi R16,25 
 0256 46DF              rcall _halSpiWriteReg 
 0258                   .dbline 381 
 0258           ;     halSpiWriteReg(CCxxx0_BSCFG,    rfSettings.BSCFG); 
 0258 E0E0              ldi R30,<_rfSettings+17 
 025A F0E0              ldi R31,>_rfSettings+17 
 025C 2491              lpm R18,Z 
 025E 0AE1              ldi R16,26 
 0260 41DF              rcall _halSpiWriteReg 
 0262                   .dbline 382 
 0262           ;     halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2); 
 0262 E0E0              ldi R30,<_rfSettings+18 
 0264 F0E0              ldi R31,>_rfSettings+18 
 0266 2491              lpm R18,Z 
 0268 0BE1              ldi R16,27 
 026A 3CDF              rcall _halSpiWriteReg 
 026C                   .dbline 383 
 026C           ;       halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1); 
 026C E0E0              ldi R30,<_rfSettings+19 
 026E F0E0              ldi R31,>_rfSettings+19 
 0270 2491              lpm R18,Z 
 0272 0CE1              ldi R16,28 
 0274 37DF              rcall _halSpiWriteReg 
 0276                   .dbline 384 
 0276           ;     halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0); 
 0276 E0E0              ldi R30,<_rfSettings+20 
 0278 F0E0              ldi R31,>_rfSettings+20 
 027A 2491              lpm R18,Z 
 027C 0DE1              ldi R16,29 
 027E 32DF              rcall _halSpiWriteReg 
 0280                   .dbline 385 
 0280           ;     halSpiWriteReg(CCxxx0_FSCAL3,   rfSettings.FSCAL3); 
 0280 E0E0              ldi R30,<_rfSettings+21 
 0282 F0E0              ldi R31,>_rfSettings+21 
 0284 2491              lpm R18,Z 
 0286 03E2              ldi R16,35 
 0288 2DDF              rcall _halSpiWriteReg 
 028A                   .dbline 386 
 028A           ;       halSpiWriteReg(CCxxx0_FSCAL2,   rfSettings.FSCAL2); 
 028A E0E0              ldi R30,<_rfSettings+22 
 028C F0E0              ldi R31,>_rfSettings+22 
 028E 2491              lpm R18,Z 
 0290 04E2              ldi R16,36 
 0292 28DF              rcall _halSpiWriteReg 
 0294                   .dbline 387 
 0294           ;       halSpiWriteReg(CCxxx0_FSCAL1,   rfSettings.FSCAL1); 
 0294 E0E0              ldi R30,<_rfSettings+23 
 0296 F0E0              ldi R31,>_rfSettings+23 
 0298 2491              lpm R18,Z 
 029A 05E2              ldi R16,37 
 029C 23DF              rcall _halSpiWriteReg 
 029E                   .dbline 388 
 029E           ;     halSpiWriteReg(CCxxx0_FSCAL0,   rfSettings.FSCAL0); 
 029E E0E0              ldi R30,<_rfSettings+24 
 02A0 F0E0              ldi R31,>_rfSettings+24 
 02A2 2491              lpm R18,Z 
 02A4 06E2              ldi R16,38 
 02A6 1EDF              rcall _halSpiWriteReg 
 02A8                   .dbline 389 
 02A8           ;     halSpiWriteReg(CCxxx0_FSTEST,   rfSettings.FSTEST); 
 02A8 E0E0              ldi R30,<_rfSettings+25 
 02AA F0E0              ldi R31,>_rfSettings+25 
 02AC 2491              lpm R18,Z 
 02AE 09E2              ldi R16,41 
 02B0 19DF              rcall _halSpiWriteReg 
 02B2                   .dbline 390 
 02B2           ;     halSpiWriteReg(CCxxx0_TEST2,    rfSettings.TEST2); 
 02B2 E0E0              ldi R30,<_rfSettings+26 
 02B4 F0E0              ldi R31,>_rfSettings+26 
 02B6 2491              lpm R18,Z 
 02B8 0CE2              ldi R16,44 
 02BA 14DF              rcall _halSpiWriteReg 
 02BC                   .dbline 391 
 02BC           ;     halSpiWriteReg(CCxxx0_TEST1,    rfSettings.TEST1); 
 02BC E0E0              ldi R30,<_rfSettings+27 
 02BE F0E0              ldi R31,>_rfSettings+27 
 02C0 2491              lpm R18,Z 
 02C2 0DE2              ldi R16,45 
 02C4 0FDF              rcall _halSpiWriteReg 
 02C6                   .dbline 392 
 02C6           ;     halSpiWriteReg(CCxxx0_TEST0,    rfSettings.TEST0); 
 02C6 E0E0              ldi R30,<_rfSettings+28 
 02C8 F0E0              ldi R31,>_rfSettings+28 
 02CA 2491              lpm R18,Z 
 02CC 0EE2              ldi R16,46 
 02CE 0ADF              rcall _halSpiWriteReg 
 02D0                   .dbline 393 
 02D0           ;     halSpiWriteReg(CCxxx0_IOCFG2,   rfSettings.IOCFG2); 
 02D0 E0E0              ldi R30,<_rfSettings+29 
 02D2 F0E0              ldi R31,>_rfSettings+29 
 02D4 2491              lpm R18,Z 
 02D6 0027              clr R16 
 02D8 05DF              rcall _halSpiWriteReg 
 02DA                   .dbline 394 
 02DA           ;     halSpiWriteReg(CCxxx0_IOCFG0,   rfSettings.IOCFG0);     
 02DA E0E0              ldi R30,<_rfSettings+30 
 02DC F0E0              ldi R31,>_rfSettings+30 
 02DE 2491              lpm R18,Z 
 02E0 02E0              ldi R16,2 
 02E2 00DF              rcall _halSpiWriteReg 
 02E4                   .dbline 395 
 02E4           ;     halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1); 
 02E4 E0E0              ldi R30,<_rfSettings+31 
 02E6 F0E0              ldi R31,>_rfSettings+31 
 02E8 2491              lpm R18,Z 
 02EA 07E0              ldi R16,7 
 02EC FBDE              rcall _halSpiWriteReg 
 02EE                   .dbline 396 
 02EE           ;     halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0); 
 02EE E0E0              ldi R30,<_rfSettings+32 
 02F0 F0E0              ldi R31,>_rfSettings+32 
 02F2 2491              lpm R18,Z 
 02F4 08E0              ldi R16,8 
 02F6 F6DE              rcall _halSpiWriteReg 
 02F8                   .dbline 397 
 02F8           ;     halSpiWriteReg(CCxxx0_ADDR,     rfSettings.ADDR); 
 02F8 E0E0              ldi R30,<_rfSettings+33 
 02FA F0E0              ldi R31,>_rfSettings+33 
 02FC 2491              lpm R18,Z 
 02FE 09E0              ldi R16,9 
 0300 F1DE              rcall _halSpiWriteReg 
 0302                   .dbline 398 
 0302           ;     halSpiWriteReg(CCxxx0_PKTLEN,   rfSettings.PKTLEN); 
 0302 E0E0              ldi R30,<_rfSettings+34 
 0304 F0E0              ldi R31,>_rfSettings+34 
 0306 2491              lpm R18,Z 
 0308 06E0              ldi R16,6 
 030A ECDE              rcall _halSpiWriteReg 
 030C                   .dbline -2 
 030C           L66: 
 030C                   .dbline 0 ; func end 
 030C 0895              ret 
 030E                   .dbend 
 030E                   .dbfunc e halRfSendPacket _halRfSendPacket fV 
 030E           ;           size -> R22 
 030E           ;       txBuffer -> R20,R21 
                        .even 
 030E           _halRfSendPacket:: 
 030E 00D0              rcall push_gset2 
 0310 622F              mov R22,R18 
 0312 A801              movw R20,R16 
 0314 2197              sbiw R28,1 
 0316                   .dbline -1 
 0316                   .dbline 413 
 0316           ; } 
 0316           ;  
 0316           ;  
 0316           ;  
 0316           ;  
 0316           ;  
 0316           ;  
 0316           ; //***************************************************************************************** 
 0316           ; //函数名: 
 0316           ; //输入: 
 0316           ; //输出: 
 0316           ; //功能描述:CC1100发送主叫数据 
 0316           ; //***************************************************************************************** 
 0316           ; void halRfSendPacket(INT8U *txBuffer, INT8U size)  
 0316           ; {   
 0316                   .dbline 415 
 0316           ;      
 0316           ;     halSpiWriteReg(CCxxx0_TXFIFO, size+2); 
 0316 262F              mov R18,R22 
 0318 2E5F              subi R18,254    ; addi 2 
 031A 0FE3              ldi R16,63 
 031C E3DE              rcall _halSpiWriteReg 
 031E                   .dbline 416 
 031E           ;     halSpiWriteReg(CCxxx0_TXFIFO, ID_Opponent); 
 031E 20EF              ldi R18,240 
 0320 0FE3              ldi R16,63 
 0322 E0DE              rcall _halSpiWriteReg 
 0324                   .dbline 417 
 0324           ;     halSpiWriteReg(CCxxx0_TXFIFO, ID_Oneself); 
 0324 20EF              ldi R18,240 
 0326 0FE3              ldi R16,63 
 0328 DDDE              rcall _halSpiWriteReg 
 032A                   .dbline 419 
 032A           ;  
 032A           ;     halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);       //写入要发送的数据 
 032A 6883              std y+0,R22 
 032C 9A01              movw R18,R20 
 032E 0FE3              ldi R16,63 
 0330 E6DE              rcall _halSpiWriteBurstReg 
 0332                   .dbline 422 
 0332           ;      
 0332           ;      
 0332           ;     halSpiStrobe(CCxxx0_STX);         //进入发送模式发送数据 
 0332 05E3              ldi R16,53 
 0334 FCDE              rcall _halSpiStrobe 
 0336           L102: 
 0336                   .dbline 425 
 0336           L103: 
 0336                   .dbline 425 
 0336           ;     
 0336           ;     // Wait for GDO0 to be set - > sync transmitted 
 0336           ;     while (!GDO0); 
 0336 20B2              in R2,0x10 
 0338 2220              tst R2 
 033A 19F4              brne L105 
 033C 41E0              ldi R20,1 
 033E 50E0              ldi R21,0 
 0340 02C0              rjmp L106 
 0342           L105: 
 0342 4427              clr R20 
 0344 5527              clr R21 
 0346           L106: 
 0346 42FD              sbrc R20,2 
 0348 F6CF              rjmp L102 
 034A           L107: 
 034A                   .dbline 428 
 034A           L108: 
 034A                   .dbline 428 
 034A           ;      
 034A           ;     // Wait for GDO0 to be set - > sync transmitted  
 034A           ;     while (GDO0); 
 034A 8299              sbic 0x10,2 
 034C FECF              rjmp L107 
 034E                   .dbline 430 
 034E           ;      
 034E           ;       halSpiStrobe(CCxxx0_SFTX);        //清洗发送缓冲区 
 034E 0BE3              ldi R16,59 
 0350 EEDE              rcall _halSpiStrobe 
 0352                   .dbline -2 
 0352           L101: 
 0352 2196              adiw R28,1 
 0354 00D0              rcall pop_gset2 
 0356                   .dbline 0 ; func end 
 0356 0895              ret 
 0358                   .dbsym r size 22 c 
 0358                   .dbsym r txBuffer 20 pc 
 0358                   .dbend