📄 9821h621.lst
字号:
0651 017F 228B MOVWF R_PubReg4 ; | 当前零点内码[R_ZeroCodeH:R_ZeroCodeL]
0652 0180 209F MOVFW R_ZeroCodeH ; | ->R_PubReg5:R_PubReg4
0653 0181 228C MOVWF R_PubReg5 ;/
0654 0182 8325 CALL S_CalcRelWeight ;计算[R_PubReg5:R_PubReg4]中的内码相对于标定零点的重量
0655 ; ->R_PubReg3:R_PubReg0,[R_PubFlag1].3=1为负数
0656 0183 2087 MOVFW R_PubReg0 ;\
0657 0184 22A6 MOVWF R_TmpPubReg0 ; \
0658 0185 2088 MOVFW R_PubReg1 ; |
0659 0186 22A7 MOVWF R_TmpPubReg1 ; | [R_PubReg3:R_PubReg0]
0660 0187 2089 MOVFW R_PubReg2 ; | ->R_TmpPubReg3:R_TmpPubReg0 暂存
0661 0188 22A8 MOVWF R_TmpPubReg2 ; |
0662 0189 208A MOVFW R_PubReg3 ; /
0663 018A 22A9 MOVWF R_TmpPubReg3 ;/
0664 018B CC86 BCF R_PubFlag1,6 ;0->R_PubFlag1.6
0665 018C E686 BTFSC R_PubFlag1,3
0666 018D DC86 BSF R_PubFlag1,6 ;[R_PubFlag1].3=1,1->R_PubFlag1.6
0667 L_CalcHeft_11:
0668 018E 209A MOVFW R_LastAverageL ;\
0669 018F 228B MOVWF R_PubReg4 ; | [R_LastAverageH:R_LastAverageL] (当前平均内码)
0670 0190 209B MOVFW R_LastAverageH ; | ->R_PubReg5:R_PubReg4
0671 0191 228C MOVWF R_PubReg5 ;/
0672 0192 8325 CALL S_CalcRelWeight ;计算[R_PubReg5:R_PubReg4]中的内码相对于标定零点的重量
0673 ; ->R_PubReg3:R_PubReg0,[R_PubFlag1].3=1为负数
0674 0193 C4CF BCF R_DispFlag,2 ;0->R_DispFlag.2 负号显示
0675 0194 F686 BTFSS R_PubFlag1,3
0676 0195 A1B8 GOTO L_CalcHeft_14 ;[R_PubFlag1].3=0 转
0677 0196 FC86 BTFSS R_PubFlag1,6 ;[R_PubFlag1].3=1;
0678 0197 A1BA GOTO L_CalcHeft_15 ;[R_PubFlag1].6=0 转
0679 L_CalcHeft_12: ;[R_PubFlag1].3=1,[R_PubFlag1].6=1 //[R_PubFlag1].3=0,[R_PubFlag1].6=0
0680 0198 20A6 MOVFW R_TmpPubReg0 ;\
0681 0199 1A87 SUBWF R_PubReg0,1 ; \
0682 019A 20A7 MOVFW R_TmpPubReg1 ; |
0683 019B 3A88 SUBWFC R_PubReg1,1 ; | [R_PubReg3:R_PubReg0]-[R_TmpPubReg3:R_TmpPubReg0]
0684 019C 20A8 MOVFW R_TmpPubReg2 ; | ->R_PubReg3:R_PubReg0
0685 019D 3A89 SUBWFC R_PubReg2,1 ; |
0686 019E 20A9 MOVFW R_TmpPubReg3 ; /
0687 019F 3A8A SUBWFC R_PubReg3,1 ;/
0688 01A0 E204 BTFSC STATUS,C
0689 01A1 A1B5 GOTO L_CalcHeft_13 ;无借位,转
0690 01A2 40FF MOVLW 0FFH ;\
0691 01A3 3287 XORWF R_PubReg0,1 ; \
0692 01A4 40FF MOVLW 0FFH ; |
0693 01A5 3288 XORWF R_PubReg1,1 ; |
0694 01A6 40FF MOVLW 0FFH ; |
0695 01A7 3289 XORWF R_PubReg2,1 ; |
0696 01A8 40FF MOVLW 0FFH ; | 有借位,计算[R_PubReg3:R_PubReg0]的补码
0697 01A9 328A XORWF R_PubReg3,1 ; | ->R_PubReg3:R_PubReg0
0698 01AA 4001 MOVLW 1 ; |
0699 01AB 0687 ADDWF R_PubReg0,1 ; |
0700 01AC 4000 MOVLW 0 ; |
0701 01AD 2688 ADDWFC R_PubReg1,1 ; |
0702 01AE 4000 MOVLW 0 ; |
0703 01AF 2689 ADDWFC R_PubReg2,1 ; |
0704 01B0 4000 MOVLW 0 ; /
0705 01B1 268A ADDWFC R_PubReg3,1 ;/
0706 01B2 FC86 BTFSS R_PubFlag1,6
0707 01B3 D4CF BSF R_DispFlag,2 ;[R_PubFlag1].6=0,1->R_DispFlag.2 显示负号
0708 01B4 A1C4 GOTO L_CalcHeft_2
0709 L_CalcHeft_13:
0710 01B5 EC86 BTFSC R_PubFlag1,6
0711 01B6 D4CF BSF R_DispFlag,2 ;[R_PubFlag1].6=0,1->R_DispFlag.2 显示负号
0712 01B7 A1C4 GOTO L_CalcHeft_2
0713 L_CalcHeft_14:
0714 01B8 FC86 BTFSS R_PubFlag1,6 ;[R_PubFlag1].3=0;
0715 01B9 A198 GOTO L_CalcHeft_12 ;[R_PubFlag1].6=0 转
0716 L_CalcHeft_15: ;[R_PubFlag1].3=1,[R_PubFlag1].6=0 //[R_PubFlag1].3=0,[R_PubFlag1].6=1
0717 01BA 20A6 MOVFW R_TmpPubReg0 ;\
0718 01BB 0687 ADDWF R_PubReg0,1 ; \
0719 01BC 20A7 MOVFW R_TmpPubReg1 ; |
0720 01BD 2688 ADDWFC R_PubReg1,1 ; | [R_PubReg3:R_PubReg0]+[R_TmpPubReg3:R_TmpPubReg0]
0721 01BE 20A8 MOVFW R_TmpPubReg2 ; | ->R_PubReg3:R_PubReg0
0722 01BF 2689 ADDWFC R_PubReg2,1 ; |
0723 01C0 20A9 MOVFW R_TmpPubReg3 ; /
0724 01C1 268A ADDWFC R_PubReg3,1 ;/
0725 01C2 E686 BTFSC R_PubFlag1,3
0726 01C3 D4CF BSF R_DispFlag,2 ;[R_PubFlag1].3=1,1->R_DispFlag.2 显示负号
0727 L_CalcHeft_2:
0728 01C4 2087 MOVFW R_PubReg0 ;\
0729 01C5 22A6 MOVWF R_TmpPubReg0 ; \
0730 01C6 2088 MOVFW R_PubReg1 ; |
0731 01C7 22A7 MOVWF R_TmpPubReg1 ; | [R_PubReg3:R_PubReg0]
0732 01C8 2089 MOVFW R_PubReg2 ; | ->R_TmpPubReg3:R_TmpPubReg0 暂存
0733 01C9 22A8 MOVWF R_TmpPubReg2 ; |
0734 01CA 208A MOVFW R_PubReg3 ; /
0735 01CB 22A9 MOVWF R_TmpPubReg3 ;/
0736 ;
0737 01CC 2089 MOVFW R_PubReg2 ;\
0738 01CD 2287 MOVWF R_PubReg0 ; | [R_PubReg3:R_PubReg2]
0739 01CE 208A MOVFW R_PubReg3 ; | ->R_PubReg1:R_PubReg0
0740 01CF 2288 MOVWF R_PubReg1 ;/
0741 01D0 20A0 MOVFW R_LockWeightL ;\
0742 01D1 228B MOVWF R_PubReg4 ; | [R_LockWeightH:R_LockWeightL]
0743 01D2 20A1 MOVFW R_LockWeightH ; | ->R_PubReg5:R_PubReg4
0744 01D3 228C MOVWF R_PubReg5 ;/
0745 01D4 83F2 CALL S_CalcABS ;计算[R_PubReg5:R_PubReg4]-[R_PubReg1:R_PubReg0]绝对值->R_PubReg5:R_PubReg4
0746 ;
0747 01D5 20A6 MOVFW R_TmpPubReg0 ;\
0748 01D6 2287 MOVWF R_PubReg0 ; \
0749 01D7 20A7 MOVFW R_TmpPubReg1 ; |
0750 01D8 2288 MOVWF R_PubReg1 ; | [R_TmpPubReg3:R_TmpPubReg0]
0751 01D9 20A8 MOVFW R_TmpPubReg2 ; | ->R_PubReg3:R_PubReg0
0752 01DA 2289 MOVWF R_PubReg2 ; |
0753 01DB 20A9 MOVFW R_TmpPubReg3 ; /
0754 01DC 228A MOVWF R_PubReg3 ;/
0755 ;
0756 01DD 400A MOVLW 10
0757 01DE 188B SUBWF R_PubReg4,0
0758 01DF 4000 MOVLW 0
0759 01E0 388C SUBWFC R_PubReg5,0
0760 01E1 F204 BTFSS STATUS,C
0761 01E2 A1E8 GOTO L_CalcHeft_21 ;[R_PubReg5:R_PubReg4]<10 转
0762 01E3 2089 MOVFW R_PubReg2 ;\
0763 01E4 22A0 MOVWF R_LockWeightL ; | [R_PubReg3:R_PubReg0]
0764 01E5 208A MOVFW R_PubReg3 ; | ->R_LockWeightH:R_LockWeightL
0765 01E6 22A1 MOVWF R_LockWeightH ;/
0766 01E7 8356 CALL S_CalcOffTime ;计算自动关机时间(单位:秒)->R_OffTimerH:R_OffTimerL
0767 L_CalcHeft_21:
0768 01E8 4002 MOVLW 2
0769 01E9 1889 SUBWF R_PubReg2,0
0770 01EA 4000 MOVLW 0
0771 01EB 388A SUBWFC R_PubReg3,0
0772 01EC E204 BTFSC STATUS,C
0773 01ED A1FC GOTO L_CalcHeft_3 ;[R_PubReg3:R_PubReg2]≥2 转
0774 01EE FA85 BTFSS R_PubFlag0,5
0775 01EF A1FA GOTO L_CalcHeft_23 ;[R_PubFlag0].5=0(称重数据不稳定) 转
0776 01F0 20E2 MOVFW R_LockCodeNum
0777 01F1 18A3 SUBWF R_2dWeightCnt,0
0778 01F2 E204 BTFSC STATUS,C
0779 01F3 A1F6 GOTO L_CalcHeft_22 ;[R_2dWeightCnt]≥[R_LockCodeNum] 转
0780 01F4 0AA3 INCF R_2dWeightCnt,1 ;[R_2dWeightCnt]+1->R_2dWeightCnt
0781 01F5 A1FA GOTO L_CalcHeft_23
0782 L_CalcHeft_22:
0783 01F6 209A MOVFW R_LastAverageL ;\
0784 01F7 229E MOVWF R_ZeroCodeL ; | [R_LastAverageH:R_LastAverageL]->R_ZeroCodeH:R_ZeroCodeL
0785 01F8 209B MOVFW R_LastAverageH ; | 保存零点内码
0786 01F9 229F MOVWF R_ZeroCodeH ;/
0787 L_CalcHeft_23:
0788 01FA C4CF BCF R_DispFlag,2 ;0->R_DispFlag.2 不显示负号
0789 01FB A209 GOTO L_CalcHeft_31
0790 L_CalcHeft_3:
0791 01FC 20E6 MOVFW R_MaxScaleMarkL ;\
0792 01FD 1889 SUBWF R_PubReg2,0 ; |
0793 01FE 20E7 MOVFW R_MaxScaleMarkH ; | [R_PubReg3:R_PubReg2]≥[R_MaxScaleMarkH:R_MaxScaleMarkL]
0794 01FF 388A SUBWFC R_PubReg3,0 ; | (称重结果≥最大分度数+9) 转 显示超载错误
0795 0200 E204 BTFSC STATUS,C ; |
0796 0201 A26A GOTO L_DispOverErr ;/
0797 0202 4001 MOVLW D_P21
0798 0203 825F CALL S_RdMinDispV ;读最小显示值
0799 0204 1889 SUBWF R_PubReg2,0
0800 0205 4000 MOVLW 0
0801 0206 388A SUBWFC R_PubReg3,0
0802 0207 E204 BTFSC STATUS,C
0803 0208 A20D GOTO L_CalcHeft_32 ;[R_PubReg3:R_PubReg2]≥最小显示分度数 转
0804 L_CalcHeft_31:
0805 0209 028A CLRF R_PubReg3 ;0->R_PubReg3
0806 020A 0289 CLRF R_PubReg2 ;0->R_PubReg2
0807 020B 0288 CLRF R_PubReg1 ;0->R_PubReg1
0808 020C A213 GOTO L_CalcHeft_33
0809 L_CalcHeft_32:
0810 020D 4014 MOVLW 14H
0811 020E 1889 SUBWF R_PubReg2,0
0812 020F 4000 MOVLW 0
0813 0210 388A SUBWFC R_PubReg3,0
0814 0211 E204 BTFSC STATUS,C
0815 0212 A217 GOTO L_CalcHeft_35 ;[R_PubReg3:R_PubReg2]≥0014H 转
0816 L_CalcHeft_33:
0817 0213 F286 BTFSS R_PubFlag1,1
0818 0214 A216 GOTO L_CalcHeft_34 ;[R_PubFlag1].1=0(未锁定) 转
0819 0215 C286 BCF R_PubFlag1,1 ;0->R_PubFlag1.1 解锁
0820 L_CalcHeft_34:
0821 0216 A224 GOTO L_CalcHeft_4
0822 L_CalcHeft_35:
0823 0217 E286 BTFSC R_PubFlag1,1
0824 0218 A222 GOTO L_CalcHeft_36 ;[R_PubFlag1].1=1(已锁定) 转
0825 0219 8356 CALL S_CalcOffTime ;计算自动关机时间(单位:秒)->R_OffTimerH:R_OffTimerL
0826 021A FA85 BTFSS R_PubFlag0,5
0827 021B A224 GOTO L_CalcHeft_4 ;[R_PubFlag0].5=0 (称重数据不稳定) 转
0828 021C D286 BSF R_PubFlag1,1 ;1->R_PubFlag1.1 锁定
0829 021D 2089 MOVFW R_PubReg2 ;\
0830 021E 22A0 MOVWF R_LockWeightL ; | [R_PubReg3:R_PubReg0]
0831 021F 208A MOVFW R_PubReg3 ; | ->R_LockWeightH:R_LockWeightL
0832 0220 22A1 MOVWF R_LockWeightH ;/
0833 0221 A224 GOTO L_CalcHeft_4
0834 L_CalcHeft_36:
0835 0222 D6CF BSF R_DispFlag,3 ;1->R_DispFlag.3 显示锁符
0836 0223 A25E GOTO L_CalcHeftRet
0837 ;
0838 L_CalcHeft_4:
0839 0224 0290 CLRF R_PubCnt3 ;0->R_PubCnt3
0840 0225 8410 CALL S_LeftMove ;[R_PubReg3:R_PubReg0]左移,直到[R_PubReg3]≥80H,最多移16次
0841 ; 实际移位次数加入[R_PubCnt3]
0842 0226 20EA MOVFW R_UnitData0 ;\
0843 0227 228B MOVWF R_PubReg4 ; | [R_UnitData1:R_UnitData0]
0844 0228 20EB MOVFW R_UnitData1 ; | ->R_PubReg5:R_PubReg4
0845 0229 228C MOVWF R_PubReg5 ;/
0846 022A 20EC MOVFW R_UnitData2
0847 022B 0690 ADDWF R_PubCnt3,1 ;[R_PubCnt3]+[R_UnitData2]->R_PubCnt3
0848 022C 84ED CALL S_Multi ;[R_PubReg3:R_PubReg2]×[R_PubReg5:R_PubReg4]->R_PubReg3:R_PubReg0
0849 L_CalcHeft4L1:
0850 022D 2090 MOVFW R_PubCnt3
0851 022E 68FF ANDLW 0FFH
0852 022F E004 BTFSC STATUS,Z
0853 0230 A23E GOTO L_DispHeft ;[R_PubCnt3]=0 转
0854 0231 EE90 BTFSC R_PubCnt3,7
0855 0232 A23A GOTO L_CalcHeft43 ;[R_PubCnt3]≥80H 转
0856 0233 1290 DECF R_PubCnt3,1 ;[R_PubCnt3]-1->R_PubCnt3
0857 0234 C204 BCF STATUS,C ;0->Cy
0858 0235 3E8A RRF R_PubReg3,1 ;\
0859 0236 3E89 RRF R_PubReg2,1 ; | [R_PubReg3:R_PubReg0]右移1位
0860 0237 3E88 RRF R_PubReg1,1 ; | ->R_PubReg3:R_PubReg0
0861 0238 3E87 RRF R_PubReg0,1 ;/
0862 0239 A22D GOTO L_CalcHeft4L1
0863 L_CalcHeft43:
0864 023A 4001 MOVLW 1
0865 023B 2284 MOVWF R_Count ;1->R_Count
0866 023C 8414 CALL S_RL1Bit ;[R_PubCnt3]+1->R_PubCnt3,[R_PubReg3:R_PubReg0]左移1位->R_PubReg3:R_PubReg0
0867 023D A22D GOTO L_CalcHeft4L1
0868 L_DispHeft:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -