📄 wxjm.ls1
字号:
0005 FB 225 MOV R3,A
0006 FA 226 MOV R2,A
0007 227 ?C0005:
0007 C3 228 CLR C
0008 EB 229 MOV A,R3
0009 9D 230 SUBB A,R5
000A EA 231 MOV A,R2
000B 9C 232 SUBB A,R4
000C 500A 233 JNC ?C0008
234 ; {
235 ; SOURCE LINE # 19
236 ; delay_ms();
237 ; SOURCE LINE # 20
000E 120000 F 238 LCALL delay_ms
239 ; }
240 ; SOURCE LINE # 21
0011 0B 241 INC R3
0012 BB0001 242 CJNE R3,#00H,?C0037
0015 0A 243 INC R2
0016 244 ?C0037:
0016 80EF 245 SJMP ?C0005
246 ; }
247 ; SOURCE LINE # 22
0018 248 ?C0008:
0018 22 249 RET
250 ; END OF _delay_nms
251
252 ;
253 ; unsigned long decode(void) //无线解码
254
---- 255 RSEG ?PR?decode?WXJM
0000 256 decode:
A51 MACRO ASSEMBLER WXJM 12/02/2008 21:16:16 PAGE 5
257 USING 0
258 ; SOURCE LINE # 24
259 ; {
260 ; SOURCE LINE # 25
261 ; unsigned long DATA; //记录数据
262 ; unsigned char count,i; //暂时计数
263 ;
264 ; /*一共接收三字节*/
265 ;
266 ; DATA=0; //
267 ; SOURCE LINE # 31
0000 E4 268 CLR A
0001 F500 F 269 MOV DATA?243+03H,A
0003 F500 F 270 MOV DATA?243+02H,A
0005 F500 F 271 MOV DATA?243+01H,A
0007 F500 F 272 MOV DATA?243,A
273 ; for (count=0;count<24;count++) //开始收集
274 ; SOURCE LINE # 32
0009 F500 F 275 MOV count?244,A
000B 276 ?C0009:
277 ; {
278 ; SOURCE LINE # 33
279 ;
280 ; /*测量高电平宽度*/
281 ;
282 ; i=0; //宽度计数
283 ; SOURCE LINE # 37
000B E4 284 CLR A
000C F500 F 285 MOV i?245,A
000E 286 ?C0012:
287 ; while (RFBIT) //高位计数
288 ; SOURCE LINE # 38
000E 30B20D 289 JNB RFBIT,?C0013
290 ; {
291 ; SOURCE LINE # 39
292 ; #pragma asm
293 ; nop;
0011 00 294 nop;
295 ; #pragma endasm
296 ;
297 ;
298 ; i++; //计数增加
299 ; SOURCE LINE # 45
0012 0500 F 300 INC i?245
301 ;
302 ; if (i>192) goto end; //限时解码
303 ; SOURCE LINE # 47
0014 E500 F 304 MOV A,i?245
0016 D3 305 SETB C
0017 94C0 306 SUBB A,#0C0H
0019 40F3 307 JC ?C0012
001B 020000 F 308 LJMP ?decode?end
309 ; }
310 ; SOURCE LINE # 48
001E 311 ?C0013:
312 ;
313 ; /*分辨出电平高低*/
314 ;
315 ; DATA*=2; //数据左移
316 ; SOURCE LINE # 52
001E AF00 F 317 MOV R7,DATA?243+03H
0020 AE00 F 318 MOV R6,DATA?243+02H
0022 AD00 F 319 MOV R5,DATA?243+01H
0024 AC00 F 320 MOV R4,DATA?243
0026 E4 321 CLR A
0027 7B02 322 MOV R3,#02H
A51 MACRO ASSEMBLER WXJM 12/02/2008 21:16:16 PAGE 6
0029 FA 323 MOV R2,A
002A F9 324 MOV R1,A
002B F8 325 MOV R0,A
002C 120000 F 326 LCALL ?C?LMUL
002F 8F00 F 327 MOV DATA?243+03H,R7
0031 8E00 F 328 MOV DATA?243+02H,R6
0033 8D00 F 329 MOV DATA?243+01H,R5
0035 8C00 F 330 MOV DATA?243,R4
331 ;
332 ; if (i<64) //分辨高低
333 ; SOURCE LINE # 54
0037 E500 F 334 MOV A,i?245
0039 C3 335 CLR C
003A 9440 336 SUBB A,#040H
003C 5022 337 JNC ?C0016
338 ; {
339 ; SOURCE LINE # 55
340 ; if (!((56>i)&(i>24))) goto end; //电平合法
341 ; SOURCE LINE # 56
003E E500 F 342 MOV A,i?245
0040 9418 343 SUBB A,#018H
0042 4004 344 JC ?C0018
0044 7F01 345 MOV R7,#01H
0046 8002 346 SJMP ?C0019
0048 347 ?C0018:
0048 7F00 348 MOV R7,#00H
004A 349 ?C0019:
004A 7438 350 MOV A,#038H
004C D3 351 SETB C
004D 9500 F 352 SUBB A,i?245
004F 4004 353 JC ?C0020
0051 7E01 354 MOV R6,#01H
0053 8002 355 SJMP ?C0021
0055 356 ?C0020:
0055 7E00 357 MOV R6,#00H
0057 358 ?C0021:
0057 EE 359 MOV A,R6
0058 5F 360 ANL A,R7
0059 6062 361 JZ ?decode?end
005B 362 ?C0017:
363 ; DATA+=0; //记低电平
364 ; SOURCE LINE # 57
005B E4 365 CLR A
005C 2500 F 366 ADD A,DATA?243+03H
367 ; }
368 ; SOURCE LINE # 58
005E 8022 369 SJMP ?C0038
0060 370 ?C0016:
371 ;
372 ; else
373 ; {
374 ; SOURCE LINE # 61
375 ; if (!((168>i)&(i>72))) goto end; //电平合法
376 ; SOURCE LINE # 62
0060 E500 F 377 MOV A,i?245
0062 D3 378 SETB C
0063 9448 379 SUBB A,#048H
0065 4004 380 JC ?C0024
0067 7F01 381 MOV R7,#01H
0069 8002 382 SJMP ?C0025
006B 383 ?C0024:
006B 7F00 384 MOV R7,#00H
006D 385 ?C0025:
006D 74A8 386 MOV A,#0A8H
A51 MACRO ASSEMBLER WXJM 12/02/2008 21:16:16 PAGE 7
006F D3 387 SETB C
0070 9500 F 388 SUBB A,i?245
0072 4004 389 JC ?C0026
0074 7E01 390 MOV R6,#01H
0076 8002 391 SJMP ?C0027
0078 392 ?C0026:
0078 7E00 393 MOV R6,#00H
007A 394 ?C0027:
007A EE 395 MOV A,R6
007B 5F 396 ANL A,R7
007C 603F 397 JZ ?decode?end
007E 398 ?C0023:
399 ; DATA+=1; //记高电平
400 ; SOURCE LINE # 63
007E E500 F 401 MOV A,DATA?243+03H
0080 2401 402 ADD A,#01H
0082 403 ?C0038:
0082 F500 F 404 MOV DATA?243+03H,A
0084 E4 405 CLR A
0085 3500 F 406 ADDC A,DATA?243+02H
0087 F500 F 407 MOV DATA?243+02H,A
0089 E4 408 CLR A
008A 3500 F 409 ADDC A,DATA?243+01H
008C F500 F 410 MOV DATA?243+01H,A
008E E4 411 CLR A
008F 3500 F 412 ADDC A,DATA?243
0091 F500 F 413 MOV DATA?243,A
414 ; }
415 ; SOURCE LINE # 64
0093 416 ?C0028:
417 ;
418 ; /*测量低电平宽度*/
419 ;
420 ; while (!(RFBIT)) //低位计数
421 ; SOURCE LINE # 68
0093 20B20C 422 JB RFBIT,?C0029
423 ; {
424 ; SOURCE LINE # 69
425 ; #pragma asm
426 ; nop;
0096 00 427 nop;
428 ; #pragma endasm
429 ;
430 ;
431 ; i++; //计数增加
432 ; SOURCE LINE # 75
0097 0500 F 433 INC i?245
434 ;
435 ; if (i>224) goto end; //限时解码
436 ; SOURCE LINE # 77
0099 E500 F 437 MOV A,i?245
009B D3 438 SETB C
009C 94E0 439 SUBB A,#0E0H
009E 40F3 440 JC ?C0028
00A0 801B 441 SJMP ?decode?end
442 ; }
443 ; SOURCE LINE # 78
00A2 444 ?C0029:
445 ;
446 ; /*低电平是否过窄*/
447 ;
448 ; if (i<96) goto end; //对比宽度
449 ; SOURCE LINE # 82
00A2 E500 F 450 MOV A,i?245
00A4 C3 451 CLR C
A51 MACRO ASSEMBLER WXJM 12/02/2008 21:16:16 PAGE 8
00A5 9460 452 SUBB A,#060H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -