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