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

📄 9821h620.lst

📁 用台湾富晶单片机开发的电子称包括源码和编译器
💻 LST
📖 第 1 页 / 共 5 页
字号:
0678  0197  68FF    			ANDLW	0FFH
0679  0198  F004    			BTFSS	STATUS,Z
0680  0199  A1A7    			GOTO	L_CalcHeft42	;[R_PubReg3]>0 转
0681  019A  2089    			MOVFW	R_PubReg2
0682  019B  68FE    			ANDLW	0FEH
0683  019C  F004    			BTFSS	STATUS,Z
0684  019D  A1A7    			GOTO	L_CalcHeft42	;[R_PubReg2]≥2 转
0685  019E  FA85    			BTFSS	R_PubFlag0,5
0686  019F  A1A5    			GOTO	L_CalcHeft41	;[R_PubFlag0].5=0(称重数据不稳定) 转
0687  01A0  209A    			MOVFW	R_LastAverageL	;\
0688  01A1  22A0    			MOVWF	R_ZeroCodeL   	; | [R_LastAverageH:R_LastAverageL]->R_ZeroCodeH:R_ZeroCodeL
0689  01A2  209B    			MOVFW	R_LastAverageH	; | 保存零点内码
0690  01A3  22A1    			MOVWF	R_ZeroCodeH		;/
0691  01A4  0289    			CLRF	R_PubReg2		;0->R_PubReg2
0692                L_CalcHeft41:
0693  01A5  0288    			CLRF	R_PubReg1		;0->R_PubReg1
0694  01A6  A1C7    			GOTO	L_DispHeft
0695                L_CalcHeft42:
0696  01A7  20E6    			MOVFW	R_MaxScaleMarkL	;\
0697  01A8  1889    			SUBWF	R_PubReg2,0		; |
0698  01A9  20E7    			MOVFW	R_MaxScaleMarkH	; | [R_PubReg3:R_PubReg2]≥[R_MaxScaleMarkH:R_MaxScaleMarkL]
0699  01AA  388A    			SUBWFC	R_PubReg3,0		; | (称重结果≥最大分度数+9) 转 显示超载错误
0700  01AB  E204    			BTFSC	STATUS,C		; |
0701  01AC  A1FD    			GOTO	L_DispOverErr	;/
0702  01AD  0290    			CLRF	R_PubCnt3		;0->R_PubCnt3
0703  01AE  8406    			CALL	S_LeftMove 		;[R_PubReg3:R_PubReg0]左移,直到[R_PubReg3]≥80H,最多移16次
0704                ;					 				 实际移位次数加入[R_PubCnt3]
0705  01AF  20EA    			MOVFW	R_UnitData0		;\
0706  01B0  228B    			MOVWF	R_PubReg4		; | [R_UnitData1:R_UnitData0]
0707  01B1  20EB    			MOVFW	R_UnitData1		; | ->R_PubReg5:R_PubReg4
0708  01B2  228C    			MOVWF	R_PubReg5		;/
0709  01B3  20EC    			MOVFW	R_UnitData2
0710  01B4  0690    			ADDWF	R_PubCnt3,1		;[R_PubCnt3]+[R_UnitData2]->R_PubCnt3
0711  01B5  8514    			CALL	S_Multi			;[R_PubReg3:R_PubReg2]×[R_PubReg5:R_PubReg4]->R_PubReg3:R_PubReg0
0712                L_CalcHeft4L1:
0713  01B6  2090    			MOVFW	R_PubCnt3
0714  01B7  68FF    			ANDLW	0FFH
0715  01B8  E004    			BTFSC	STATUS,Z
0716  01B9  A1C7    			GOTO	L_DispHeft		;[R_PubCnt3]=0 转
0717  01BA  EE90    			BTFSC	R_PubCnt3,7
0718  01BB  A1C3    			GOTO	L_CalcHeft43	;[R_PubCnt3]≥80H 转
0719  01BC  1290    			DECF	R_PubCnt3,1		;[R_PubCnt3]-1->R_PubCnt3
0720  01BD  C204    			BCF		STATUS,C		;0->Cy
0721  01BE  3E8A    			RRF		R_PubReg3,1		;\
0722  01BF  3E89    			RRF		R_PubReg2,1		; | [R_PubReg3:R_PubReg0]右移1位
0723  01C0  3E88    			RRF		R_PubReg1,1		; | ->R_PubReg3:R_PubReg0
0724  01C1  3E87    			RRF		R_PubReg0,1		;/
0725  01C2  A1B6    			GOTO	L_CalcHeft4L1
0726                L_CalcHeft43:
0727  01C3  4001    			MOVLW	1
0728  01C4  2284    			MOVWF	R_Count			;1->R_Count
0729  01C5  840A    			CALL	S_RL1Bit	;[R_PubCnt3]+1->R_PubCnt3,[R_PubReg3:R_PubReg0]左移1位->R_PubReg3:R_PubReg0
0730  01C6  A1B6    			GOTO	L_CalcHeft4L1
0731                L_DispHeft:
0732  01C7  20E0    			MOVFW	R_DecimalDigits
0733  01C8  22C9    			MOVWF	R_DispMode		;[R_DecimalDigits](小数位数)->R_DispMode
0734  01C9  D4C9    			BSF		R_DispMode,2	;1->R_DispMode.2 显示计量单位
0735  01CA  EA85    			BTFSC	R_PubFlag0,5
0736  01CB  D6CF    			BSF		R_DispFlag,3	;[R_PubFlag0].5=1(称重数据稳定),1->R_DispFlag.3 显示锁符
0737  01CC  20E1    			MOVFW	R_ScaleMarkV
0738  01CD  0008    			ADDPCW
0739  01CE  A1E0    			GOTO	L_DispHeft_11	;[R_ScaleMarkV]=0
0740  01CF  A1E0    			GOTO	L_DispHeft_11	;[R_ScaleMarkV]=1
0741  01D0  A1DA    			GOTO	L_DispHeft_12	;[R_ScaleMarkV]=2
0742  01D1  A1D3    			GOTO	L_DispHeft_15	;[R_ScaleMarkV]=3
0743  01D2  A1D3    			GOTO	L_DispHeft_15	;[R_ScaleMarkV]=4
0744                ;			GOTO	L_DispHeft_15	;[R_ScaleMarkV]=5
0745                L_DispHeft_15:						;分度值=5
0746  01D3  4080    			MOVLW	80H				;\
0747  01D4  0488    			ADDWF	R_PubReg1,0		; |
0748  01D5  4002    			MOVLW	2				; | [R_PubReg3:R_PubReg2]+2.5
0749  01D6  2689    			ADDWFC	R_PubReg2,1		; | ->R_PubReg3:R_PubReg2
0750  01D7  4000    			MOVLW	0				; | (四舍五入)
0751  01D8  268A    			ADDWFC	R_PubReg3,1		;/
0752  01D9  A1E6    			GOTO	L_DispHeft_2
0753                L_DispHeft_12:						;分度值=2
0754  01DA  4001    			MOVLW	1				;\
0755  01DB  0689    			ADDWF	R_PubReg2,1		; | [R_PubReg3:R_PubReg2]+1
0756  01DC  4000    			MOVLW	0				; | ->R_PubReg3:R_PubReg2
0757  01DD  268A    			ADDWFC	R_PubReg3,1		;/  (四舍五入)
0758  01DE  C089    			BCF		R_PubReg2,0		;0->R_PubReg2.0
0759  01DF  A1E6    			GOTO	L_DispHeft_2
0760                L_DispHeft_11:						;分度值=1
0761  01E0  4080    			MOVLW	80H				;\
0762  01E1  0488    			ADDWF	R_PubReg1,0		; |
0763  01E2  4000    			MOVLW	0				; | [R_PubReg3:R_PubReg2]+0.5
0764  01E3  2689    			ADDWFC	R_PubReg2,1		; | ->R_PubReg3:R_PubReg2
0765  01E4  4000    			MOVLW	0				; | (四舍五入)
0766  01E5  268A    			ADDWFC	R_PubReg3,1		;/
0767                L_DispHeft_2:
0768  01E6  2089    			MOVFW	R_PubReg2
0769  01E7  2C8A    			IORWF	R_PubReg3,0
0770  01E8  F004    			BTFSS	STATUS,Z
0771  01E9  A1EC    			GOTO	L_DispHeft_3	;[R_PubReg3:R_PubReg2]>0 转
0772  01EA  C4CF    			BCF		R_DispFlag,2	;[R_PubReg3:R_PubReg2]=0,0->R_DispFlag.2 不显示负号
0773  01EB  C6CF    			BCF		R_DispFlag,3	;[R_PubReg3:R_PubReg2]=0,0->R_DispFlag.3 不显示锁符
0774                L_DispHeft_3:
0775  01EC  4008    			MOVLW	8
0776  01ED  18A5    			SUBWF	R_SteadyTimer,0
0777  01EE  E204    			BTFSC	STATUS,C
0778  01EF  CE20    			BCF		PT1,7			;[R_SteadyTimer]≥8(称重稳定到1秒),0->PT1.7(关背光灯)
0779  01F0  8546    			CALL    S_Hex2BCD		;将[R_PubReg3:R_PubReg2]转换为5位BCD码->R_DispBuff4:R_DispBuff0
0780  01F1  4003    			MOVLW	3
0781  01F2  18E1    			SUBWF	R_ScaleMarkV,0
0782  01F3  F204    			BTFSS	STATUS,C
0783  01F4  A1FB    			GOTO	L_DispHeft_4	;[R_ScaleMarkV]<3(分度值≠5) 转
0784  01F5  4005    			MOVLW	5				;分度值=5
0785  01F6  18CA    			SUBWF	R_DispBuff0,0
0786  01F7  4005    			MOVLW	5				;[R_DispBuff0]≥5,5->R_DispBuff0
0787  01F8  F204    			BTFSS	STATUS,C
0788  01F9  4000    			MOVLW	0				;[R_DispBuff0]<5,0->R_DispBuff0
0789  01FA  22CA    			MOVWF	R_DispBuff0
0790                L_DispHeft_4:
0791  01FB  A4C0    			GOTO	S_Display		;去显示
0792                L_CalcHeftRet:
0793  01FC  0003    			RETURN
0794                ;
0795                L_DispOverErr:						;显示超载错误
0796  01FD  84A4    			CALL	S_ClrDisp
0797  01FE  400F    			MOVLW	0FH
0798  01FF  22CD    			MOVWF	R_DispBuff3		;0FH("F")->R_DispBuff3
0799  0200  22CC    			MOVWF	R_DispBuff2		;0FH("F")->R_DispBuff2
0800  0201  22CB    			MOVWF	R_DispBuff1		;0FH("F")->R_DispBuff1
0801  0202  22CA    			MOVWF	R_DispBuff0		;0FH("F")->R_DispBuff0
0802  0203  4008    			MOVLW	08H	
0803  0204  22C9    			MOVWF	R_DispMode		;08H->R_DispMode,无小数点,16进制显示方式
0804  0205  A4C0    			GOTO	S_Display		;去显示
0805                ;------------------------------------------------------------------------------
0806                L_CaliProc:							;标定处理		
0807  0206  4001    			MOVLW	01H
0808  0207  2ACF    			ANDWF	R_DispFlag,1	;0->R_DispFlag.7:1
0809  0208  E282    			BTFSC	R_WorkStatus,1
0810  0209  A247    			GOTO	L_CaliPara		;[R_WorkStatus].1=1 转去标定功能状态字
0811  020A  E082    			BTFSC	R_WorkStatus,0
0812  020B  A214    			GOTO	L_CaliCode_1	;[R_WorkStatus].0=1 转
0813  020C  FA85    			BTFSS	R_PubFlag0,5
0814  020D  A2CC    			GOTO	L_DispCaliCode	;[R_PubFlag0].5=0(称重数据不稳定) 转去显示内码
0815  020E  20A0    			MOVFW	R_ZeroCodeL		;\
0816  020F  22DA    			MOVWF	R_CaliCode0L	; | [R_ZeroCodeH:R_ZeroCodeL]
0817  0210  20A1    			MOVFW	R_ZeroCodeH		; | ->R_CaliCode0H:R_CaliCode0L 保存零点内码
0818  0211  22DB    			MOVWF	R_CaliCode0H	;/
0819  0212  0A82    			INCF	R_WorkStatus,1	;[R_WorkStatus]+1->R_WorkStatus
0820  0213  A2CC    			GOTO	L_DispCaliCode	;去显示内码
0821                L_CaliCode_1:
0822  0214  F885    			BTFSS	R_PubFlag0,4
0823  0215  A229    			GOTO	L_CaliCode_11	;[R_PubFlag0].4=0(无新的有效内码) 转
0824  0216  FA85    			BTFSS	R_PubFlag0,5
0825  0217  A229    			GOTO	L_CaliCode_11	;[R_PubFlag0].5=0(称重数据不稳定) 转
0826  0218  20A0    			MOVFW	R_ZeroCodeL		;\
0827  0219  228B    			MOVWF	R_PubReg4		; | [R_ZeroCodeH:R_ZeroCodeL]
0828  021A  20A1    			MOVFW	R_ZeroCodeH		; | ->R_PubReg5:R_PubReg4
0829  021B  228C    			MOVWF	R_PubReg5		;/
0830  021C  20DA    			MOVFW	R_CaliCode0L	;\
0831  021D  2287    			MOVWF	R_PubReg0		; | [R_CaliCode0H:R_CaliCode0L]
0832  021E  20DB    			MOVFW	R_CaliCode0H	; | ->R_PubReg1:R_PubReg0
0833  021F  2288    			MOVWF	R_PubReg1		;/
0834  0220  83BB    			CALL	S_CalcABS		;计算[R_PubReg5:R_PubReg4]-[R_PubReg1:R_PubReg0]绝对值->R_PubReg5:R_PubReg4
0835  0221  208C    			MOVFW	R_PubReg5
0836  0222  68FF    			ANDLW	0FFH
0837  0223  F004    			BTFSS	STATUS,Z
0838  0224  A229    			GOTO	L_CaliCode_11	;[R_PubReg5]>0 转
0839  0225  20A0    			MOVFW	R_ZeroCodeL		;\
0840  0226  22DA    			MOVWF	R_CaliCode0L	; | [R_ZeroCodeH:R_ZeroCodeL]
0841  0227  20A1    			MOVFW	R_ZeroCodeH		; | ->R_CaliCode0H:R_CaliCode0L 保存零点内码
0842  0228  22DB    			MOVWF	R_CaliCode0H	;/
0843                L_CaliCode_11:
0844  0229  EE92    			BTFSC	R_KeyStatus,7
0845  022A  A233    			GOTO	L_CaliCode_2	;[R_KeyStatus].7=1 转
0846  022B  E892    			BTFSC	R_KeyStatus,4	;[R_KeyStatus].7=0
0847  022C  A2CC    			GOTO	L_DispCaliCode	;[R_KeyStatus].4=1 转去显示内码
0848  022D  2093    			MOVFW	R_KeyCode
0849  022E  680F    			ANDLW	0FH
0850  022F  5806    			SUBLW	06H
0851  0230  E004    			BTFSC	STATUS,Z
0852  0231  A2DB    			GOTO	L_DispDate		;[R_KeyCode].2:0=6("TARE"键按下)转去显示日期
0853  0232  A2CC    			GOTO	L_DispCaliCode	;去显示内码
0854                L_CaliCode_2:
0855  0233  400C    			MOVLW	0CH
0856  0234  1893    			SUBWF	R_KeyCode,0
0857  0235  F004    			BTFSS	STATUS,Z
0858  0236  A2CB    			GOTO	L_CaliProcRet	;[R_KeyCode]≠0CH(不是"OFF"键短键释放) 转,返回
0859  0237  EA85    			BTFSC	R_PubFlag0,5
0860  0238  A23E    			GOTO	L_CaliCode_3	;[R_PubFlag0].5=1(称重数据稳定),转
0861  0239  209A    			MOVFW	R_LastAverageL	;\
0862  023A  22A3    			MOVWF	R_SteadyCodeL	; | [R_LastAverageH:R_LastAverageL]
0863  023B  209B    			MOVFW	R_LastAverageH	; | ->R_SteadyCodeH:R_SteadyCodeL 数据不稳,取当前的平均值
0864  023C  22A4    			MOVWF	R_SteadyCodeH	;/
0865  023D  A242    			GOTO	L_CaliCode_4
0866                L_CaliCode_3:
0867  023E  20A0    			MOVFW	R_ZeroCodeL		;\  称重数据稳定
0868  023F  22A3    			MOVWF	R_SteadyCodeL	; | [R_ZeroCodeH:R_ZeroCodeL]
0869  0240  20A1    			MOVFW	R_ZeroCodeH		; | ->R_SteadyCodeH:R_SteadyCodeL
0870  0241  22A4    			MOVWF	R_SteadyCodeH	;/
0871                L_CaliCode_4:
0872  0242  028E    			CLRF	R_PubCnt1		;0->R_PubCnt1
0873  0243  CE92    			BCF		R_KeyStatus,7	;0->R_KeyStatus.7
0874  0244  4070    			MOVLW	70H
0875  0245  2E92    			IORWF	R_KeyStatus,1	;07H->R_KeyStatus.7:4
0876  0246  0A82    			INCF	R_WorkStatus,1	;[R_WorkStatus]+1->R_WorkStatus
0877                ;
0878                L_CaliPara:							;标定功能状态字
0879  0247  FE92    			BTFSS	R_KeyStatus,7
0880  0248  A260    			GOTO	L_DispCaliP_0	;[R_KeyStatus].7=0 转 显示标定参数
0881  0249  4005    			MOVLW	05H
0882  024A  1893    			SUBWF	R_KeyCode,0
0883  024B  E004    			BTFSC	STATUS,Z
0884  024C  A284    			GOTO	L_AdjustPara	;[R_KeyCode]=05H(是"UNIT"键按下) 转 调整标定值
0885  024D  40F0    			MOVLW	0F0H
0886  024E  2892    			ANDWF	R_KeyStatus,0
0887  024F  5880    			SUBLW	80H
0888  0250  F004    			BTFSS	STATUS,Z
0889  0251  A256    			GOTO	L_CaliPara_1	;[R_KeyStatus].7:4≠8 转
0890  0252  4006    			MOVLW	06H
0891  0253  1893    			SUBWF	R_KeyCode,0
0892  0254  E004    			BTFSC	STATUS,Z
0893  0255  A281    			GOTO	L_SeleParaBit	;[R_KeyCode]=6("TARE"键按下) 转 选择标定数据位
0894                L_CaliPara_1:
0895  0256  400C    			MOVLW	0CH
0896  0257  1893    			SUBWF	R_KeyCode,0
0897  0258  E004    			BTFSC	STATUS,Z
0898  0259  A284    			GOTO	L_AdjustPara	;[R_KeyCode]=0CH("OFF"短键释放) 转 调整标定值
0899  025A  FA92    			BTFSS	R_KeyStatus,5
0900  025B  A260    			GOTO	L_DispCaliP_0	;[R_KeyStatus].5=0(按键未到2秒) 转
0901  025C  4004    			MOVLW	04H
0902  025D  1893    			SUBWF	R_KeyCode,0
0903  025E  E004    			BTFSC	STATUS,Z
0904  025F  A2A9    			GOTO	L_CaliNextPara	;[R_KeyCode]=04H("OFF"键按下2秒) 转 进入下一个项目

⌨️ 快捷键说明

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