📄 wllocate.lst
字号:
138
139 #if defined(IAMTAG) //设置发射功率,标签与节点的功率设置不同
140 TxPower =TAG_TXPOWER;
\ 000019 75..07 MOV ?V0 + 4,#0x7
141 #else
142 TxPower =SENSOR_TXPOWER;
143 #endif
144
145 ConsolePutROMString("设置发射功率(min:0~max:7):");
\ 00001C ; Setup parameters for call to function conPrintROMString_func
\ 00001C 7A.. MOV R2,#(??xxxxromstr_5 & 0xff)
\ 00001E 7B.. MOV R3,#((??xxxxromstr_5 >> 8) & 0xff)
\ 000020 12.... LCALL conPrintROMString_func
146 ConsolePutInitData(0,TxPower);
\ 000023 ; Setup parameters for call to function ConsolePutInitData
\ 000023 E5.. MOV A,?V0 + 4
\ 000025 F5.. MOV ?V0 + 0,A
\ 000027 AC.. MOV R4,?V0 + 0
\ 000029 7D00 MOV R5,#0x0
\ 00002B 7A00 MOV R2,#0x0
\ 00002D 7B00 MOV R3,#0x0
\ 00002F 12.... LCALL ConsolePutInitData
147
148 PHYSetTxPower(TxPower);//设置发射功率//0~7;0-min ; 7-max
\ 000032 ; Setup parameters for call to function halSetTxPower
\ 000032 A9.. MOV R1,?V0 + 4
\ 000034 12.... LCALL halSetTxPower
149
150 ThisNode.NODEID[0] = macInfo.longAddr.v[0]; //节点ID号
\ 000037 90.... MOV DPTR,#(macInfo + 1)
\ 00003A E0 MOVX A,@DPTR
\ 00003B 90.... MOV DPTR,#ThisNode
\ 00003E F0 MOVX @DPTR,A
151 ThisNode.NODEID[1] = macInfo.longAddr.v[1];
\ 00003F 90.... MOV DPTR,#(macInfo + 2)
\ 000042 E0 MOVX A,@DPTR
\ 000043 90.... MOV DPTR,#(ThisNode + 1)
\ 000046 F0 MOVX @DPTR,A
152
153 srand(ThisNode.NODEID[0]*256+ThisNode.NODEID[1]);//
\ 000047 ; Setup parameters for call to function srand
\ 000047 90.... MOV DPTR,#ThisNode
\ 00004A E0 MOVX A,@DPTR
\ 00004B F8 MOV R0,A
\ 00004C 7900 MOV R1,#0x0
\ 00004E E8 MOV A,R0
\ 00004F 75F000 MOV B,#0x0
\ 000052 A4 MUL AB
\ 000053 C8 XCH A,R0
\ 000054 AAF0 MOV R2,B
\ 000056 75F001 MOV B,#0x1
\ 000059 A4 MUL AB
\ 00005A 2A ADD A,R2
\ 00005B FA MOV R2,A
\ 00005C 75F000 MOV B,#0x0
\ 00005F E9 MOV A,R1
\ 000060 A4 MUL AB
\ 000061 2A ADD A,R2
\ 000062 F9 MOV R1,A
\ 000063 90.... MOV DPTR,#(ThisNode + 1)
\ 000066 E0 MOVX A,@DPTR
\ 000067 7B00 MOV R3,#0x0
\ 000069 28 ADD A,R0
\ 00006A FA MOV R2,A
\ 00006B EB MOV A,R3
\ 00006C 39 ADDC A,R1
\ 00006D FB MOV R3,A
\ 00006E 12.... LCALL srand
154
155 ConsolePutROMString("本节点ID号:");
\ 000071 ; Setup parameters for call to function conPrintROMString_func
\ 000071 7A.. MOV R2,#(??xxxxromstr_6 & 0xff)
\ 000073 7B.. MOV R3,#((??xxxxromstr_6 >> 8) & 0xff)
\ 000075 12.... LCALL conPrintROMString_func
156 ConsolePutInitData(ThisNode.NODEID[0], ThisNode.NODEID[1]);
\ 000078 ; Setup parameters for call to function ConsolePutInitData
\ 000078 90.... MOV DPTR,#(ThisNode + 1)
\ 00007B E0 MOVX A,@DPTR
\ 00007C F5.. MOV ?V0 + 0,A
\ 00007E AC.. MOV R4,?V0 + 0
\ 000080 7D00 MOV R5,#0x0
\ 000082 90.... MOV DPTR,#ThisNode
\ 000085 E0 MOVX A,@DPTR
\ 000086 F5.. MOV ?V0 + 0,A
\ 000088 AA.. MOV R2,?V0 + 0
\ 00008A 7B00 MOV R3,#0x0
\ 00008C 12.... LCALL ConsolePutInitData
157 ConsolePutROMString("标签启动...\r\n");
\ 00008F ; Setup parameters for call to function conPrintROMString_func
\ 00008F 7A.. MOV R2,#(??xxxxromstr_7 & 0xff)
\ 000091 7B.. MOV R3,#((??xxxxromstr_7 >> 8) & 0xff)
\ 000093 12.... LCALL conPrintROMString_func
158 CAPTAINLastSleepTime=TickGet();
\ 000096 ; Setup parameters for call to function halGetMACTimer
\ 000096 12.... LCALL halGetMACTimer
\ 000099 8A.. MOV ?V0 + 0,R2
\ 00009B 8B.. MOV ?V0 + 1,R3
\ 00009D 8C.. MOV ?V0 + 2,R4
\ 00009F 8D.. MOV ?V0 + 3,R5
\ 0000A1 90.... MOV DPTR,#CAPTAINLastSleepTime
\ 0000A4 E5.. MOV A,?V0 + 0
\ 0000A6 F0 MOVX @DPTR,A
\ 0000A7 A3 INC DPTR
\ 0000A8 E5.. MOV A,?V0 + 1
\ 0000AA F0 MOVX @DPTR,A
\ 0000AB A3 INC DPTR
\ 0000AC E5.. MOV A,?V0 + 2
\ 0000AE F0 MOVX @DPTR,A
\ 0000AF A3 INC DPTR
\ 0000B0 E5.. MOV A,?V0 + 3
\ 0000B2 F0 MOVX @DPTR,A
159 SENSORLastReportTime=0;
\ 0000B3 90.... MOV DPTR,#__Constant_0
\ 0000B6 78.. MOV R0,#?V0 + 0
\ 0000B8 12.... LCALL ?L_MOV_X
\ 0000BB 90.... MOV DPTR,#SENSORLastReportTime
\ 0000BE E5.. MOV A,?V0 + 0
\ 0000C0 F0 MOVX @DPTR,A
\ 0000C1 A3 INC DPTR
\ 0000C2 E5.. MOV A,?V0 + 1
\ 0000C4 F0 MOVX @DPTR,A
\ 0000C5 A3 INC DPTR
\ 0000C6 E5.. MOV A,?V0 + 2
\ 0000C8 F0 MOVX @DPTR,A
\ 0000C9 A3 INC DPTR
\ 0000CA E5.. MOV A,?V0 + 3
\ 0000CC F0 MOVX @DPTR,A
160
161
162 ConsolePutROMString("开始启动\r\n");
\ 0000CD ; Setup parameters for call to function conPrintROMString_func
\ 0000CD 7A.. MOV R2,#(??xxxxromstr_8 & 0xff)
\ 0000CF 7B.. MOV R3,#((??xxxxromstr_8 >> 8) & 0xff)
\ 0000D1 12.... LCALL conPrintROMString_func
163
164 rst=(SLEEP>>0x03)&0x03;
\ 0000D4 E5BE MOV A,0xbe
\ 0000D6 13 RRC A
\ 0000D7 13 RRC A
\ 0000D8 13 RRC A
\ 0000D9 541F ANL A,#0x1f
\ 0000DB 5403 ANL A,#0x3
\ 0000DD F5.. MOV ?V0 + 5,A
165
166 #if defined(IAMTAG)
167
168 if(rst==0x02)//看门狗复位
\ 0000DF 7402 MOV A,#0x2
\ 0000E1 65.. XRL A,?V0 + 5
\ 0000E3 7012 JNZ ??MainLoop_0
169 { ConsolePutROMString("watch dog reset\r\n");
\ 0000E5 ; Setup parameters for call to function conPrintROMString_func
\ 0000E5 7A.. MOV R2,#(??xxxxromstr_9 & 0xff)
\ 0000E7 7B.. MOV R3,#((??xxxxromstr_9 >> 8) & 0xff)
\ 0000E9 12.... LCALL conPrintROMString_func
170 WirelesDebugOut(DEBUG_WATCHDOG_RESET);
\ 0000EC ; Setup parameters for call to function WirelesDebugOut
\ 0000EC 7901 MOV R1,#0x1
\ 0000EE 12.... LCALL WirelesDebugOut
171 WatchDogReset=0;
\ 0000F1 7400 MOV A,#0x0
\ 0000F3 90.... MOV DPTR,#WatchDogReset
\ 0000F6 F0 MOVX @DPTR,A
172 }
173 if(rst==0x00)//看门狗复位
\ ??MainLoop_0:
\ 0000F7 E5.. MOV A,?V0 + 5
\ 0000F9 700D JNZ ??MainLoop_1
174 { ConsolePutROMString("Power-on reset\r\n");
\ 0000FB ; Setup parameters for call to function conPrintROMString_func
\ 0000FB 7A.. MOV R2,#(??xxxxromstr_10 & 0xff)
\ 0000FD 7B.. MOV R3,#((??xxxxromstr_10 >> 8) & 0xff)
\ 0000FF 12.... LCALL conPrintROMString_func
175
176 WatchDogReset=0;
\ 000102 7400 MOV A,#0x0
\ 000104 90.... MOV DPTR,#WatchDogReset
\ 000107 F0 MOVX @DPTR,A
177 }
178 if(rst==0x01)//看门狗复位
\ ??MainLoop_1:
\ 000108 7401 MOV A,#0x1
\ 00010A 65.. XRL A,?V0 + 5
\ 00010C 700D JNZ ??MainLoop_2
179 { ConsolePutROMString("External reset\r\n");
\ 00010E ; Setup parameters for call to function conPrintROMString_func
\ 00010E 7A.. MOV R2,#(??xxxxromstr_11 & 0xff)
\ 000110 7B.. MOV R3,#((??xxxxromstr_11 >> 8) & 0xff)
\ 000112 12.... LCALL conPrintROMString_func
180
181 WatchDogReset=0;
\ 000115 7400 MOV A,#0x0
\ 000117 90.... MOV DPTR,#WatchDogReset
\ 00011A F0 MOVX @DPTR,A
182 }
183
184 #endif
185
186 //WDT_SET_TIMEOUT_PERIOD(M_SEC_250); //设置看门狗时间值
187 //WDT_ENABLE(); //使能看门狗
188
189
190 ConsolePutROMString("进入主程序...\r\n");
\ ??MainLoop_2:
\ 00011B ; Setup parameters for call to function conPrintROMString_func
\ 00011B 7A.. MOV R2,#(??xxxxromstr_12 & 0xff)
\ 00011D 7B.. MOV R3,#((??xxxxromstr_12 >> 8) & 0xff)
\ 00011F 12.... LCALL conPrintROMString_func
191 mainLoop=1;
\ 000122 7401 MOV A,#0x1
\ 000124 90.... MOV DPTR,#mainLoop
\ 000127 F0 MOVX @DPTR,A
192 while (1)
193 {
194
195
196 //WDT_RESET(); //看门狗喂狗
197 //SleepSomeTime(100); //休眠
198 macFSM(); //mac层通讯处理
\ ??MainLoop_3:
\ 000128 ; Setup parameters for call to function macFSM
\ 000128 12.... LCALL macFSM
199
200
201 if(submacCurrentFrame.sub_type.Val!=0xff) //若收到数据
\ 00012B 90.... MOV DPTR,#submacCurrentFrame
\ 00012E E0 MOVX A,@DPTR
\ 00012F 64FF XRL A,#0xff
\ 000131 6005 JZ ??MainLoop_4
202 {
203 P0_1=~P0_1; //改变绿灯状态
\ 000133 A281 MOV C,0x80.1
\ 000135 B3 CPL C
\ 000136 9281 MOV 0x80.1,C
204 }
205
206
207 if(xyz==0) //定时时间间隔到
\ ??MainLoop_4:
\ 000138 7400 MOV A,#0x0
\ 00013A 6E XRL A,R6
\ 00013B 7003 JNZ ??MainLoop_5
\ 00013D 7400 MOV A,#0x0
\ 00013F 6F XRL A,R7
\ ??MainLoop_5:
\ 000140 700A JNZ ??MainLoop_6
208 {
209 P0_0=~P0_0; //改变红灯状态
\ 000142 A280 MOV C,0x80.0
\ 000144 B3 CPL C
\ 000145 9280 MOV 0x80.0,C
210 WirelessSendData(MSG_TAG_ISANYCAPTAINHERE); //无线广播发送数据
\ 000147 ; Setup parameters for call to function WirelessSendData
\ 000147 7920 MOV R1,#0x20
\ 000149 12.... LCALL WirelessSendData
211
212 }
213 xyz++;
\ ??MainLoop_6:
\ 00014C EE MOV A,R6
\ 00014D 2401 ADD A,#0x1
\ 00014F FE MOV R6,A
\ 000150 EF MOV A,R7
\ 000151 3400 ADDC A,#0x0
\ 000153 FF MOV R7,A
214 if(xyz>8000)xyz=0; //记时
\ 000154 C3 CLR C
\ 000155 EE MOV A,R6
\ 000156 9441 SUBB A,#0x41
\ 000158 EF MOV A,R7
\ 000159 941F SUBB A,#0x1f
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -