?? 9821h621.lst
字號(hào):
0651 017C 4008 MOVLW 08H
0652 017D 22C9 MOVWF R_DispMode ;1->R_DispMode.3 顯示提示信息
0653 017E A4A3 GOTO S_Display ;去顯示" Lo "
0654 ;------------------------------------------------------------------------------
0655 ;下面計(jì)算出重量值,并根據(jù)公/英制要求送顯示緩沖區(qū)
0656 L_CalcHeft: ;計(jì)算并顯示重量值
0657 017F F885 BTFSS R_PubFlag0,4
0658 0180 A261 GOTO L_CalcHeftRet ;[R_PubFlag0].4=0(無新的有效內(nèi)碼) 轉(zhuǎn),返回
0659 0181 4080 MOVLW 80H
0660 0182 2ACF ANDWF R_DispFlag,1 ;0->R_DispFlag.6:0
0661 0183 E886 BTFSC R_PubFlag1,4
0662 0184 A26D GOTO L_DispOverErr ;[R_PubFlag1].4=1(超載) 轉(zhuǎn),顯示超載錯(cuò)誤
0663 L_CalcHeft_1:
0664 0185 209E MOVFW R_ZeroCodeL ;\
0665 0186 228B MOVWF R_PubReg4 ; | 當(dāng)前零點(diǎn)內(nèi)碼[R_ZeroCodeH:R_ZeroCodeL]
0666 0187 209F MOVFW R_ZeroCodeH ; | ->R_PubReg5:R_PubReg4
0667 0188 228C MOVWF R_PubReg5 ;/
0668 0189 832A CALL S_CalcRelWeight ;計(jì)算[R_PubReg5:R_PubReg4]中的內(nèi)碼相對(duì)于標(biāo)定零點(diǎn)的重量
0669 ; ->R_PubReg3:R_PubReg0,[R_PubFlag1].3=1為負(fù)數(shù)
0670 018A 2087 MOVFW R_PubReg0 ;\
0671 018B 22A6 MOVWF R_TmpPubReg0 ; \
0672 018C 2088 MOVFW R_PubReg1 ; |
0673 018D 22A7 MOVWF R_TmpPubReg1 ; | [R_PubReg3:R_PubReg0]
0674 018E 2089 MOVFW R_PubReg2 ; | ->R_TmpPubReg3:R_TmpPubReg0 暫存
0675 018F 22A8 MOVWF R_TmpPubReg2 ; |
0676 0190 208A MOVFW R_PubReg3 ; /
0677 0191 22A9 MOVWF R_TmpPubReg3 ;/
0678 0192 CC86 BCF R_PubFlag1,6 ;0->R_PubFlag1.6
0679 0193 E686 BTFSC R_PubFlag1,3
0680 0194 DC86 BSF R_PubFlag1,6 ;[R_PubFlag1].3=1,1->R_PubFlag1.6
0681 L_CalcHeft_11:
0682 0195 209A MOVFW R_LastAverageL ;\
0683 0196 228B MOVWF R_PubReg4 ; | [R_LastAverageH:R_LastAverageL] (當(dāng)前平均內(nèi)碼)
0684 0197 209B MOVFW R_LastAverageH ; | ->R_PubReg5:R_PubReg4
0685 0198 228C MOVWF R_PubReg5 ;/
0686 0199 832A CALL S_CalcRelWeight ;計(jì)算[R_PubReg5:R_PubReg4]中的內(nèi)碼相對(duì)于標(biāo)定零點(diǎn)的重量
0687 ; ->R_PubReg3:R_PubReg0,[R_PubFlag1].3=1為負(fù)數(shù)
0688 019A CACF BCF R_DispFlag,5 ;0->R_DispFlag.5 負(fù)號(hào)顯示
0689 019B F686 BTFSS R_PubFlag1,3
0690 019C A1BF GOTO L_CalcHeft_14 ;[R_PubFlag1].3=0 轉(zhuǎn)
0691 019D FC86 BTFSS R_PubFlag1,6 ;[R_PubFlag1].3=1;
0692 019E A1C1 GOTO L_CalcHeft_15 ;[R_PubFlag1].6=0 轉(zhuǎn)
0693 L_CalcHeft_12: ;[R_PubFlag1].3=1,[R_PubFlag1].6=1 //[R_PubFlag1].3=0,[R_PubFlag1].6=0
0694 019F 20A6 MOVFW R_TmpPubReg0 ;\
0695 01A0 1A87 SUBWF R_PubReg0,1 ; \
0696 01A1 20A7 MOVFW R_TmpPubReg1 ; |
0697 01A2 3A88 SUBWFC R_PubReg1,1 ; | [R_PubReg3:R_PubReg0]-[R_TmpPubReg3:R_TmpPubReg0]
0698 01A3 20A8 MOVFW R_TmpPubReg2 ; | ->R_PubReg3:R_PubReg0
0699 01A4 3A89 SUBWFC R_PubReg2,1 ; |
0700 01A5 20A9 MOVFW R_TmpPubReg3 ; /
0701 01A6 3A8A SUBWFC R_PubReg3,1 ;/
0702 01A7 E204 BTFSC STATUS,C
0703 01A8 A1BC GOTO L_CalcHeft_13 ;無借位,轉(zhuǎn)
0704 01A9 40FF MOVLW 0FFH ;\
0705 01AA 3287 XORWF R_PubReg0,1 ; \
0706 01AB 40FF MOVLW 0FFH ; |
0707 01AC 3288 XORWF R_PubReg1,1 ; |
0708 01AD 40FF MOVLW 0FFH ; |
0709 01AE 3289 XORWF R_PubReg2,1 ; |
0710 01AF 40FF MOVLW 0FFH ; | 有借位,計(jì)算[R_PubReg3:R_PubReg0]的補(bǔ)碼
0711 01B0 328A XORWF R_PubReg3,1 ; | ->R_PubReg3:R_PubReg0
0712 01B1 4001 MOVLW 1 ; |
0713 01B2 0687 ADDWF R_PubReg0,1 ; |
0714 01B3 4000 MOVLW 0 ; |
0715 01B4 2688 ADDWFC R_PubReg1,1 ; |
0716 01B5 4000 MOVLW 0 ; |
0717 01B6 2689 ADDWFC R_PubReg2,1 ; |
0718 01B7 4000 MOVLW 0 ; /
0719 01B8 268A ADDWFC R_PubReg3,1 ;/
0720 01B9 FC86 BTFSS R_PubFlag1,6
0721 01BA DACF BSF R_DispFlag,5 ;[R_PubFlag1].6=0,1->R_DispFlag.5 顯示負(fù)號(hào)
0722 01BB A1CB GOTO L_CalcHeft_2
0723 L_CalcHeft_13:
0724 01BC EC86 BTFSC R_PubFlag1,6
0725 01BD DACF BSF R_DispFlag,5 ;[R_PubFlag1].6=0,1->R_DispFlag.5 顯示負(fù)號(hào)
0726 01BE A1CB GOTO L_CalcHeft_2
0727 L_CalcHeft_14:
0728 01BF FC86 BTFSS R_PubFlag1,6 ;[R_PubFlag1].3=0;
0729 01C0 A19F GOTO L_CalcHeft_12 ;[R_PubFlag1].6=0 轉(zhuǎn)
0730 L_CalcHeft_15: ;[R_PubFlag1].3=1,[R_PubFlag1].6=0 //[R_PubFlag1].3=0,[R_PubFlag1].6=1
0731 01C1 20A6 MOVFW R_TmpPubReg0 ;\
0732 01C2 0687 ADDWF R_PubReg0,1 ; \
0733 01C3 20A7 MOVFW R_TmpPubReg1 ; |
0734 01C4 2688 ADDWFC R_PubReg1,1 ; | [R_PubReg3:R_PubReg0]+[R_TmpPubReg3:R_TmpPubReg0]
0735 01C5 20A8 MOVFW R_TmpPubReg2 ; | ->R_PubReg3:R_PubReg0
0736 01C6 2689 ADDWFC R_PubReg2,1 ; |
0737 01C7 20A9 MOVFW R_TmpPubReg3 ; /
0738 01C8 268A ADDWFC R_PubReg3,1 ;/
0739 01C9 E686 BTFSC R_PubFlag1,3
0740 01CA DACF BSF R_DispFlag,5 ;[R_PubFlag1].3=1,1->R_DispFlag.5 顯示負(fù)號(hào)
0741 L_CalcHeft_2:
0742 01CB 2087 MOVFW R_PubReg0 ;\
0743 01CC 22A6 MOVWF R_TmpPubReg0 ; \
0744 01CD 2088 MOVFW R_PubReg1 ; |
0745 01CE 22A7 MOVWF R_TmpPubReg1 ; | [R_PubReg3:R_PubReg0]
0746 01CF 2089 MOVFW R_PubReg2 ; | ->R_TmpPubReg3:R_TmpPubReg0 暫存
0747 01D0 22A8 MOVWF R_TmpPubReg2 ; |
0748 01D1 208A MOVFW R_PubReg3 ; /
0749 01D2 22A9 MOVWF R_TmpPubReg3 ;/
0750 ;
0751 01D3 2089 MOVFW R_PubReg2 ;\
0752 01D4 2287 MOVWF R_PubReg0 ; | [R_PubReg3:R_PubReg2]
0753 01D5 208A MOVFW R_PubReg3 ; | ->R_PubReg1:R_PubReg0
0754 01D6 2288 MOVWF R_PubReg1 ;/
0755 01D7 20A0 MOVFW R_LockWeightL ;\
0756 01D8 228B MOVWF R_PubReg4 ; | [R_LockWeightH:R_LockWeightL]
0757 01D9 20A1 MOVFW R_LockWeightH ; | ->R_PubReg5:R_PubReg4
0758 01DA 228C MOVWF R_PubReg5 ;/
0759 01DB 83F7 CALL S_CalcABS ;計(jì)算[R_PubReg5:R_PubReg4]-[R_PubReg1:R_PubReg0]絕對(duì)值->R_PubReg5:R_PubReg4
0760 ;
0761 01DC 20A6 MOVFW R_TmpPubReg0 ;\
0762 01DD 2287 MOVWF R_PubReg0 ; \
0763 01DE 20A7 MOVFW R_TmpPubReg1 ; |
0764 01DF 2288 MOVWF R_PubReg1 ; | [R_TmpPubReg3:R_TmpPubReg0]
0765 01E0 20A8 MOVFW R_TmpPubReg2 ; | ->R_PubReg3:R_PubReg0
0766 01E1 2289 MOVWF R_PubReg2 ; |
0767 01E2 20A9 MOVFW R_TmpPubReg3 ; /
0768 01E3 228A MOVWF R_PubReg3 ;/
0769 ;
0770 01E4 400A MOVLW 10
0771 01E5 188B SUBWF R_PubReg4,0
0772 01E6 4000 MOVLW 0
0773 01E7 388C SUBWFC R_PubReg5,0
0774 01E8 F204 BTFSS STATUS,C
0775 01E9 A1EF GOTO L_CalcHeft_21 ;[R_PubReg5:R_PubReg4]<10 轉(zhuǎn)
0776 01EA 2089 MOVFW R_PubReg2 ;\
0777 01EB 22A0 MOVWF R_LockWeightL ; | [R_PubReg3:R_PubReg0]
0778 01EC 208A MOVFW R_PubReg3 ; | ->R_LockWeightH:R_LockWeightL
0779 01ED 22A1 MOVWF R_LockWeightH ;/
0780 01EE 835B CALL S_CalcOffTime ;計(jì)算自動(dòng)關(guān)機(jī)時(shí)間(單位:秒)->R_OffTimerH:R_OffTimerL
0781 L_CalcHeft_21:
0782 01EF 4002 MOVLW 2
0783 01F0 1889 SUBWF R_PubReg2,0
0784 01F1 4000 MOVLW 0
0785 01F2 388A SUBWFC R_PubReg3,0
0786 01F3 E204 BTFSC STATUS,C
0787 01F4 A203 GOTO L_CalcHeft_3 ;[R_PubReg3:R_PubReg2]≥2 轉(zhuǎn)
0788 01F5 FA85 BTFSS R_PubFlag0,5
0789 01F6 A201 GOTO L_CalcHeft_23 ;[R_PubFlag0].5=0(稱重?cái)?shù)據(jù)不穩(wěn)定) 轉(zhuǎn)
0790 01F7 20E2 MOVFW R_LockCodeNum
0791 01F8 18A3 SUBWF R_2dWeightCnt,0
0792 01F9 E204 BTFSC STATUS,C
0793 01FA A1FD GOTO L_CalcHeft_22 ;[R_2dWeightCnt]≥[R_LockCodeNum] 轉(zhuǎn)
0794 01FB 0AA3 INCF R_2dWeightCnt,1 ;[R_2dWeightCnt]+1->R_2dWeightCnt
0795 01FC A201 GOTO L_CalcHeft_23
0796 L_CalcHeft_22:
0797 01FD 209A MOVFW R_LastAverageL ;\
0798 01FE 229E MOVWF R_ZeroCodeL ; | [R_LastAverageH:R_LastAverageL]->R_ZeroCodeH:R_ZeroCodeL
0799 01FF 209B MOVFW R_LastAverageH ; | 保存零點(diǎn)內(nèi)碼
0800 0200 229F MOVWF R_ZeroCodeH ;/
0801 L_CalcHeft_23:
0802 0201 CACF BCF R_DispFlag,5 ;0->R_DispFlag.5 不顯示負(fù)號(hào)
0803 0202 A210 GOTO L_CalcHeft_31
0804 L_CalcHeft_3:
0805 0203 20E6 MOVFW R_MaxScaleMarkL ;\
0806 0204 1889 SUBWF R_PubReg2,0 ; |
0807 0205 20E7 MOVFW R_MaxScaleMarkH ; | [R_PubReg3:R_PubReg2]≥[R_MaxScaleMarkH:R_MaxScaleMarkL]
0808 0206 388A SUBWFC R_PubReg3,0 ; | (稱重結(jié)果≥最大分度數(shù)+9) 轉(zhuǎn) 顯示超載錯(cuò)誤
0809 0207 E204 BTFSC STATUS,C ; |
0810 0208 A26D GOTO L_DispOverErr ;/
0811 0209 4001 MOVLW D_P21
0812 020A 8262 CALL S_RdMinDispV ;讀最小顯示值
0813 020B 1889 SUBWF R_PubReg2,0
0814 020C 4000 MOVLW 0
0815 020D 388A SUBWFC R_PubReg3,0
0816 020E E204 BTFSC STATUS,C
0817 020F A214 GOTO L_CalcHeft_32 ;[R_PubReg3:R_PubReg2]≥最小顯示分度數(shù) 轉(zhuǎn)
0818 L_CalcHeft_31:
0819 0210 028A CLRF R_PubReg3 ;0->R_PubReg3
0820 0211 0289 CLRF R_PubReg2 ;0->R_PubReg2
0821 0212 0288 CLRF R_PubReg1 ;0->R_PubReg1
0822 0213 A21A GOTO L_CalcHeft_33
0823 L_CalcHeft_32:
0824 0214 4014 MOVLW 14H
0825 0215 1889 SUBWF R_PubReg2,0
0826 0216 4000 MOVLW 0
0827 0217 388A SUBWFC R_PubReg3,0
0828 0218 E204 BTFSC STATUS,C
0829 0219 A21E GOTO L_CalcHeft_35 ;[R_PubReg3:R_PubReg2]≥0014H 轉(zhuǎn)
0830 L_CalcHeft_33:
0831 021A F286 BTFSS R_PubFlag1,1
0832 021B A21D GOTO L_CalcHeft_34 ;[R_PubFlag1].1=0(未鎖定) 轉(zhuǎn)
0833 021C C286 BCF R_PubFlag1,1 ;0->R_PubFlag1.1 解鎖
0834 L_CalcHeft_34:
0835 021D A22B GOTO L_CalcHeft_4
0836 L_CalcHeft_35:
0837 021E E286 BTFSC R_PubFlag1,1
0838 021F A229 GOTO L_CalcHeft_36 ;[R_PubFlag1].1=1(已鎖定) 轉(zhuǎn)
0839 0220 835B CALL S_CalcOffTime ;計(jì)算自動(dòng)關(guān)機(jī)時(shí)間(單位:秒)->R_OffTimerH:R_OffTimerL
0840 0221 FA85 BTFSS R_PubFlag0,5
0841 0222 A22B GOTO L_CalcHeft_4 ;[R_PubFlag0].5=0 (稱重?cái)?shù)據(jù)不穩(wěn)定) 轉(zhuǎn)
0842 0223 D286 BSF R_PubFlag1,1 ;1->R_PubFlag1.1 鎖定
0843 0224 2089 MOVFW R_PubReg2 ;\
0844 0225 22A0 MOVWF R_LockWeightL ; | [R_PubReg3:R_PubReg0]
0845 0226 208A MOVFW R_PubReg3 ; | ->R_LockWeightH:R_LockWeightL
0846 0227 22A1 MOVWF R_LockWeightH ;/
0847 0228 A22B GOTO L_CalcHeft_4
0848 L_CalcHeft_36:
0849 0229 D8CF BSF R_DispFlag,4 ;1->R_DispFlag.4 顯示鎖符
0850 022A A261 GOTO L_CalcHeftRet
0851 ;
0852 L_CalcHeft_4:
0853 022B 0290 CLRF R_PubCnt3 ;0->R_PubCnt3
0854 022C 8415 CALL S_LeftMove ;[R_PubReg3:R_PubReg0]左移,直到[R_PubReg3]≥80H,最多移16次
0855 ; 實(shí)際移位次數(shù)加入[R_PubCnt3]
0856 022D 20EA MOVFW R_UnitData0 ;\
0857 022E 228B MOVWF R_PubReg4 ; | [R_UnitData1:R_UnitData0]
0858 022F 20EB MOVFW R_UnitData1 ; | ->R_PubReg5:R_PubReg4
0859 0230 228C MOVWF R_PubReg5 ;/
0860 0231 20EC MOVFW R_UnitData2
0861 0232 0690 ADDWF R_PubCnt3,1 ;[R_PubCnt3]+[R_UnitData2]->R_PubCnt3
0862 0233 84EF CALL S_Multi ;[R_PubReg3:R_PubReg2]×[R_PubReg5:R_PubReg4]->R_PubReg3:R_PubReg0
0863 L_CalcHeft4L1:
0864 0234 2090 MOVFW R_PubCnt3
0865 0235 68FF ANDLW 0FFH
0866 0236 E004 BTFSC STATUS,Z
0867 0237 A245 GOTO L_DispHeft ;[R_PubCnt3]=0 轉(zhuǎn)
0868 0238 EE90 BTFSC R_PubCnt3,7
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -