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

📄 twimain.s

📁 PTR8000无线通信模块的单片机控制程序
💻 S
📖 第 1 页 / 共 2 页
字号:
; 	创建时间:2005-12-02
; 	修改时间:
; 	修改内容:				*/
; 
; void SPI_MasterInit(void)
; {
	.dbline 204
; 	SPCR = 0x51;		//SPI控制寄存器初始化:SPI允许,MSB先发,主模式,16分频
	ldi R24,81
	out 0xd,R24
	.dbline -2
	.dbline 205
; }
L21:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e SPI_M_Send _SPI_M_Send fV
;              c -> R16
	.even
_SPI_M_Send::
	.dbline -1
	.dbline 218
; //**********************************************************************
; /*	函数名:	SPI_M_Send
; 	功能说明:SPI主机发送一个字节函数。
; 	参数说明:	c为要发送的字节
; 	返回值:	无
; 	函数作者:Haibo YU
; 	版本号:	1.0
; 	创建时间:2005-12-02
; 	修改时间:2005-12-05
; 	修改内容:	去掉SS信号控制语句	*/
; 
; void SPI_M_Send(unsigned char c)
; {
	.dbline 219
; 	SPDR = c;	//传送开始
	out 0xf,R16
L23:
	.dbline 221
L24:
	.dbline 220
; 	while(!(SPSR & 0X80)) 
	sbis 0xe,7
	rjmp L23
	.dbline -2
	.dbline 223
; 		;	//查询SPIF标志
; 	
; }
L22:
	.dbline 0 ; func end
	ret
	.dbsym r c 16 c
	.dbend
	.dbfunc e SPI_M_Recv _SPI_M_Recv fc
;              c -> R16
	.even
_SPI_M_Recv::
	.dbline -1
	.dbline 237
; //************************************************************************
; 
; /*	函数名:	SPI_M_Recv
; 	功能说明:SPI主机方式接收一个字节函数。
; 	参数说明:任意无效字符
; 	返回值:	返回接收到的字节
; 	函数作者:Haibo YU
; 	版本号:	1.0
; 	创建时间:2005-12-06
; 	修改时间:
; 	修改内容:				*/
; 
; unsigned char SPI_M_Recv(unsigned char c)
; {
	.dbline 238
; 	SPDR = c;	//传送开始
	out 0xf,R16
L27:
	.dbline 240
L28:
	.dbline 239
; 	while(!(SPSR & 0X80)) 
	sbis 0xe,7
	rjmp L27
	.dbline 241
; 		;	//查询SPIF标志
; 	return SPDR;	//返回接收的字符
	in R16,0xf
	.dbline -2
L26:
	.dbline 0 ; func end
	ret
	.dbsym r c 16 c
	.dbend
	.dbfunc e PTR8_Standby _PTR8_Standby fV
	.even
_PTR8_Standby::
	.dbline -1
	.dbline 258
; }
; //*************************************************************************
; 
; //***************************PTR8000无线模块用函数*****************
; 
; /*	函数名:	PTR8_Standby
; 	功能说明:将PTR8置为待机状态。SET TRX_CE = 0
; 	参数说明:无
; 	返回值:	无
; 	函数作者:Haibo YU
; 	版本号:	1.0
; 	创建时间:2005-12-23
; 	修改时间:
; 	修改内容:				*/
; 
; void PTR8_Standby(void)
; {
	.dbline 259
; 	PORTD &= ~BIT(PD1);	//TRX_CE = 0
	cbi 0x12,1
	.dbline -2
	.dbline 260
; }
L30:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e PTR8_TREN _PTR8_TREN fV
	.even
_PTR8_TREN::
	.dbline -1
	.dbline 274
; //**************************************************************************
; 
; /*	函数名:	PTR8_TREN
; 	功能说明:将PTR8置为工作状态。SET TRX_CE = 1
; 	参数说明:无
; 	返回值:	无
; 	函数作者:Haibo YU
; 	版本号:	1.0
; 	创建时间:2005-12-23
; 	修改时间:
; 	修改内容:				*/
; 
; void PTR8_TREN(void)
; {
	.dbline 275
; 	PORTD |= BIT(PD1);	//TRX_CE = 1
	sbi 0x12,1
	.dbline -2
	.dbline 276
; }
L31:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e PTR8_TX _PTR8_TX fV
	.even
_PTR8_TX::
	.dbline -1
	.dbline 290
; //***************************************************************************
; 
; /*	函数名:	PTR8_TX
; 	功能说明:将PTR8置为发送状态。
; 	参数说明:无
; 	返回值:	无
; 	函数作者:Haibo YU
; 	版本号:	1.0
; 	创建时间:2005-12-23
; 	修改时间:
; 	修改内容:				*/
; 
; void PTR8_TX(void)
; {
	.dbline 291
; 	PORTD |= BIT(PD0);	//TX_EN = 1
	sbi 0x12,0
	.dbline -2
	.dbline 292
; }
L32:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e PTR8_RX _PTR8_RX fV
	.even
_PTR8_RX::
	.dbline -1
	.dbline 306
; //***************************************************************************
; 
; /*	函数名:	PTR8_RX
; 	功能说明:将PTR8置为接收状态。
; 	参数说明:无
; 	返回值:	无
; 	函数作者:Haibo YU
; 	版本号:	1.0
; 	创建时间:2005-12-23
; 	修改时间:
; 	修改内容:				*/
; 
; void PTR8_RX(void)
; {
	.dbline 307
; 	PORTD &= ~BIT(PD0);	//TX_EN = 0
	cbi 0x12,0
	.dbline -2
	.dbline 308
; }
L33:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Init_PTR8_CR _Init_PTR8_CR fV
	.even
_Init_PTR8_CR::
	.dbline -1
	.dbline 312
; //*****************************************************************************
; 
; void Init_PTR8_CR(void)
; {
	.dbline 313
; 	PORTB &= ~BIT(PB2);	//SS SET LOW, Write Configuration register Start
	cbi 0x18,2
	.dbline 314
; 	SPI_M_Send(WC);	//Wirte Configuration Register,Start From 0000
	clr R16
	rcall _SPI_M_Send
	.dbline 315
; 	SPI_M_Send(RC0);	//Write CH_NO [7 : 0]
	lds R16,_RC0
	rcall _SPI_M_Send
	.dbline 316
; 	SPI_M_Send(RC1);		//Write Byte 2
	lds R16,_RC1
	rcall _SPI_M_Send
	.dbline 317
; 	SPI_M_Send(0x44);
	ldi R16,68
	rcall _SPI_M_Send
	.dbline 318
; 	SPI_M_Send(0x01);	//RX payload = 1 byte 
	ldi R16,1
	rcall _SPI_M_Send
	.dbline 319
; 	SPI_M_Send(0x01);	//TX payload = 1 byte
	ldi R16,1
	rcall _SPI_M_Send
	.dbline 320
; 	SPI_M_Send(Add);
	lds R16,_Add
	rcall _SPI_M_Send
	.dbline 321
; 	SPI_M_Send(Add);
	lds R16,_Add
	rcall _SPI_M_Send
	.dbline 322
; 	SPI_M_Send(Add);
	lds R16,_Add
	rcall _SPI_M_Send
	.dbline 323
; 	SPI_M_Send(Add);
	lds R16,_Add
	rcall _SPI_M_Send
	.dbline 324
; 	SPI_M_Send(0x58);
	ldi R16,88
	rcall _SPI_M_Send
	.dbline 325
; 	PORTB |= BIT(PB2);	//SS set HIGH,Write Configuration Register Finish
	sbi 0x18,2
	.dbline -2
	.dbline 327
; 	
; }
L34:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Init_Device _Init_Device fV
	.even
_Init_Device::
	.dbline -1
	.dbline 340
; //************************************************************************************
; /*	函数名:	Init_Device
; 	功能说明:初始化设备。LED亮一下,蜂鸣器叫一声,初始化串口
; 	参数说明:无
; 	返回值:	无
; 	函数作者:Haibo YU
; 	版本号:	1.0
; 	创建时间:2005-12-23
; 	修改时间:
; 	修改内容:				*/
; 
; void Init_Device(void)
; {
	.dbline 342
; 	//stop errant interrupts until set up
;  	CLI(); //disable all interrupts
	cli
	.dbline 344
;  	
; 	port_init();		//初始化各控制端口
	rcall _port_init
	.dbline 345
; 	Uart_Init();		//串口初始化
	rcall _Uart_Init
	.dbline 346
; 	SPI_MasterInit();//SPI Master Init
	rcall _SPI_MasterInit
	.dbline 347
; 	MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 348
;  	GICR  = 0x00;
	out 0x3b,R2
	.dbline 349
;  	TIMSK = 0x00; //timer interrupt sources
	out 0x39,R2
	.dbline 351
;  	
; 	SEI(); //re-enable interrupts
	sei
	.dbline -2
	.dbline 353
; 	//all peripherals are now initialised
; }
L35:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;             dr -> R20
	.even
_main::
	.dbline -1
	.dbline 361
; 
; 
; 
; 
; //****************************** 主函数  ***************************************
; //******************************************************************************
; void main(void)
; {
	.dbline 364
;  	
; 	unsigned char dr;
; 	Init_Device();	//Init All Device
	rcall _Init_Device
	.dbline 366
; 
; 	Init_PTR8_CR();	//Set Configuration register
	rcall _Init_PTR8_CR
	.dbline 367
; 	Delay_1ms();
	rcall _Delay_1ms
	.dbline 369
; 
; 	PTR8_RX();	//Set RX mode
	rcall _PTR8_RX
	.dbline 370
; 	PTR8_TREN();	// TRX_CE = 1  Enable RX
	rcall _PTR8_TREN
	.dbline 371
; 	Delay_1ms();
	rcall _Delay_1ms
	rjmp L38
L37:
	.dbline 373
; 	while(1)
; 	{
	.dbline 375
; 	 		
; 		 	dr = (PINC & 0x04);
	in R20,0x13
	andi R20,4
	.dbline 376
; 			if(dr != 0)			//DR置位,无线数据接收成功
	breq L40
	.dbline 377
; 			{
	.dbline 378
; 			 	  PTR8_Standby();	//TRX_CE = 0,disable RX
	rcall _PTR8_Standby
	.dbline 379
; 			 	  Delay_1ms();
	rcall _Delay_1ms
	.dbline 380
; 			 	  PORTB &= ~BIT(PB2);	//SS = 0
	cbi 0x18,2
	.dbline 381
; 			 	  SPI_M_Send(RRP);	//Read RX payload
	ldi R16,36
	rcall _SPI_M_Send
	.dbline 384
; 			 	  
; 			 	 
; 			  	  Recv = SPI_M_Recv(0xff);
	ldi R16,255
	rcall _SPI_M_Recv
	sts _Recv,R16
	.dbline 386
; 			 	  
; 			 	  PORTB |= BIT(PB2);	//SS = 1
	sbi 0x18,2
	.dbline 399
; 
; 			 	/*  if(Recv == 0)
; 				  {
; 				   	LED(0); //接收到0 LED亮
; 				   	Delay_Nms(1000);
; 				  }
; 				  else
; 				  {
; 				   	LED(1);//接收到1 LED灭
; 					Delay_Nms(1000);  
; 				  }*/
; 				  
; 				  PTR8_RX();	//Set RX mode
	rcall _PTR8_RX
	.dbline 400
; 				  PTR8_TREN();	// TRX_CE = 1  Enable RX
	rcall _PTR8_TREN
	.dbline 401
; 				  Delay_1ms();
	rcall _Delay_1ms
	.dbline 403
; 				  
; 				  twiWriteByte(0xc0,Recv);
	lds R18,_Recv
	ldi R16,192
	rcall _twiWriteByte
	.dbline 404
; 			}	
L40:
	.dbline 405
L38:
	.dbline 372
	rjmp L37
X0:
	.dbline -2
	.dbline 406
; 	}   
; }
L36:
	.dbline 0 ; func end
	ret
	.dbsym r dr 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
_Recv::
	.blkb 1
	.dbsym e Recv _Recv c

⌨️ 快捷键说明

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