📄 hal_key.s51
字号:
XRL A,#0x1
JNZ ??HalKeyRead_2
// 368 {
// 369 /* Rev B */
// 370 if ((adc >= 90) && (adc <= 100))
MOV A,R2
CLR C
SUBB A,#0x5a
MOV A,R2
JC ??HalKeyRead_3
CLR C
SUBB A,#0x65
JNC ??HalKeyRead_4
// 371 {
// 372 ksave0 |= HAL_KEY_UP;
??HalKeyRead_5:
MOV A,R7
SETB 0xE0 /* A */.0
??HalKeyRead_6:
MOV R7,A
SJMP ??HalKeyRead_4
// 373 }
// 374 else if ((adc >= 75) && (adc <= 85))
??HalKeyRead_3:
CLR C
SUBB A,#0x4b
MOV A,R2
JC ??HalKeyRead_7
CLR C
SUBB A,#0x56
JNC ??HalKeyRead_4
// 375 {
// 376 ksave0 |= HAL_KEY_RIGHT;
??HalKeyRead_8:
MOV A,R7
SETB 0xE0 /* A */.1
SJMP ??HalKeyRead_6
// 377 }
// 378 else if ((adc >= 45) && (adc <= 55))
??HalKeyRead_7:
CLR C
SUBB A,#0x2d
JC ??HalKeyRead_9
MOV A,R2
CLR C
SUBB A,#0x38
JNC ??HalKeyRead_4
// 379 {
// 380 ksave0 |= HAL_KEY_LEFT;
??HalKeyRead_10:
MOV A,R7
SETB 0xE0 /* A */.3
SJMP ??HalKeyRead_6
// 381 }
// 382 else if (adc <= 10)
??HalKeyRead_9:
MOV A,R2
CLR C
SUBB A,#0xb
JNC ??HalKeyRead_4
// 383 {
// 384 ksave0 |= HAL_KEY_DOWN;
MOV A,R7
SETB 0xE0 /* A */.4
SJMP ??HalKeyRead_6
// 385 }
// 386 else if ((adc >= 101) && (adc <= 115))
// 387 {
// 388 }
// 389 }
// 390 else
// 391 {
// 392 /* Rev C */
// 393 if ((adc >= 90) && (adc <= 104))
??HalKeyRead_2:
MOV A,R2
CLR C
SUBB A,#0x5a
MOV A,R2
JC ??HalKeyRead_11
CLR C
SUBB A,#0x69
JNC ??HalKeyRead_4
SJMP ??HalKeyRead_5
// 394 {
// 395 ksave0 |= HAL_KEY_UP;
// 396 }
// 397 else if ((adc >= 75) && (adc <= 89))
??HalKeyRead_11:
CLR C
SUBB A,#0x4b
JNC ??HalKeyRead_8
// 398 {
// 399 ksave0 |= HAL_KEY_RIGHT;
// 400 }
// 401 else if ((adc >= 45) && (adc <= 56))
MOV A,R2
CLR C
SUBB A,#0x2d
JC ??HalKeyRead_9
MOV A,R2
CLR C
SUBB A,#0x39
JC ??HalKeyRead_10
// 402 {
// 403 ksave0 |= HAL_KEY_LEFT;
// 404 }
// 405 else if (adc <= 10)
// 406 {
// 407 ksave0 |= HAL_KEY_DOWN;
// 408 }
// 409 else if ((adc >= 105) && (adc <= 121))
// 410 {
// 411 }
// 412 }
// 413
// 414 } while (ksave0 != ksave1);
??HalKeyRead_4:
MOV A,?V0 + 0
XRL A,R7
JNZ ??HalKeyRead_1
// 415
// 416 keys |= ksave0;
// 417
// 418 #endif
// 419
// 420 #endif /* HAL_KEY */
// 421
// 422 return keys;
MOV A,R7
ORL A,R6
MOV R1,A
CFI EndBlock cfiBlock3
REQUIRE ?Subroutine2
; // Fall through to label ?Subroutine2
// 423
// 424 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
CFI Block cfiBlock4 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
MOV R7,#0x1
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock4
// 425
// 426
// 427 /**************************************************************************************************
// 428 * @fn HalKeyPoll
// 429 *
// 430 * @brief Called by hal_driver to poll the keys
// 431 *
// 432 * @param None
// 433 *
// 434 * @return None
// 435 **************************************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 436 void HalKeyPoll (void)
HalKeyPoll:
CFI Block cfiBlock5 Using cfiCommon0
CFI Function HalKeyPoll
// 437 {
FUNCALL HalKeyPoll, HalAdcRead
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
MOV A,#-0x9
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 0
// 438 #if (HAL_KEY == TRUE)
// 439
// 440 uint8 keys = 0;
MOV ?V0 + 0,#0x0
// 441
// 442 #if defined (HAL_KEY_JOYSTICK_ENABLE)
// 443 uint8 ksave0 = 0;
MOV R6,#0x0
// 444 uint8 ksave1;
// 445 uint8 adc;
// 446 #endif
// 447
// 448 /*
// 449 * If interrupts are enabled, get the status of the interrupt-driven keys from 'halSaveIntKey'
// 450 * which is updated by the key ISR. If Polling, read these keys directly.
// 451 */
// 452 #if defined (HAL_KEY_SW_6_ENABLE)
// 453 if (!(HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT)) /* Key is active low */
MOV C,0x80.1
JC ??HalKeyPoll_0
// 454 {
// 455 keys |= HAL_KEY_SW_6;
MOV ?V0 + 0,#0x20
// 456 }
// 457 #endif
// 458 #if defined (HAL_KEY_SW_5_ENABLE)
// 459 if (HAL_KEY_SW_5_PORT & HAL_KEY_SW_5_BIT) /* Key is active high */
??HalKeyPoll_0:
MOV C,0xa0.0
JNC ??HalKeyPoll_1
// 460 {
// 461 keys |= HAL_KEY_SW_5;
MOV A,?V0 + 0
SETB 0xE0 /* A */.2
MOV ?V0 + 0,A
// 462 }
// 463 #endif
// 464
// 465 #if defined (HAL_KEY_JOYSTICK_ENABLE)
// 466 /*
// 467 * The joystick control is encoded as an analog voltage. Keep on reading
// 468 * the ADC until two consecutive key decisions are the same.
// 469 */
// 470
// 471 do
// 472 {
// 473 ksave1 = ksave0; /* save previouse key reading */
??HalKeyPoll_1:
MOV A,R6
MOV R7,A
// 474
// 475 adc = HalAdcRead (HAL_KEY_JOY_CHN, HAL_ADC_RESOLUTION_8);
; Setup parameters for call to function HalAdcRead
MOV R2,#0x1
MOV R1,#0x6
MOV DPTR,#(HalAdcRead & 0xffff)
MOV A,#((HalAdcRead >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 476
// 477 if (CHVER == 0x01)
MOV DPTR,#-0x20a0
MOVX A,@DPTR
XRL A,#0x1
JNZ ??HalKeyPoll_2
// 478 {
// 479 /* Rev B */
// 480 if ((adc >= 90) && (adc <= 100))
MOV A,R2
CLR C
SUBB A,#0x5a
MOV A,R2
JC ??HalKeyPoll_3
CLR C
SUBB A,#0x65
JNC ??HalKeyPoll_4
// 481 {
// 482 ksave0 |= HAL_KEY_UP;
??HalKeyPoll_5:
MOV A,R6
SETB 0xE0 /* A */.0
??HalKeyPoll_6:
MOV R6,A
SJMP ??HalKeyPoll_4
// 483 }
// 484 else if ((adc >= 75) && (adc <= 85))
??HalKeyPoll_3:
CLR C
SUBB A,#0x4b
MOV A,R2
JC ??HalKeyPoll_7
CLR C
SUBB A,#0x56
JNC ??HalKeyPoll_4
// 485 {
// 486 ksave0 |= HAL_KEY_RIGHT;
??HalKeyPoll_8:
MOV A,R6
SETB 0xE0 /* A */.1
SJMP ??HalKeyPoll_6
// 487 }
// 488 else if ((adc >= 45) && (adc <= 55))
??HalKeyPoll_7:
CLR C
SUBB A,#0x2d
JC ??HalKeyPoll_9
MOV A,R2
CLR C
SUBB A,#0x38
JNC ??HalKeyPoll_4
// 489 {
// 490 ksave0 |= HAL_KEY_LEFT;
??HalKeyPoll_10:
MOV A,R6
SETB 0xE0 /* A */.3
SJMP ??HalKeyPoll_6
// 491 }
// 492 else if (adc <= 10)
??HalKeyPoll_9:
MOV A,R2
CLR C
SUBB A,#0xb
JNC ??HalKeyPoll_4
// 493 {
// 494 ksave0 |= HAL_KEY_DOWN;
MOV A,R6
SETB 0xE0 /* A */.4
SJMP ??HalKeyPoll_6
// 495 }
// 496 else if ((adc >= 101) && (adc <= 115))
// 497 {
// 498 }
// 499 }
// 500 else
// 501 {
// 502 /* Rev C */
// 503 if ((adc >= 90) && (adc <= 104))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -