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

📄 cc1100.lis

📁 极低功率UHF无线收发器 315/433/868和915MHz ISM/SRD波段系统 AMR-自动仪表读数 电子消费产品 RKE-两路远程无键登录
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -