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

📄 cc2420.s

📁 该程序通过调试
💻 S
📖 第 1 页 / 共 2 页
字号:
;   AddrH|=0X80;      //访问RAM位置1
	ori R20,128
	.dbline 217
;   AddrL<<=6;
	lsl R22
	lsl R22
	lsl R22
	lsl R22
	lsl R22
	lsl R22
	.dbline 218
;   AddrL&=0XDF;      //读写操作位置0,表示写操作
	andi R22,223
	.dbline 220
;   
;   enable_spi();         //使能SPI口 
	xcall _enable_spi
	.dbline 221
;   statuevalue=SpiWrite(AddrH);  
	mov R16,R20
	xcall _SpiWrite
	mov R20,R16
	.dbline 222
;   SpiWrite(AddrL);
	mov R16,R22
	xcall _SpiWrite
	.dbline 224
;   
;   SpiWrite(p_Data); 
	ldd R16,y+4
	xcall _SpiWrite
	.dbline 226
;    
;   disable_spi();      //禁止SPI口 
	xcall _disable_spi
	.dbline 227
;   return statuevalue;
	mov R16,R20
	.dbline -2
L24:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r statuevalue 20 c
	.dbsym l p_Data 4 c
	.dbsym r AddrL 22 c
	.dbsym r AddrH 20 c
	.dbend
	.dbfunc e Read_RAM _Read_RAM fc
;    statuevalue -> R20
;              i -> R22
;         p_Data -> R10,R11
;       Data_Num -> R12
;          AddrL -> R22
;          AddrH -> R20
	.even
_Read_RAM::
	xcall push_gset4
	mov R22,R18
	mov R20,R16
	ldd R12,y+8
	ldd R10,y+10
	ldd R11,y+11
	.dbline -1
	.dbline 240
; }
; 
; /*******************************************
; *函数功能:读RAM
; *输入参数:p_Data:存储数据的缓存首地址;
;            Data_Num:要读取的字节数
; 		   AddrH:在选定的RAM存储块中确定RAM地址
; 		   AddrL:选择RAM存储块
; *输出参数:无
; *返 回 值:状态寄存器的值
; ********************************************/
; unsigned char Read_RAM(unsigned char AddrH,unsigned char AddrL,unsigned char Data_Num,unsigned char *p_Data)  
; {
	.dbline 242
;   unsigned char statuevalue,i;
;   AddrH|=0X80;      //访问RAM位置1
	ori R20,128
	.dbline 243
;   AddrL<<=6;
	lsl R22
	lsl R22
	lsl R22
	lsl R22
	lsl R22
	lsl R22
	.dbline 244
;   AddrL|=0X20;      //读写操作位置1,表示读操作
	ori R22,32
	.dbline 246
;   
;   enable_spi();         //使能SPI口 
	xcall _enable_spi
	.dbline 247
;   statuevalue=SpiWrite(AddrH);  
	mov R16,R20
	xcall _SpiWrite
	mov R20,R16
	.dbline 248
;   SpiWrite(AddrL);
	mov R16,R22
	xcall _SpiWrite
	.dbline 250
;   
;   for (i=0;i<Data_Num;i++)
	clr R22
	xjmp L29
L26:
	.dbline 251
	.dbline 252
	ldi R16,255
	xcall _SpiWrite
	mov R30,R22
	clr R31
	add R30,R10
	adc R31,R11
	std z+0,R16
	.dbline 253
L27:
	.dbline 250
	inc R22
L29:
	.dbline 250
	cp R22,R12
	brlo L26
	.dbline 255
;   {
;     *(p_Data+i)=SpiWrite(0xff);
;   }
;   
;   disable_spi();      //禁止SPI口 
	xcall _disable_spi
	.dbline 256
;   return statuevalue;
	mov R16,R20
	.dbline -2
L25:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r statuevalue 20 c
	.dbsym r i 22 c
	.dbsym r p_Data 10 pc
	.dbsym r Data_Num 12 c
	.dbsym r AddrL 22 c
	.dbsym r AddrH 20 c
	.dbend
	.dbfunc e Read_RAM_Byte _Read_RAM_Byte fc
;      readvalue -> R20
;          AddrL -> R20
;          AddrH -> R22
	.even
_Read_RAM_Byte::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 267
; }
; 
; /*******************************************
; *函数功能:读一字节RAM
; *输入参数:AddrH:在选定的RAM存储块中确定RAM地址
; 		   AddrL:选择RAM存储块
; *输出参数:无
; *返 回 值:读取的数据值
; ********************************************/
; unsigned char Read_RAM_Byte(unsigned char AddrH,unsigned char AddrL)
; {
	.dbline 269
;   unsigned char readvalue;
;   AddrH|=0X80;      //访问RAM位置1
	ori R22,128
	.dbline 270
;   AddrL<<=6;
	lsl R20
	lsl R20
	lsl R20
	lsl R20
	lsl R20
	lsl R20
	.dbline 271
;   AddrL|=0X20;      //读写操作位置1,表示读操作
	ori R20,32
	.dbline 273
;   
;   enable_spi();         //使能SPI口 
	xcall _enable_spi
	.dbline 274
;   SpiWrite(AddrH);  
	mov R16,R22
	xcall _SpiWrite
	.dbline 275
;   SpiWrite(AddrL);                         
	mov R16,R20
	xcall _SpiWrite
	.dbline 277
;   
;   readvalue=SpiWrite(0xff); 
	ldi R16,255
	xcall _SpiWrite
	mov R20,R16
	.dbline 279
;   
;   disable_spi();      //禁止SPI口 
	xcall _disable_spi
	.dbline 280
;   return readvalue;
	mov R16,R20
	.dbline -2
L30:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r readvalue 20 c
	.dbsym r AddrL 20 c
	.dbsym r AddrH 22 c
	.dbend
	.dbfunc e PowerOff _PowerOff fV
	.even
_PowerOff::
	.dbline -1
	.dbline 290
; }
; 
; /*******************************************
; *函数功能:关闭电压校准器模式
; *输入参数:无
; *输出参数:无
; *返 回 值:无
; ********************************************/
; void PowerOff(void)
; {
	.dbline 291
;   PORTE &=~(1<<VREGEN);     //禁止电压校准器   
	cbi 0x3,3
	.dbline -2
L31:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e PwOff_PwDown _PwOff_PwDown fV
	.even
_PwOff_PwDown::
	sbiw R28,1
	.dbline -1
	.dbline 301
; }
; 
; /*******************************************
; *函数功能:从电压校准器关闭模式转换到掉电模式 
; *输入参数:无
; *输出参数:无
; *返 回 值:无
; ********************************************/
; void PwOff_PwDown(void)  
; {
	.dbline 302
;   PORTE |=1<<VREGEN;     //启动电压校准器  
	sbi 0x3,3
	.dbline 303
;   Delay600us();  
	xcall _Delay600us
	.dbline 305
;   
;   enable_spi();     //使能SPI口 
	xcall _enable_spi
	.dbline 306
;   Write_ConfigureWord(MAIN,0x78,0x00);  //先将reset位设置为低  
	clr R2
	std y+0,R2
	ldi R18,120
	ldi R16,16
	xcall _Write_ConfigureWord
	.dbline 307
;   Write_ConfigureWord(MAIN,0xf8,0x00);  //先将reset位设置为高,完成复位过程
	clr R2
	std y+0,R2
	ldi R18,248
	ldi R16,16
	xcall _Write_ConfigureWord
	.dbline 308
;   disable_spi();      //禁止SPI口 
	xcall _disable_spi
	.dbline -2
L32:
	adiw R28,1
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e AllStates_PwDown _AllStates_PwDown fV
	.even
_AllStates_PwDown::
	.dbline -1
	.dbline 319
;   
; }
; 
; /*******************************************
; *函数功能:其他任何模式转换到掉电模式 
; *输入参数:无
; *输出参数:无
; *返 回 值:无
; ********************************************/
; void AllStates_PwDown(void)   
; {
	.dbline 320
;   Write_Command(SXOSCOFF);
	ldi R16,7
	xcall _Write_Command
	.dbline -2
L33:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e PwDown_Idle _PwDown_Idle fV
;         statue -> R20
	.even
_PwDown_Idle::
	xcall push_gset1
	.dbline -1
	.dbline 330
; }
; 
; /*******************************************
; *函数功能:从掉电模式转换到空闲模式 
; *输入参数:无
; *输出参数:无
; *返 回 值:无
; ********************************************/
; void PwDown_Idle(void)
; {
	.dbline 332
;   unsigned char statue;
;   Write_Command(SXOSCON);
	ldi R16,1
	xcall _Write_Command
	xjmp L36
L35:
	.dbline 335
;   
;   while(1)              //等待晶体振荡器稳定运行
;   {
	.dbline 336
;     statue=Read_Status();
	xcall _Read_Status
	mov R20,R16
	.dbline 337
;     if((statue&(1<<XOSC16M_STABLE))!=0)
	sbrs R16,6
	rjmp L38
	.dbline 338
; 	{
	.dbline 339
; 	  break;
	xjmp L37
L38:
	.dbline 341
L36:
	.dbline 334
	xjmp L35
L37:
	.dbline -2
L34:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r statue 20 c
	.dbend
	.dbfunc e AllStates_Idle _AllStates_Idle fV
	.even
_AllStates_Idle::
	.dbline -1
	.dbline 351
; 	}
;   }
; } 
; 
; /*******************************************
; *函数功能:从其他任何模式转换到空闲模式 
; *输入参数:无
; *输出参数:无
; *返 回 值:无
; ********************************************/
; void AllStates_Idle(void)   
; {
	.dbline 352
;   Write_Command(SRFOFF);
	ldi R16,6
	xcall _Write_Command
	.dbline -2
L40:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Idle_Tx _Idle_Tx fV
	.even
_Idle_Tx::
	.dbline -1
	.dbline 362
; }   
; 
; /*******************************************
; *函数功能:从空闲模式启动发送 
; *输入参数:无
; *输出参数:无
; *返 回 值:无
; ********************************************/
; void Idle_Tx(void)  
; {
	.dbline 363
;   Write_Command(STXON);
	ldi R16,4
	xcall _Write_Command
	.dbline -2
L41:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Rx_Tx _Rx_Tx fV
	.even
_Rx_Tx::
	.dbline -1
	.dbline 373
; }    
; 
; /*******************************************
; *函数功能:从接收状态转换到发送模式
; *输入参数:无
; *输出参数:无
; *返 回 值:无
; ********************************************/
; void Rx_Tx(void)                     
; {
	xjmp L44
L43:
	.dbline 375
;   while(1)
;   {
	.dbline 376
;     if((PINA&(1<<CCA))!=0)      //信道空闲
	sbis 0x19,1
	rjmp L46
	.dbline 377
;     {
	.dbline 378
;     Write_Command(STXONCCA);  
	ldi R16,5
	xcall _Write_Command
	.dbline 379
; 	break;
	xjmp L45
L46:
	.dbline 381
L44:
	.dbline 374
	xjmp L43
L45:
	.dbline -2
L42:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Idle_Rx _Idle_Rx fV
	.even
_Idle_Rx::
	.dbline -1
	.dbline 391
;     }
;   }
; } 
; 
; /*******************************************
; *函数功能:从空闲模式启动接收模式
; *输入参数:无
; *输出参数:无
; *返 回 值:无
; ********************************************/
; void Idle_Rx(void)
; {
	.dbline 392
;   Write_Command(SRXON);
	ldi R16,3
	xcall _Write_Command
	.dbline -2
L48:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Set_Configure _Set_Configure fV
; RegisterValueL -> R22
; RegisterValueH -> R20
	.even
_Set_Configure::
	xcall push_gset2
	sbiw R28,1
	.dbline -1
	.dbline 402
; }     
; 
; /*******************************************
; *函数功能:设置配置字(用于初始化)
; *输入参数:无
; *输出参数:无
; *返 回 值:无
; ********************************************/
; void Set_Configure(void)       
; {
	.dbline 404
;   unsigned char RegisterValueH,RegisterValueL;
;   PowerOff();   //???????????????????????????????
	xcall _PowerOff
	.dbline 405
;   PwOff_PwDown();  //在power down模式下设置配置寄存器
	xcall _PwOff_PwDown
	.dbline 407
;   
;   enable_spi();     //使能SPI口 
	xcall _enable_spi
	.dbline 409
;   
;   RegisterValueH=0X0A;
	ldi R20,10
	.dbline 410
;   RegisterValueL=0XE2;  //地址认证使能,自动应答不使能
	ldi R22,226
	.dbline 411
;   Write_ConfigureWord(MDMCTRL0,RegisterValueH,RegisterValueL); 
	std y+0,R22
	mov R18,R20
	ldi R16,17
	xcall _Write_ConfigureWord
	.dbline 413
;   
;   RegisterValueH=0X05;
	ldi R20,5
	.dbline 414
;   RegisterValueL=0X00; 
	clr R22
	.dbline 415
;   Write_ConfigureWord(MDMCTRL1,RegisterValueH,RegisterValueL); 
	std y+0,R22
	mov R18,R20
	ldi R16,18
	xcall _Write_ConfigureWord
	.dbline 421
;   
;  // RegisterValueH=-50;
;  // RegisterValueL=0X00; 
;  // Write_ConfigureWord(RSSI,RegisterValueH,RegisterValueL); //???????????????????????调试时修改
;   
;   RegisterValueH=0x41;
	ldi R20,65
	.dbline 422
;   RegisterValueL=0X92;    //2.45GHz
	ldi R22,146
	.dbline 423
;   Write_ConfigureWord(FSCTRL,RegisterValueH,RegisterValueL); 
	std y+0,R22
	mov R18,R20
	ldi R16,24
	xcall _Write_ConfigureWord
	.dbline 425
;   
;   RegisterValueH=0x01;
	ldi R20,1
	.dbline 426
;   RegisterValueL=0Xe4;    //安全模式不使能
	ldi R22,228
	.dbline 427
;   Write_ConfigureWord(SECCTRL0,RegisterValueH,RegisterValueL); 
	std y+0,R22
	mov R18,R20
	ldi R16,25
	xcall _Write_ConfigureWord
	.dbline 433
;   
;   //RegisterValueH=128;
;   //RegisterValueL=128; 
;   //Write_ConfigureWord(SECCTRL1,RegisterValueH,RegisterValueL); //???????????????????????调试时修改
;   
;   RegisterValueH=0;
	clr R20
	.dbline 434
;   RegisterValueL=TX_length;  //RXFIFO的极限值
	ldi R22,112
	.dbline 435
;   Write_ConfigureWord(IOCFG0,RegisterValueH,RegisterValueL); //???????????????????????调试时修改
	std y+0,R22
	mov R18,R20
	ldi R16,28
	xcall _Write_ConfigureWord
	.dbline 437
;   
;   disable_spi();      //禁止SPI口 
	xcall _disable_spi
	.dbline -2
L49:
	adiw R28,1
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r RegisterValueL 22 c
	.dbsym r RegisterValueH 20 c
	.dbend

⌨️ 快捷键说明

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