📄 test.lst
字号:
474
475 004E 4A 12 RSkipSRC_YZ TCALL SkipSRC_YZ
476 0050 49 4A RByteAry TCALL ByteAry
477 0052 49 52 RWrd2Ary TCALL Wrd2Ary
478 0054 4C F8 RStoreWordCode TCALL StoreWordCode
479 0056 4C F2 RStoreByteCode TCALL StoreByteCode
480
481 0058 4D 04 RDspSDigit TCALL DspSDigit
482 005A 4D 07 RDsp4LDigit TCALL Dsp4LDigit
483 005C 4D 30 RDspSymbol TCALL DspSymbol
484
485 005E 4A B7 RKScanDelay TCALL KScanDelay
486
487 0060 47 E8 RCalWeightCnt TCALL CalWeightCount
488 0062 48 AB RActCurStp2Ary TCALL ActlCurStep2Ary
489 0064 48 A4 RCurStep2Ary TCALL CurStep2Ary
490 0066 48 BA RSetBnd TCALL SetBnd
491 0068 48 DA RGetAverageCnt TCALL GetAverageCnt
492 006A 48 1E RAverageSample TCALL AverageSample
493
494 006C 49 0C RNWCnt2FReg TCALL NWCnt2FReg
495 006E 49 12 RHxFReg2Dec TCALL HxFReg2Dec
496 0070 49 1B RCpy_R2FReg TCALL Cpy_R2FReg
497 0072 49 1E RCpy_F2LReg TCALL Cpy_F2LReg
498 0074 4A 52 RPutDec TCALL PutDec
499
500 0076 DD 67 RPush_SB PUSH SB
501
502 0078 00 0F RRET_HLEA TJP RETHLEA
503 007A 00 12 RRET_WXHLEA TJP RETWXHLEA
504 007C 00 16 RRET_YZWXHLEA TJP RETYZWXHLEA
505 007E 00 0C RIRET_SB TJP IRETSB
506
507 ;----------------------------------------------------------------------------
508 ;
509 0080 .origin Main2Loop
510
511 ;----------------------------------------------------------------------------
512 ; F: On/Zero Button(MaB)
513 ; I: WeightTareNow
514 ; O: WeightTareNow
515 ; N: Rising edge when release key(MaB)
516 ; When enter INT1_Int, IS0, IS1 = 1, 0
517 ;
518 0080 INT1_Int
519 0080 FE AE BITR IRQ1 ;
520 0082 FE A0 BITR IS0 ;
521 ; REF RPush_SB ;
522 ; REF RSMB_Variable ;
523 ; BTSF CalibrateOn ;
524 ; BITR CntDspNow ;
525 ;; REF RSMB_MemMapIO ;
526 ;;INT1_Int1
527 ;; BTST ONZERO_PIN
528 ;; JR INT1_Int1
529 ;; REF RSMB_Variable ;
530 ; BITS WeightTareNow ; Set flag to weight tare
531 ; REF RIRET_SB ;
532 0084 D5 IRET
533
534 ;----------------------------------------------------------------------------
535 ; F: INTB Interrupt for Basic Timer Overflow
536 ; N: Interrupt interval = 2.2886.ms
537 ; when enter into INTB_Int, IS0, IS1 = 1, 0
538 0085 INTB_Int
539 0085 FE 88 BITR IRQB ;
540 0087 FE A0 BITR IS0 ;
541
542 0089 73 REF RPush_SB ;
543 008A DD 53 SRB RegisterINTB ;
544 008C 20 REF RSMB_Variable ;
545
546 008D E2 22 BTSF CalibrateOn ; If Calibrate On, skip sleep time
547 008F 90 CC JPS INTB_Int0_2 ; & Timer counting
548
549 0091 CE 36 LD EA,BCNT_1s_M ;
550 0093 C9 01 ADS EA,#1 ;
551 0095 90 CA JPS INTB_Int0_1 ;
552 0097 CA 35 INCS BCNT_1s_H ; never skip
553 0099 C2 35 BTSF BCNT_1s_H.0 ;
554 009B 90 CA JPS INTB_Int0_1 ;
555 009D INTB_1000ms
556
557 009D D3 7F BTST HoldRd ; Check for hold reading in progress
558 009F 1C JR INTB_IntA ;
559
560 00A0 CA 3F INCS HoldTimer ; Check hold reading timeout
561 00A2 19 JR INTB_IntA ;
562 00A3 D0 7F BITR HoldRd ;
563 00A5 C0 7F BITR HoldStableChk ;
564 00A7 F1 7F BITS HoldNotAllow ; Hold is not allow unless reading change
565 00A9 BC LD A,#HoldChkTime ; Reset timer
566 00AA 89 3F LD HoldTimer,A ;
567 00AC INTB_IntA
568 00AC INTB_IntB
569 00AC E2 25 BTSF AutoOffEn ; Chk Auto-power off enabled or not
570 00AE 90 C5 JPS INTB_IntC ; if not, jump
571 00B0 C2 22 BTSF Chge4stepNow ; Chk 4 step changing
572 00B2 90 C5 JPS INTB_IntC ; if change, jump
573 00B4 C2 24 BTSF SleepNow ; Goto Sleep if timeout
574 ; remark it by hcy 03-12-2 18:03
575 ; JPS Sleep1 ;
576 00B6 C1 A8 bits PermitSendAPO
577 00B8 CA 3C INCS SleepTimL ;
578 00BA 1A JR INTB_IntC ;
579 00BB CA 3D INCS SleepTimL+1 ;
580 00BD 17 JR INTB_IntC
581 00BE CA 3E INCS SleepTimH ;
582 00C0 14 JR INTB_IntC
583 00C1 C1 24 BITS SleepNow ; SleepTim overflow, then set sleep flag
584 00C3 A0 nop
585 00C4 A0 nop
586 ; end kwan.
587 ;
588 00C5 INTB_IntC
589 00C5 B0 LD A,#0 ;
590 00C6 89 35 LD BCNT_1s_H,A ; Reload 1s timer
591 00C8 81 4B LD EA,#BCNT1s_RL&0ffh
592 00CA INTB_Int0_1
593 00CA CD 36 LD BCNT_1s_M,EA ;
594
595 00CC INTB_Int0_2
596 00CC CA 34 INCS BCNT_36ms ; BCNT Count from 0 -> 15 -> 0 -> 15 ....
597 00CE 77 REF RIRET_SB ;
598 00CF INTB_36ms
599 ;-----
600 00CF INTB_Int1_1
601 00CF CA 29 INCS BCNT_183ms ; Check 183ms interval reached?
602 00D1 90 E1 JPS INTB_Int2_1 ;
603
604 00D3 INTB_183ms
605 00D3 BB LD A,#BCNT183ms_RL ;
606 00D4 89 29 LD BCNT_183ms,A ; Reload 183ms timer
607
608 00D6 INTB_Int1_2
609 00D6 C3 25 BTST AutoZeroEn ; Chk Auto-revert to zero enabled or not
610 00D8 18 JR INTB_Int1_3 ; if not, jump
611 00D9 E3 27 BTST UdrWtNow ; Is Now UnderWeight
612 00DB 15 JR INTB_Int1_3 ;
613 00DC CA 4B INCS AutoZeroTim ;
614 00DE 12 JR INTB_Int1_3 ;
615 00DF D1 23 BITS AutoZeroNow ; Enable Reset to Zero
616
617 00E1 INTB_Int1_3
618
619 ; LD A,Tag2sec ;
620 ; REF RCPSE_A0 ; if Tag2sec <> 0,
621 ; INCS Tag2sec ; Incs Tag2sec
622 ;--------------------------
623 00E1 INTB_Int2_1
624 00E1 CA 2A INCS BCNT_500ms ; chk 512ms reached?
625 00E3 77 REF RIRET_SB ;
626
627 00E4 INTB_500ms
628 00E4 B2 LD A,#BCNT500ms_RL ; Reload 512ms Timer
629 00E5 89 2A LD BCNT_500ms,A ;
630 ;--------------------------
631 00E7 C3 22 BTST Chge4stepNow
632 00E9 17 JR INTB_Int3_1
633 00EA CA 8A INCS Chge4stepTimer
634 00EC 14 JR INTB_Int3_1
635 00ED C0 22 BITR Chge4stepNow ; Set sleep timer delay end
636 00EF E1 2B BITS ChgeSlpTmrNow
637 00F1 INTB_Int3_1
638 00F1 E3 24 BTST HoldEn ; Check for hold enable
639 00F3 1B JR INTB_Int3_2 ;
640 00F4 D2 7F BTSF HoldRd ; Check the reading is not hold
641 00F6 18 JR INTB_Int3_2 ;
642 00F7 C2 7F BTSF HoldStableChk ; whether the routine executed or not
643 00F9 15 JR INTB_Int3_2 ;
644 00FA CA 3F INCS HoldTimer ;
645 00FC 12 JR INTB_Int3_2 ;
646 00FD C1 7F BITS HoldStableChk ; chk hold stable time interval reach
647 00FF INTB_Int3_2
648 00FF CA 6E INCS Tag2sec
649 0101 12 JR INTB_Int3_3
650 0102 C1 23 BITS CreepZero ;
651
652 0104 INTB_Int3_3
653 0104 CA 79 INCS CreepTimer ; CREEPING TIMER
654 0106 77 REF RIRET_SB
655 0107 D1 24 BITS TimrFinished ;
656 0109 77 REF RIRET_SB ;
657 ;----------------------------------------------------------------------------
658 ;
659 010A Sleep
660 010A EA F1 CALLS Dly20 ; simlute the Buzzer tone delay
661 ; REF RKeyTone ;
662 010C Sleep1
663 010C FE B2 DI ;
664 010E Sleep2
665 010E 21 REF RSMB_MemMapIO ;
666
667 010F B0 LD A,#0 ;
668 0110 89 B8 LD INTA,A ; Disable Basic Timer Interrupt(INTB)
669 0112 89 BA LD INTB,A ; Disable Watch Timer
670 0114 89 BC LD INTC,A ; Disable Timer/Counter Interrupt(INTT0)
671 0116 89 BE LD INTE,A ; Disable INT0 Pin Interrupt
672 ; Disable INT1 Pin Interrupt
673 0118 89 8E LD LCON,A ; Display off
674
675
676 011A 22 REF RSMB_LCD ; Select LCD Memory Bank1
677 ; BITR POWERON_PIN ; Power Off for Chip
678
679 011B DB 4F 59 call Send_AutoOffCode
680
681
682 011E A0 NOP
683 011F 0E JR $-1 ; Dead loop until no power supply
684
685 ;----------------------------------------------------------------------------
686 ; F: Chk "Off" key press
687 ; O: SMB = Variable Bank
688 ; D: A
689 0120 ChkOffButton
690 ; remark by hcy 03-11-21 15:06
691
692 ; REF RSMB_MemMapIO ;
693 ; LD A,KEYCOL ;
694 ; REF RSMB_Variable ;
695 ; AND A,#0001b ;
696 ; DECS A ;
697 ; RET ;
698 ; JPS Sleep ; Off button
699 0120 C5 RET
700
701 ;----------------------------------------------------------------------------
702 ; F: External INT0 pin Interrupt
703 ; N: When enter INT0_Int, IS0, IS1 = 1, 0
704 0121 INT0_Int
705 0121 73 REF RPush_SB ;
706
707 ;v***** IMPORTANT TO DO FIRST *****v
708 0122 DD 52 SRB RegisterCount ;
709 0124 21 REF RSMB_MemMapIO ;
710 0125 81 70 LD EA,#01110000b ; Stop TCNT0
711 0127 CD 90 LD TMOD0,EA ;
712 0129 22 REF RSMB_LCD ;
713 012A C0 FB BITR DISCHARGE_PIN ;
714 ;^*********************************^
715
716 012C 21 REF RSMB_MemMapIO ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -