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

📄 uart.lst

📁 PTR8000无线通信模块的单片机控制程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0241) 	return SPDR;	//返回接收的字符
    007F B10F      IN	R16,0x0F
    0080 9508      RET
(0242) }
(0243) //*************************************************************************
(0244) 
(0245) //***************************PTR8000无线模块用函数*****************
(0246) 
(0247) /*	函数名:	PTR8_Standby
(0248) 	功能说明:将PTR8置为待机状态。SET TRX_CE = 0
(0249) 	参数说明:无
(0250) 	返回值:	无
(0251) 	函数作者:Haibo YU
(0252) 	版本号:	1.0
(0253) 	创建时间:2005-12-23
(0254) 	修改时间:
(0255) 	修改内容:				*/
(0256) 
(0257) void PTR8_Standby(void)
(0258) {
(0259) 	PORTC &= ~BIT(PC5);	//TRX_CE = 0
_PTR8_Standby:
    0081 98AD      CBI	0x15,5
(0260) }
    0082 9508      RET
(0261) //**************************************************************************
(0262) 
(0263) /*	函数名:	PTR8_TREN
(0264) 	功能说明:将PTR8置为工作状态。SET TRX_CE = 1
(0265) 	参数说明:无
(0266) 	返回值:	无
(0267) 	函数作者:Haibo YU
(0268) 	版本号:	1.0
(0269) 	创建时间:2005-12-23
(0270) 	修改时间:
(0271) 	修改内容:				*/
(0272) 
(0273) void PTR8_TREN(void)
(0274) {
(0275) 	PORTC |= BIT(PC5);	//TRX_CE = 1
_PTR8_TREN:
    0083 9AAD      SBI	0x15,5
(0276) }
    0084 9508      RET
(0277) //***************************************************************************
(0278) 
(0279) /*	函数名:	PTR8_TX
(0280) 	功能说明:将PTR8置为发送状态。
(0281) 	参数说明:无
(0282) 	返回值:	无
(0283) 	函数作者:Haibo YU
(0284) 	版本号:	1.0
(0285) 	创建时间:2005-12-23
(0286) 	修改时间:
(0287) 	修改内容:				*/
(0288) 
(0289) void PTR8_TX(void)
(0290) {
(0291) 	PORTC |= BIT(PC4);	//TX_EN = 1
_PTR8_TX:
    0085 9AAC      SBI	0x15,4
(0292) }
    0086 9508      RET
(0293) //***************************************************************************
(0294) 
(0295) /*	函数名:	PTR8_RX
(0296) 	功能说明:将PTR8置为接收状态。
(0297) 	参数说明:无
(0298) 	返回值:	无
(0299) 	函数作者:Haibo YU
(0300) 	版本号:	1.0
(0301) 	创建时间:2005-12-23
(0302) 	修改时间:
(0303) 	修改内容:				*/
(0304) 
(0305) void PTR8_RX(void)
(0306) {
(0307) 	PORTC &= ~BIT(PC4);	//TX_EN = 0
_PTR8_RX:
    0087 98AC      CBI	0x15,4
(0308) }
    0088 9508      RET
(0309) //*****************************************************************************
(0310) 
(0311) void Init_PTR8_CR(void)
(0312) {
(0313) 	PORTB &= ~BIT(PB2);	//SS SET LOW, Write Configuration register Start
_Init_PTR8_CR:
    0089 98C2      CBI	0x18,2
(0314) 	SPI_M_Send(WC);	//Wirte Configuration Register,Start From 0000
    008A 2700      CLR	R16
    008B DFEC      RCALL	_SPI_M_Send
(0315) 	SPI_M_Send(RC0);	//Write CH_NO [7 : 0]
    008C 91000060  LDS	R16,0x60
    008E DFE9      RCALL	_SPI_M_Send
(0316) 	SPI_M_Send(RC1);		//Write Byte 2
    008F 91000061  LDS	R16,0x61
    0091 DFE6      RCALL	_SPI_M_Send
(0317) 	SPI_M_Send(0x44);
    0092 E404      LDI	R16,0x44
    0093 DFE4      RCALL	_SPI_M_Send
(0318) 	SPI_M_Send(0x01);	//RX payload = 1 byte 
    0094 E001      LDI	R16,1
    0095 DFE2      RCALL	_SPI_M_Send
(0319) 	SPI_M_Send(0x01);	//TX payload = 1 byte
    0096 E001      LDI	R16,1
    0097 DFE0      RCALL	_SPI_M_Send
(0320) 	SPI_M_Send(Add);
    0098 91000062  LDS	R16,0x62
    009A DFDD      RCALL	_SPI_M_Send
(0321) 	SPI_M_Send(Add);
    009B 91000062  LDS	R16,0x62
    009D DFDA      RCALL	_SPI_M_Send
(0322) 	SPI_M_Send(Add);
    009E 91000062  LDS	R16,0x62
    00A0 DFD7      RCALL	_SPI_M_Send
(0323) 	SPI_M_Send(Add);
    00A1 91000062  LDS	R16,0x62
    00A3 DFD4      RCALL	_SPI_M_Send
(0324) 	SPI_M_Send(0x58);
    00A4 E508      LDI	R16,0x58
    00A5 DFD2      RCALL	_SPI_M_Send
(0325) 	PORTB |= BIT(PB2);	//SS set HIGH,Write Configuration Register Finish
    00A6 9AC2      SBI	0x18,2
(0326) 	
(0327) }
    00A7 9508      RET
(0328) //************************************************************************************
(0329) /*	函数名:	Init_Device
(0330) 	功能说明:初始化设备。LED亮一下,蜂鸣器叫一声,初始化串口
(0331) 	参数说明:无
(0332) 	返回值:	无
(0333) 	函数作者:Haibo YU
(0334) 	版本号:	1.0
(0335) 	创建时间:2005-12-23
(0336) 	修改时间:
(0337) 	修改内容:				*/
(0338) 
(0339) void Init_Device(void)
(0340) {
(0341) 	//stop errant interrupts until set up
(0342)  	CLI(); //disable all interrupts
_Init_Device:
    00A8 94F8      BCLR	7
(0343)  	
(0344) 	init_port();		//初始化各控制端口
    00A9 DF93      RCALL	_init_port
(0345) 	LED(0);	//LED全亮
    00AA 2700      CLR	R16
    00AB DFB4      RCALL	_LED
(0346) 	Uart_Init();		//串口初始化
    00AC DFB9      RCALL	_Uart_Init
(0347) 	SPI_MasterInit();//SPI Master Init
    00AD DFC7      RCALL	_SPI_MasterInit
(0348) 	MCUCR = 0x00;
    00AE 2422      CLR	R2
    00AF BE25      OUT	0x35,R2
(0349)  	GICR  = 0x00;
    00B0 BE2B      OUT	0x3B,R2
(0350)  	TIMSK = 0x00; //timer interrupt sources
    00B1 BE29      OUT	0x39,R2
(0351)  	
(0352) 	SEI(); //re-enable interrupts
    00B2 9478      BSET	7
(0353) 	LED(1);	//LED全灭
    00B3 E001      LDI	R16,1
(0354) 	//all peripherals are now initialised
(0355) }
    00B4 CFAB      RJMP	_LED
(0356) 
(0357) //**************************************************************************
(0358) 
(0359) 
(0360) //****************************主程序**********************************
(0361) /*无线模块发送程序,无线模块发送的字符为通过串口接收的字符,规定为0和1,而且每次数据发送
(0362) 成功LED都会闪一次*/
(0363) //********************发送程序**********************
(0364) 
(0365) void main(void)
(0366) {
(0367) 	unsigned char i,dr,F;
(0368) 	Init_Device();	//Init All Device
_main:
  F                    --> Y+1
  dr                   --> R20
  i                    --> R22
    00B5 DFF2      RCALL	_Init_Device
(0369) 
(0370) 	Init_PTR8_CR();	//Set Configuration register
    00B6 DFD2      RCALL	_Init_PTR8_CR
(0371) 	Delay_1ms();
    00B7 DF91      RCALL	_Delay_1ms
(0372) 
(0373) 	PTR8_RX();	//Set RX mode
    00B8 DFCE      RCALL	_PTR8_RX
(0374) 	PTR8_TREN();	// TRX_CE = 1  Enable RX
    00B9 DFC9      RCALL	_PTR8_TREN
(0375) 	Delay_1ms();
    00BA DF8E      RCALL	_Delay_1ms
    00BB C02B      RJMP	0x00E7
(0376) 	while(1)
(0377) 	{
(0378) 			LED(1);
    00BC E001      LDI	R16,1
    00BD DFA2      RCALL	_LED
(0379) 			Delay_Nms(1000);
    00BE EE08      LDI	R16,0xE8
    00BF E013      LDI	R17,3
    00C0 DF92      RCALL	_Delay_Nms
(0380) 			
(0381) 			PTR8_TX();		//set TX mode
    00C1 DFC3      RCALL	_PTR8_TX
(0382) 			Delay_1ms();
    00C2 DF86      RCALL	_Delay_1ms
(0383) 			PORTB &= ~BIT(PB2);	//SS = 0
    00C3 98C2      CBI	0x18,2
(0384) 			SPI_M_Send(WTP);		//Write TX payload
    00C4 E200      LDI	R16,0x20
    00C5 DFB2      RCALL	_SPI_M_Send
(0385) 			
(0386) 			SPI_M_Send(Recv);		// Data = Recv[]
    00C6 91000063  LDS	R16,_Recv
    00C8 DFAF      RCALL	_SPI_M_Send
(0387) 			
(0388) 			PORTB |= BIT(PB2);		//ss = 1		
    00C9 9AC2      SBI	0x18,2
(0389) 			Delay_1ms();
    00CA DF7E      RCALL	_Delay_1ms
(0390) 			PORTB &= ~BIT(PB2);		//SS = 0
    00CB 98C2      CBI	0x18,2
(0391) 			SPI_M_Send(WTA);		//write TX_Address
    00CC E202      LDI	R16,0x22
    00CD DFAA      RCALL	_SPI_M_Send
(0392) 			for(i = 0 ; i < 4 ; i ++)
    00CE 2766      CLR	R22
    00CF C004      RJMP	0x00D4
(0393) 			{
(0394) 			 	  SPI_M_Send(Add);	//TX_Address = Add
    00D0 91000062  LDS	R16,0x62
    00D2 DFA5      RCALL	_SPI_M_Send
    00D3 9563      INC	R22
    00D4 3064      CPI	R22,4
    00D5 F3D0      BCS	0x00D0
(0395) 			}
(0396) 			PORTB |= BIT(PB2);		//ss = 1
    00D6 9AC2      SBI	0x18,2
(0397) 			Delay_1ms();
    00D7 DF71      RCALL	_Delay_1ms
(0398) 			PTR8_TREN();	//TRX_CE = 1  Enable TX
    00D8 DFAA      RCALL	_PTR8_TREN
(0399) 			do
(0400) 			  	dr = (PINC & 0x04);
    00D9 B343      IN	R20,0x13
    00DA 7044      ANDI	R20,4
(0401) 			while(dr == 0);	//等待数据发送成功
    00DB 2344      TST	R20
    00DC F3E1      BEQ	0x00D9
(0402) 			PTR8_Standby();	//TRX_CE = 0  disable TX
    00DD DFA3      RCALL	_PTR8_Standby
(0403) 			Delay_1ms();
    00DE DF6A      RCALL	_Delay_1ms
(0404) 			
(0405) 			LED(0);
    00DF 2700      CLR	R16
    00E0 DF7F      RCALL	_LED
(0406) 			Delay_Nms(1000);
    00E1 EE08      LDI	R16,0xE8
    00E2 E013      LDI	R17,3
    00E3 DF6F      RCALL	_Delay_Nms
(0407) 			
(0408) 			PTR8_RX();	//Set RX mode
    00E4 DFA2      RCALL	_PTR8_RX
(0409) 			PTR8_TREN();	// TRX_CE = 1  Enable RX
    00E5 DF9D      RCALL	_PTR8_TREN
(0410) 			Delay_1ms();
    00E6 DF62      RCALL	_Delay_1ms
    00E7 CFD4      RJMP	0x00BC
(0411) 			
(0412) 			
(0413) 			
(0414) 	}   
(0415) }
FILE: <library>
    00E8 9508      RET
pop_gset2:
    00E9 E0E2      LDI	R30,2
    00EA C004      RJMP	pop
push_gset1:
    00EB 935A      ST	R21,-Y
    00EC 934A      ST	R20,-Y
    00ED 9508      RET
pop_gset1:
    00EE E0E1      LDI	R30,1
pop:
    00EF 9149      LD	R20,Y+
    00F0 9159      LD	R21,Y+
    00F1 FDE0      SBRC	R30,0
    00F2 9508      RET
    00F3 9169      LD	R22,Y+
    00F4 9179      LD	R23,Y+
    00F5 FDE1      SBRC	R30,1
    00F6 9508      RET
    00F7 90A9      LD	R10,Y+
    00F8 90B9      LD	R11,Y+
    00F9 FDE2      SBRC	R30,2
    00FA 9508      RET
    00FB 90C9      LD	R12,Y+
    00FC 90D9      LD	R13,Y+
    00FD FDE3      SBRC	R30,3
    00FE 9508      RET
    00FF 90E9      LD	R14,Y+
    0100 90F9      LD	R15,Y+
    0101 9508      RET
push_gset2:
    0102 937A      ST	R23,-Y
    0103 936A      ST	R22,-Y
    0104 CFE6      RJMP	push_gset1
push_lset:
    0105 93FA      ST	R31,-Y
    0106 93EA      ST	R30,-Y
    0107 93BA      ST	R27,-Y
    0108 93AA      ST	R26,-Y
    0109 939A      ST	R25,-Y
    010A 938A      ST	R24,-Y
    010B 933A      ST	R19,-Y
    010C 932A      ST	R18,-Y
    010D 931A      ST	R17,-Y
    010E 930A      ST	R16,-Y
    010F 929A      ST	R9,-Y
    0110 928A      ST	R8,-Y
    0111 927A      ST	R7,-Y
    0112 926A      ST	R6,-Y
    0113 925A      ST	R5,-Y
    0114 924A      ST	R4,-Y
    0115 923A      ST	R3,-Y
    0116 922A      ST	R2,-Y
    0117 921A      ST	R1,-Y
    0118 920A      ST	R0,-Y
    0119 B60F      IN	R0,0x3F
    011A 920A      ST	R0,-Y
    011B 9508      RET
pop_lset:
    011C 9009      LD	R0,Y+
    011D BE0F      OUT	0x3F,R0
    011E 9009      LD	R0,Y+
    011F 9019      LD	R1,Y+
    0120 9029      LD	R2,Y+
    0121 9039      LD	R3,Y+
    0122 9049      LD	R4,Y+
    0123 9059      LD	R5,Y+
    0124 9069      LD	R6,Y+
    0125 9079      LD	R7,Y+
    0126 9089      LD	R8,Y+
    0127 9099      LD	R9,Y+
    0128 9109      LD	R16,Y+
    0129 9119      LD	R17,Y+
    012A 9129      LD	R18,Y+
    012B 9139      LD	R19,Y+
    012C 9189      LD	R24,Y+
    012D 9199      LD	R25,Y+
    012E 91A9      LD	R26,Y+
    012F 91B9      LD	R27,Y+
    0130 91E9      LD	R30,Y+
    0131 91F9      LD	R31,Y+
    0132 9508      RET

⌨️ 快捷键说明

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