⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9821h621.lst

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -