📄 uart.lst
字号:
(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 + -