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