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

📄 9821h621.lst

📁 用台湾富晶单片机开发的电子称包括源码和编译器
💻 LST
📖 第 1 页 / 共 5 页
字号:
0651  017C  4008    			MOVLW	08H
0652  017D  22C9    			MOVWF	R_DispMode		;1->R_DispMode.3 显示提示信息
0653  017E  A4A3    			GOTO	S_Display		;去显示"  Lo "
0654                ;------------------------------------------------------------------------------
0655                ;下面计算出重量值,并根据公/英制要求送显示缓冲区
0656                L_CalcHeft:							;计算并显示重量值
0657  017F  F885    			BTFSS	R_PubFlag0,4
0658  0180  A261    			GOTO	L_CalcHeftRet	;[R_PubFlag0].4=0(无新的有效内码) 转,返回
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(超载) 转,显示超载错误
0663                L_CalcHeft_1:
0664  0185  209E    			MOVFW   R_ZeroCodeL     ;\
0665  0186  228B    			MOVWF   R_PubReg4       ; | 当前零点内码[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 ;计算[R_PubReg5:R_PubReg4]中的内码相对于标定零点的重量
0669                ;			                          ->R_PubReg3:R_PubReg0,[R_PubFlag1].3=1为负数
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] (当前平均内码)
0684  0197  209B    			MOVFW	R_LastAverageH	; | ->R_PubReg5:R_PubReg4
0685  0198  228C    			MOVWF	R_PubReg5		;/
0686  0199  832A    			CALL    S_CalcRelWeight ;计算[R_PubReg5:R_PubReg4]中的内码相对于标定零点的重量
0687                ;			                          ->R_PubReg3:R_PubReg0,[R_PubFlag1].3=1为负数
0688  019A  CACF                BCF     R_DispFlag,5	;0->R_DispFlag.5 负号显示
0689  019B  F686                BTFSS   R_PubFlag1,3
0690  019C  A1BF                GOTO    L_CalcHeft_14   ;[R_PubFlag1].3=0 转
0691  019D  FC86                BTFSS   R_PubFlag1,6    ;[R_PubFlag1].3=1;
0692  019E  A1C1                GOTO    L_CalcHeft_15   ;[R_PubFlag1].6=0 转
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   ;无借位,转
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            ;  | 有借位,计算[R_PubReg3:R_PubReg0]的补码
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 显示负号
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 显示负号
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 转
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 显示负号
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		;计算[R_PubReg5:R_PubReg4]-[R_PubReg1:R_PubReg0]绝对值->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 转
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	;计算自动关机时间(单位:秒)->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 转
0788  01F5  FA85    			BTFSS	R_PubFlag0,5
0789  01F6  A201    			GOTO	L_CalcHeft_23	;[R_PubFlag0].5=0(称重数据不稳定) 转
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] 转
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	; | 保存零点内码
0800  0200  229F    			MOVWF	R_ZeroCodeH		;/
0801                L_CalcHeft_23:
0802  0201  CACF                BCF     R_DispFlag,5	;0->R_DispFlag.5 不显示负号
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		; | (称重结果≥最大分度数+9) 转 显示超载错误
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]≥最小显示分度数 转
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 转
0830                L_CalcHeft_33:
0831  021A  F286    			BTFSS	R_PubFlag1,1
0832  021B  A21D    			GOTO	L_CalcHeft_34	;[R_PubFlag1].1=0(未锁定) 转
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(已锁定) 转
0839  0220  835B    			CALL	S_CalcOffTime	;计算自动关机时间(单位:秒)->R_OffTimerH:R_OffTimerL
0840  0221  FA85    			BTFSS	R_PubFlag0,5
0841  0222  A22B    			GOTO	L_CalcHeft_4	;[R_PubFlag0].5=0 (称重数据不稳定) 转
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                ;					 				 实际移位次数加入[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 转
0868  0238  EE90    			BTFSC	R_PubCnt3,7

⌨️ 快捷键说明

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