📄 cc2420.lis
字号:
02A2 ; ********************************************/
02A2 ; void AllStates_PwDown(void)
02A2 ; {
02A2 .dbline 320
02A2 ; Write_Command(SXOSCOFF);
02A2 07E0 ldi R16,7
02A4 ADDE xcall _Write_Command
02A6 .dbline -2
02A6 L33:
02A6 .dbline 0 ; func end
02A6 0895 ret
02A8 .dbend
02A8 .dbfunc e PwDown_Idle _PwDown_Idle fV
02A8 ; statue -> R20
.even
02A8 _PwDown_Idle::
02A8 0E940000 xcall push_gset1
02AC .dbline -1
02AC .dbline 330
02AC ; }
02AC ;
02AC ; /*******************************************
02AC ; *函数功能:从掉电模式转换到空闲模式
02AC ; *输入参数:无
02AC ; *输出参数:无
02AC ; *返 回 值:无
02AC ; ********************************************/
02AC ; void PwDown_Idle(void)
02AC ; {
02AC .dbline 332
02AC ; unsigned char statue;
02AC ; Write_Command(SXOSCON);
02AC 01E0 ldi R16,1
02AE A8DE xcall _Write_Command
02B0 05C0 xjmp L36
02B2 L35:
02B2 .dbline 335
02B2 ;
02B2 ; while(1) //等待晶体振荡器稳定运行
02B2 ; {
02B2 .dbline 336
02B2 ; statue=Read_Status();
02B2 B5DE xcall _Read_Status
02B4 402F mov R20,R16
02B6 .dbline 337
02B6 ; if((statue&(1<<XOSC16M_STABLE))!=0)
02B6 06FF sbrs R16,6
02B8 01C0 rjmp L38
02BA .dbline 338
02BA ; {
02BA .dbline 339
02BA ; break;
02BA 01C0 xjmp L37
02BC L38:
02BC .dbline 341
02BC L36:
02BC .dbline 334
02BC FACF xjmp L35
02BE L37:
02BE .dbline -2
02BE L34:
02BE 0E940000 xcall pop_gset1
02C2 .dbline 0 ; func end
02C2 0895 ret
02C4 .dbsym r statue 20 c
02C4 .dbend
02C4 .dbfunc e AllStates_Idle _AllStates_Idle fV
.even
02C4 _AllStates_Idle::
02C4 .dbline -1
02C4 .dbline 351
02C4 ; }
02C4 ; }
02C4 ; }
02C4 ;
02C4 ; /*******************************************
02C4 ; *函数功能:从其他任何模式转换到空闲模式
02C4 ; *输入参数:无
02C4 ; *输出参数:无
02C4 ; *返 回 值:无
02C4 ; ********************************************/
02C4 ; void AllStates_Idle(void)
02C4 ; {
02C4 .dbline 352
02C4 ; Write_Command(SRFOFF);
02C4 06E0 ldi R16,6
02C6 9CDE xcall _Write_Command
02C8 .dbline -2
02C8 L40:
02C8 .dbline 0 ; func end
02C8 0895 ret
02CA .dbend
02CA .dbfunc e Idle_Tx _Idle_Tx fV
.even
02CA _Idle_Tx::
02CA .dbline -1
02CA .dbline 362
02CA ; }
02CA ;
02CA ; /*******************************************
02CA ; *函数功能:从空闲模式启动发送
02CA ; *输入参数:无
02CA ; *输出参数:无
02CA ; *返 回 值:无
02CA ; ********************************************/
02CA ; void Idle_Tx(void)
02CA ; {
02CA .dbline 363
02CA ; Write_Command(STXON);
02CA 04E0 ldi R16,4
02CC 99DE xcall _Write_Command
02CE .dbline -2
02CE L41:
02CE .dbline 0 ; func end
02CE 0895 ret
02D0 .dbend
02D0 .dbfunc e Rx_Tx _Rx_Tx fV
.even
02D0 _Rx_Tx::
02D0 .dbline -1
02D0 .dbline 373
02D0 ; }
02D0 ;
02D0 ; /*******************************************
02D0 ; *函数功能:从接收状态转换到发送模式
02D0 ; *输入参数:无
02D0 ; *输出参数:无
02D0 ; *返 回 值:无
02D0 ; ********************************************/
02D0 ; void Rx_Tx(void)
02D0 ; {
02D0 05C0 xjmp L44
02D2 L43:
02D2 .dbline 375
02D2 ; while(1)
02D2 ; {
02D2 .dbline 376
02D2 ; if(PINA&(1<<CCA)!=0) //信道空闲
02D2 C89B sbis 0x19,0
02D4 03C0 rjmp L46
02D6 .dbline 377
02D6 ; {
02D6 .dbline 378
02D6 ; Write_Command(STXONCCA);
02D6 05E0 ldi R16,5
02D8 93DE xcall _Write_Command
02DA .dbline 379
02DA ; break;
02DA 01C0 xjmp L45
02DC L46:
02DC .dbline 381
02DC L44:
02DC .dbline 374
02DC FACF xjmp L43
02DE L45:
02DE .dbline -2
02DE L42:
02DE .dbline 0 ; func end
02DE 0895 ret
02E0 .dbend
02E0 .dbfunc e Idle_Rx _Idle_Rx fV
.even
02E0 _Idle_Rx::
02E0 .dbline -1
02E0 .dbline 391
02E0 ; }
02E0 ; }
02E0 ; }
02E0 ;
02E0 ; /*******************************************
02E0 ; *函数功能:从空闲模式启动接收模式
02E0 ; *输入参数:无
02E0 ; *输出参数:无
02E0 ; *返 回 值:无
02E0 ; ********************************************/
02E0 ; void Idle_Rx(void)
02E0 ; {
02E0 .dbline 392
02E0 ; Write_Command(SRXON);
02E0 03E0 ldi R16,3
02E2 8EDE xcall _Write_Command
02E4 .dbline -2
02E4 L48:
02E4 .dbline 0 ; func end
02E4 0895 ret
02E6 .dbend
02E6 .dbfunc e Set_Configure _Set_Configure fV
02E6 ; RegisterValueL -> R22
02E6 ; RegisterValueH -> R20
.even
02E6 _Set_Configure::
02E6 0E940000 xcall push_gset2
02EA 2197 sbiw R28,1
02EC .dbline -1
02EC .dbline 402
02EC ; }
02EC ;
02EC ; /*******************************************
02EC ; *函数功能:设置配置字(用于初始化)
02EC ; *输入参数:无
02EC ; *输出参数:无
02EC ; *返 回 值:无
02EC ; ********************************************/
02EC ; void Set_Configure(void)
02EC ; {
02EC .dbline 404
02EC ; unsigned char RegisterValueH,RegisterValueL;
02EC ; PowerOff(); //???????????????????????????????
02EC C4DF xcall _PowerOff
02EE .dbline 405
02EE ; PwOff_PwDown(); //在power down模式下设置配置寄存器
02EE C5DF xcall _PwOff_PwDown
02F0 .dbline 407
02F0 ;
02F0 ; enable_spi(); //使能SPI口
02F0 0E940000 xcall _enable_spi
02F4 .dbline 409
02F4 ;
02F4 ; RegisterValueH=0X0A;
02F4 4AE0 ldi R20,10
02F6 .dbline 410
02F6 ; RegisterValueL=0XE2; //地址认证使能,自动应答不使能
02F6 62EE ldi R22,226
02F8 .dbline 411
02F8 ; Write_ConfigureWord(MDMCTRL0,RegisterValueH,RegisterValueL);
02F8 6883 std y+0,R22
02FA 242F mov R18,R20
02FC 01E1 ldi R16,17
02FE 97DE xcall _Write_ConfigureWord
0300 .dbline 413
0300 ;
0300 ; RegisterValueH=0X05;
0300 45E0 ldi R20,5
0302 .dbline 414
0302 ; RegisterValueL=0X00;
0302 6627 clr R22
0304 .dbline 415
0304 ; Write_ConfigureWord(MDMCTRL1,RegisterValueH,RegisterValueL);
0304 6883 std y+0,R22
0306 242F mov R18,R20
0308 02E1 ldi R16,18
030A 91DE xcall _Write_ConfigureWord
030C .dbline 421
030C ;
030C ; // RegisterValueH=-50;
030C ; // RegisterValueL=0X00;
030C ; // Write_ConfigureWord(RSSI,RegisterValueH,RegisterValueL); //???????????????????????调试时修改
030C ;
030C ; RegisterValueH=0x41;
030C 41E4 ldi R20,65
030E .dbline 422
030E ; RegisterValueL=0X92; //2.45GHz
030E 62E9 ldi R22,146
0310 .dbline 423
0310 ; Write_ConfigureWord(FSCTRL,RegisterValueH,RegisterValueL);
0310 6883 std y+0,R22
0312 242F mov R18,R20
0314 08E1 ldi R16,24
0316 8BDE xcall _Write_ConfigureWord
0318 .dbline 425
0318 ;
0318 ; RegisterValueH=0x01;
0318 41E0 ldi R20,1
031A .dbline 426
031A ; RegisterValueL=0Xe4; //安全模式不使能
031A 64EE ldi R22,228
031C .dbline 427
031C ; Write_ConfigureWord(SECCTRL0,RegisterValueH,RegisterValueL);
031C 6883 std y+0,R22
031E 242F mov R18,R20
0320 09E1 ldi R16,25
0322 85DE xcall _Write_ConfigureWord
0324 .dbline 433
0324 ;
0324 ; //RegisterValueH=128;
0324 ; //RegisterValueL=128;
0324 ; //Write_ConfigureWord(SECCTRL1,RegisterValueH,RegisterValueL); //???????????????????????调试时修改
0324 ;
0324 ; RegisterValueH=0;
0324 4427 clr R20
0326 .dbline 434
0326 ; RegisterValueL=TX_length; //RXFIFO的极限值
0326 60E7 ldi R22,112
0328 .dbline 435
0328 ; Write_ConfigureWord(IOCFG0,RegisterValueH,RegisterValueL); //???????????????????????调试时修改
0328 6883 std y+0,R22
032A 242F mov R18,R20
032C 0CE1 ldi R16,28
032E 7FDE xcall _Write_ConfigureWord
0330 .dbline 437
0330 ;
0330 ; disable_spi(); //禁止SPI口
0330 0E940000 xcall _disable_spi
0334 .dbline -2
0334 L49:
0334 2196 adiw R28,1
0336 0E940000 xcall pop_gset2
033A .dbline 0 ; func end
033A 0895 ret
033C .dbsym r RegisterValueL 22 c
033C .dbsym r RegisterValueH 20 c
033C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -