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

📄 uart.s

📁 PTR8000无线通信模块的单片机控制程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	.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
; 	PORTC &= ~BIT(PC5);	//TRX_CE = 0
	cbi 0x15,5
	.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
; 	PORTC |= BIT(PC5);	//TRX_CE = 1
	sbi 0x15,5
	.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
; 	PORTC |= BIT(PC4);	//TX_EN = 1
	sbi 0x15,4
	.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
; 	PORTC &= ~BIT(PC4);	//TX_EN = 0
	cbi 0x15,4
	.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
;  	
; 	init_port();		//初始化各控制端口
	rcall _init_port
	.dbline 345
; 	LED(0);	//LED全亮
	clr R16
	rcall _LED
	.dbline 346
; 	Uart_Init();		//串口初始化
	rcall _Uart_Init
	.dbline 347
; 	SPI_MasterInit();//SPI Master Init
	rcall _SPI_MasterInit
	.dbline 348
; 	MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 349
;  	GICR  = 0x00;
	out 0x3b,R2
	.dbline 350
;  	TIMSK = 0x00; //timer interrupt sources
	out 0x39,R2
	.dbline 352
;  	
; 	SEI(); //re-enable interrupts
	sei
	.dbline 353
; 	LED(1);	//LED全灭
	ldi R16,1
	.dbline -2
	.dbline 355
; 	//all peripherals are now initialised
; }
L35:
	.dbline 0 ; func end
	rjmp _LED
	.dbend
	.dbfunc e main _main fV
;              F -> <dead>
;             dr -> R20
;              i -> R22
	.even
_main::
	.dbline -1
	.dbline 366
; 
; //**************************************************************************
; 
; 
; //****************************主程序**********************************
; /*无线模块发送程序,无线模块发送的字符为通过串口接收的字符,规定为0和1,而且每次数据发送
; 成功LED都会闪一次*/
; //********************发送程序**********************
; 
; void main(void)
; {
	.dbline 368
; 	unsigned char i,dr,F;
; 	Init_Device();	//Init All Device
	rcall _Init_Device
	.dbline 370
; 
; 	Init_PTR8_CR();	//Set Configuration register
	rcall _Init_PTR8_CR
	.dbline 371
; 	Delay_1ms();
	rcall _Delay_1ms
	.dbline 373
; 
; 	PTR8_RX();	//Set RX mode
	rcall _PTR8_RX
	.dbline 374
; 	PTR8_TREN();	// TRX_CE = 1  Enable RX
	rcall _PTR8_TREN
	.dbline 375
; 	Delay_1ms();
	rcall _Delay_1ms
	rjmp L38
L37:
	.dbline 377
; 	while(1)
; 	{
	.dbline 378
; 			LED(1);
	ldi R16,1
	rcall _LED
	.dbline 379
; 			Delay_Nms(1000);
	ldi R16,1000
	ldi R17,3
	rcall _Delay_Nms
	.dbline 381
; 			
; 			PTR8_TX();		//set TX mode
	rcall _PTR8_TX
	.dbline 382
; 			Delay_1ms();
	rcall _Delay_1ms
	.dbline 383
; 			PORTB &= ~BIT(PB2);	//SS = 0
	cbi 0x18,2
	.dbline 384
; 			SPI_M_Send(WTP);		//Write TX payload
	ldi R16,32
	rcall _SPI_M_Send
	.dbline 386
; 			
; 			SPI_M_Send(Recv);		// Data = Recv[]
	lds R16,_Recv
	rcall _SPI_M_Send
	.dbline 388
; 			
; 			PORTB |= BIT(PB2);		//ss = 1		
	sbi 0x18,2
	.dbline 389
; 			Delay_1ms();
	rcall _Delay_1ms
	.dbline 390
; 			PORTB &= ~BIT(PB2);		//SS = 0
	cbi 0x18,2
	.dbline 391
; 			SPI_M_Send(WTA);		//write TX_Address
	ldi R16,34
	rcall _SPI_M_Send
	.dbline 392
; 			for(i = 0 ; i < 4 ; i ++)
	clr R22
	rjmp L43
L40:
	.dbline 393
	.dbline 394
	lds R16,_Add
	rcall _SPI_M_Send
	.dbline 395
L41:
	.dbline 392
	inc R22
L43:
	.dbline 392
	cpi R22,4
	brlo L40
	.dbline 396
; 			{
; 			 	  SPI_M_Send(Add);	//TX_Address = Add
; 			}
; 			PORTB |= BIT(PB2);		//ss = 1
	sbi 0x18,2
	.dbline 397
; 			Delay_1ms();
	rcall _Delay_1ms
	.dbline 398
; 			PTR8_TREN();	//TRX_CE = 1  Enable TX
	rcall _PTR8_TREN
L44:
	.dbline 400
; 			do
; 			  	dr = (PINC & 0x04);
	in R20,0x13
	andi R20,4
L45:
	.dbline 401
	tst R20
	breq L44
	.dbline 402
	rcall _PTR8_Standby
	.dbline 403
	rcall _Delay_1ms
	.dbline 405
	clr R16
	rcall _LED
	.dbline 406
	ldi R16,1000
	ldi R17,3
	rcall _Delay_Nms
	.dbline 408
	rcall _PTR8_RX
	.dbline 409
	rcall _PTR8_TREN
	.dbline 410
	rcall _Delay_1ms
	.dbline 414
L38:
	.dbline 376
	rjmp L37
X0:
	.dbline -2
	.dbline 415
; 			while(dr == 0);	//等待数据发送成功
; 			PTR8_Standby();	//TRX_CE = 0  disable TX
; 			Delay_1ms();
; 			
; 			LED(0);
; 			Delay_Nms(1000);
; 			
; 			PTR8_RX();	//Set RX mode
; 			PTR8_TREN();	// TRX_CE = 1  Enable RX
; 			Delay_1ms();
; 			
; 			
; 			
; 	}   
; }
L36:
	.dbline 0 ; func end
	ret
	.dbsym l F 1 c
	.dbsym r dr 20 c
	.dbsym r i 22 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\iccavr\无线+I2C\test1--uart\uart.c
_Recv::
	.blkb 1
	.dbsym e Recv _Recv c
_Tran::
	.blkb 1
	.dbsym e Tran _Tran c

⌨️ 快捷键说明

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