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