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

📄 9821h620.lst

📁 用台湾富晶单片机开发的电子称包括源码和编译器
💻 LST
📖 第 1 页 / 共 5 页
字号:
0451  00E7  188C    			SUBWF	R_PubReg5,0
0452  00E8  F004    			BTFSS	STATUS,Z
0453  00E9  A119    			GOTO	L_MainAdcP_7	;[R_PubReg5]>0 (数据不稳) 转
0454  00EA  208B    			MOVFW	R_PubReg4
0455  00EB  18E3    			SUBWF	R_OffsetCode,0
0456  00EC  F204    			BTFSS	STATUS,C
0457  00ED  A119    			GOTO	L_MainAdcP_7	;[R_PubReg4]>[R_OffsetCode] (数据不稳) 转
0458  00EE  EA85    			BTFSC	R_PubFlag0,5
0459  00EF  A105    			GOTO	L_MainAdcP_5	;[R_PubFlag0].5=1(已锁定) 转
0460  00F0  20E2    			MOVFW	R_LockCodeNum
0461  00F1  189D    			SUBWF	R_SteadyCnt,0
0462  00F2  E204    			BTFSC	STATUS,C
0463  00F3  A0F6    			GOTO	L_MainAdcP_3	;[R_SteadyCnt]≥[R_LockCodeNum](稳定次数到)转
0464  00F4  0A9D    			INCF	R_SteadyCnt,1	;稳定次数未到,[R_SteadyCnt]+1->R_SteadyCnt
0465  00F5  A11D    			GOTO	L_MainAdcP_8
0466                L_MainAdcP_3:
0467  00F6  DA85    			BSF		R_PubFlag0,5	;1->R_PubFlag0.5 锁定
0468  00F7  EC85    			BTFSC	R_PubFlag0,6
0469  00F8  A0FB    			GOTO	L_MainAdcP_4	;[R_PubFlag0].6=1 转
0470  00F9  DC85    			BSF		R_PubFlag0,6	;1->R_PubFlag0.6
0471  00FA  DE85    			BSF		R_PubFlag0,7	;1->R_PubFlag0.7
0472                L_MainAdcP_4:
0473  00FB  2082    			MOVFW	R_WorkStatus
0474  00FC  6870    			ANDLW	70H
0475  00FD  7030    			XORLW	30H
0476  00FE  F004    			BTFSS	STATUS,Z
0477  00FF  A11D    			GOTO	L_MainAdcP_8	;[R_WorkStatus]的高4位≠3且≠B,转
0478  0100  209A    			MOVFW	R_LastAverageL	;\
0479  0101  22A0    			MOVWF	R_ZeroCodeL   	; | [R_LastAverageH:R_LastAverageL]->R_ZeroCodeH:R_ZeroCodeL
0480  0102  209B    			MOVFW	R_LastAverageH	; | 标定中保存当前锁定内码
0481  0103  22A1    			MOVWF	R_ZeroCodeH		;/
0482  0104  A11D    			GOTO	L_MainAdcP_8
0483                L_MainAdcP_5:
0484                ;			自动追重暂不处理
0485  0105  A11D    			GOTO	L_MainAdcP_8
0486                L_MainAdcP_6:
0487  0106  4001    			MOVLW	1
0488  0107  83A0    			CALL	S_ReadCode		;读当前内码->R_PubReg1:R_PubReg0
0489  0108  2087    			MOVFW	R_PubReg0		;\
0490  0109  229A    			MOVWF	R_LastAverageL	; | [R_PubReg1:R_PubReg0]->R_LastAverageH:R_LastAverageL
0491  010A  2088    			MOVFW	R_PubReg1		; |
0492  010B  229B    			MOVWF	R_LastAverageH	;/
0493  010C  4008    			MOVLW	8
0494  010D  2284    			MOVWF	R_Count			;8->R_Count
0495  010E  40F0    			MOVLW	R_CodeBuffer
0496  010F  2202    			MOVWF	FSR0			;R_CodeBuffer->FSR0
0497                L_MainAdcP_L1:
0498  0110  2087    			MOVFW	R_PubReg0
0499  0111  2200    			MOVWF	IND0
0500  0112  0A02    			INCF	FSR0,1
0501  0113  2088    			MOVFW	R_PubReg1
0502  0114  2200    			MOVWF	IND0
0503  0115  0A02    			INCF	FSR0,1
0504  0116  1684    			DECFSZ	R_Count,1
0505  0117  A110    			GOTO	L_MainAdcP_L1
0506  0118  02EF    			CLRF	R_CodePointer	;0->R_CodePointer
0507                L_MainAdcP_7:
0508  0119  CA85    			BCF		R_PubFlag0,5	;0->R_PubFlag0.5 (数据不稳)
0509  011A  029D    			CLRF	R_SteadyCnt		;0->R_SteadyCnt
0510  011B  029E    			CLRF	R_DifferenceL	;0->R_DifferenceL
0511  011C  029F    			CLRF	R_DifferenceH	;0->R_DifferenceH
0512                L_MainAdcP_8:
0513  011D  4001    			MOVLW	1
0514  011E  83A0    			CALL	S_ReadCode		;读当前内码->R_PubReg1:R_PubReg0
0515  011F  D886    			BSF		R_PubFlag1,4	;1->R_PubFlag1.4
0516  0120  4024    			MOVLW	D_OverCodeL		;\
0517  0121  1887    			SUBWF	R_PubReg0,0		; | [R_PubReg1:R_PubReg0]-D_OverCodeH:D_OverCodeL
0518  0122  40F4    			MOVLW	D_OverCodeH		; | (内码超载判断)
0519  0123  3888    			SUBWFC	R_PubReg1,0		;/
0520  0124  F204    			BTFSS	STATUS,C
0521  0125  C886    			BCF		R_PubFlag1,4	;内码不超载,0->R_PubFlag1.4
0522  0126  FA85    			BTFSS	R_PubFlag0,5
0523  0127  A131    			GOTO	L_Main_5		;[R_PubFlag0].5=0(内码未锁定) 转
0524  0128  FE85    			BTFSS	R_PubFlag0,7
0525  0129  A131    			GOTO	L_Main_5		;[R_PubFlag0].7=0, 转
0526  012A  CE85    			BCF		R_PubFlag0,7	;0->R_PubFlag0.7
0527  012B  E886    			BTFSC	R_PubFlag1,4
0528  012C  A131    			GOTO	L_Main_5		;[R_PubFlag1]=1(内码超载) 转
0529  012D  209A    			MOVFW	R_LastAverageL	;\
0530  012E  22A0    			MOVWF	R_ZeroCodeL   	; | [R_LastAverageH:R_LastAverageL]->R_ZeroCodeH:R_ZeroCodeL
0531  012F  209B    			MOVFW	R_LastAverageH	; | 保存零点内码
0532  0130  22A1    			MOVWF	R_ZeroCodeH		;/
0533                L_Main_5:
0534  0131  FE92    			BTFSS	R_KeyStatus,7
0535  0132  A14D    			GOTO	L_Main_6		;[R_KeyStatus].7=0 转
0536                ;            CALL    S_CalcDelay	;计算自动关机时间(单位:秒)->3DH:3CH
0537  0133  2082    			MOVFW	R_WorkStatus
0538  0134  6870    			ANDLW	70H
0539  0135  7030    			XORLW	30H
0540  0136  E004    			BTFSC	STATUS,Z
0541  0137  A14D    			GOTO	L_Main_6		;[R_WorkStatus]的高4位=3或=B(标定状态),转
0542  0138  400C    			MOVLW	0CH
0543  0139  1893    			SUBWF	R_KeyCode,0
0544  013A  F004    			BTFSS	STATUS,Z
0545  013B  A13E    			GOTO	L_Main_51		;[R_KeyCode]≠0CH(不是"OFF"键短键释放) 转
0546  013C  4040    			MOVLW	40H				;"OFF"键短键释放
0547  013D  2282    			MOVWF	R_WorkStatus	;40H->R_WorkStatus 关机
0548                L_Main_51:			
0549  013E  40E5    			MOVLW	0E5H
0550  013F  1892    			SUBWF	R_KeyStatus,0
0551  0140  F004    			BTFSS	STATUS,Z
0552  0141  A14D    			GOTO	L_Main_6		;[R_KeyStatus]≠0E5H 转
0553  0142  4030    			MOVLW	30H
0554  0143  2282    			MOVWF	R_WorkStatus	;同时按"OFF"+"TARE"键5秒以上进入标定状态
0555  0144  02A0    			CLRF	R_ZeroCodeL		;0->R_ZeroCodeL
0556  0145  02A1    			CLRF	R_ZeroCodeH		;0->R_ZeroCodeH
0557  0146  02A3    			CLRF	R_SteadyCodeL	;0->R_SteadyCodeL
0558  0147  02A4    			CLRF	R_SteadyCodeH	;0->R_SteadyCodeH
0559  0148  CA85    			BCF		R_PubFlag0,5	;0->R_PubFlag0.5
0560  0149  DC85    			BSF		R_PubFlag0,6	;1->R_PubFlag0.6
0561  014A  CE92    			BCF		R_KeyStatus,7	;0->R_KeyStatus.7
0562  014B  CC92    			BCF		R_KeyStatus,6	;0->R_KeyStatus.6
0563  014C  D892    			BSF		R_KeyStatus,4	;1->R_KeyStatus.4
0564                L_Main_6:
0565  014D  8153    			CALL	S_MainFunc		;主要功能
0566  014E  CE92    			BCF		R_KeyStatus,7	;0->R_KeyStatus.7
0567  014F  C885    			BCF		R_PubFlag0,4	;0->R_PubFlag0.4
0568  0150  C285    			BCF		R_PubFlag0,1	;0->R_PubFlag0.1
0569  0151  C085    			BCF		R_PubFlag0,0	;0->R_PubFlag0.0
0570  0152  A07B    			GOTO	L_MainLoop
0571                ;------------------------------------------------------------------------------
0572                ;子程序S_MainFunc		;主要功能
0573                S_MainFunc:
0574  0153  FE82    			BTFSS	R_WorkStatus,7
0575  0154  A15D    			GOTO	L_MainFunc_1	;[R_WorkStatus].7=0 转
0576  0155  208E    			MOVFW	R_PubCnt1
0577  0156  68FF    			ANDLW	0FFH
0578  0157  E004    			BTFSC	STATUS,Z
0579  0158  A15D    			GOTO	L_MainFunc_1	;[R_PubCnt1]=0 转
0580  0159  F085    			BTFSS	R_PubFlag0,0
0581  015A  A16B    			GOTO	L_MainFuncRet	;[R_PubFlag0].0=0(未到1/16秒) 转,返回
0582  015B  168E    			DECFSZ	R_PubCnt1,1		;[R_PubCnt1]-1->R_PubCnt1
0583  015C  A16B    			GOTO	L_MainFuncRet	;[R_PubCnt1]>0 转,返回
0584                L_MainFunc_1:
0585  015D  CE82    			BCF		R_WorkStatus,7	;0->R_WorkStatus.7
0586  015E  40F0    			MOVLW	0F0H
0587  015F  2882    			ANDWF	R_WorkStatus,0
0588  0160  E004    			BTFSC	STATUS,Z
0589  0161  A16C    			GOTO	L_MainFunc0		;[R_WorkStatus].7:4=0 转
0590  0162  44F0    			ADDLW	0F0H
0591  0163  E004    			BTFSC	STATUS,Z
0592  0164  A180    			GOTO	L_CalcHeft		;[R_WorkStatus].7:4=1 转 计算并显示重量值
0593  0165  44E0    			ADDLW	0E0H
0594  0166  E004    			BTFSC	STATUS,Z
0595  0167  A206    			GOTO	L_CaliProc		;[R_WorkStatus].7:4=3 转 标定处理
0596  0168  44F0    			ADDLW	0F0H
0597  0169  E004    			BTFSC	STATUS,Z
0598  016A  A2E7    			GOTO	L_OFF_Proc		;[R_WorkStatus].7:4=4 转 关机处理
0599                L_MainFuncRet:
0600  016B  0003    			RETURN
0601                ;------------------------------------------------------------------------------
0602                L_MainFunc0:						;找零点
0603  016C  E0CF    			BTFSC	R_DispFlag,0
0604  016D  A174    			GOTO	L_BattLowProc	;[R_DispFlag].0=1(电池电压低) 转
0605                ;
0606  016E  82CC    			CALL	S_DispCaliCode	;去显示内码
0607                ;			CALL	S_ClrDisp		;清LCD显示缓冲区LCD1-LCD6
0608                ;			INCF	R_WorkStatus,1	;[R_WorkStatus]+1->R_WorkStatus
0609                ;			BCF		R_WorkStatus,2	;0->R_WorkStatus.2
0610                ;			MOVFW	R_WorkStatus
0611                ;			ANDLW	03H
0612                ;			SUBLW	R_DispBuff3
0613                ;			MOVWF	FSR0
0614                ;			MOVLW	08H
0615                ;			MOVWF	IND0			;08H("8")->IND0
0616                ;			MOVLW	08H
0617                ;			MOVWF	R_DispMode		;1->R_DispMode.3 显示提示信息
0618                ;			CALL	S_Display		;显示
0619                ;			MOVLW	08H
0620                ;			MOVWF	R_PubCnt1		;08H->R_PubCnt1,定时0.5秒
0621                ;			BSF		R_WorkStatus,7	;1->R_WorkStatus.7
0622                ;
0623  016F  FC85    			BTFSS	R_PubFlag0,6
0624  0170  A173    			GOTO	L_MainFunc0Ret	;[R_PubFlag0].6=0 转
0625  0171  4010    			MOVLW	10H
0626  0172  2282    			MOVWF	R_WorkStatus	;10H->R_WorkStatus 进入称重状态
0627                ;            CALL    S_CalcDelay	;计算自动关机时间(单位:秒)->3DH:3CH
0628                L_MainFunc0Ret:
0629  0173  0003    			RETURN
0630                L_BattLowProc:						;电池低电压处理
0631  0174  4020    			MOVLW	20H
0632  0175  228E    			MOVWF	R_PubCnt1		;20H->R_PubCnt1,定时2秒
0633  0176  40C0    			MOVLW	0C0H
0634  0177  2282    			MOVWF	R_WorkStatus	;0C0H->R_WorkStatus,2秒后关机
0635  0178  84A4    			CALL	S_ClrDisp		;清LCD显示缓冲区LCD1-LCD6
0636  0179  4012    			MOVLW	12H
0637  017A  22CC    			MOVWF	R_DispBuff2		;12H("L")->R_DispBuff2
0638  017B  4013    			MOVLW	13H
0639  017C  22CB    			MOVWF	R_DispBuff1		;13H("o")->R_DispBuff1
0640  017D  4008    			MOVLW	08H
0641  017E  22C9    			MOVWF	R_DispMode		;1->R_DispMode.3 显示提示信息
0642  017F  A4C0    			GOTO	S_Display		;去显示"  Lo "
0643                ;------------------------------------------------------------------------------
0644                L_CalcHeft:							;计算并显示重量值
0645                ;			GOTO	L_DispCaliCode	;去显示内码
0646                ;下面计算出重量值,并根据公/英制要求送显示缓冲区
0647                L_CalcHeft4:
0648  0180  F885    			BTFSS	R_PubFlag0,4
0649  0181  A1FC    			GOTO	L_CalcHeftRet	;[R_PubFlag0].4=0(无新的有效内码) 转,返回
0650  0182  4001    			MOVLW	01H
0651  0183  2ACF    			ANDWF	R_DispFlag,1	;0->R_DispFlag.7:1
0652  0184  E886    			BTFSC	R_PubFlag1,4
0653  0185  A1FD    			GOTO	L_DispOverErr	;[R_PubFlag1].4=1(超载) 转,显示超载错误
0654  0186  20A0    			MOVFW	R_ZeroCodeL		;\
0655  0187  2287    			MOVWF	R_PubReg0		; | [R_ZeroCodeH:R_ZeroCodeL] (零点内码)
0656  0188  20A1    			MOVFW	R_ZeroCodeH		; | ->R_PubReg1:R_PubReg0
0657  0189  2288    			MOVWF	R_PubReg1		;/
0658  018A  209A    			MOVFW	R_LastAverageL	;\
0659  018B  228B    			MOVWF	R_PubReg4		; | [R_LastAverageH:R_LastAverageL] (当前平均内码)
0660  018C  209B    			MOVFW	R_LastAverageH	; | ->R_PubReg5:R_PubReg4
0661  018D  228C    			MOVWF	R_PubReg5		;/
0662                ;;
0663                ;			MOVFW	R_PubReg4
0664                ;			MOVWF	R_PubReg2
0665                ;			MOVFW	R_PubReg5
0666                ;			MOVWF	R_PubReg3
0667                ;			GOTO	L_DispHeft
0668                ;;
0669  018E  83BB    			CALL	S_CalcABS		;计算[R_PubReg5:R_PubReg4]-[R_PubReg1:R_PubReg0]绝对值->R_PubReg5:R_PubReg4
0670  018F  E686    			BTFSC	R_PubFlag1,3
0671  0190  D4CF    			BSF		R_DispFlag,2	;[R_PubFlag1].3=1,1->R_DispFlag.2 显示负号
0672  0191  20DC    			MOVFW	R_CaliDataL		;\
0673  0192  2289    			MOVWF	R_PubReg2		; | 重量标定数据[R_CaliDataH:R_CaliDataL]
0674  0193  20DD    			MOVFW	R_CaliDataH		; | ->R_PubReg3:R_PubReg2
0675  0194  228A    			MOVWF	R_PubReg3		;/
0676  0195  8514    			CALL	S_Multi			;[R_PubReg3:R_PubReg2]×[R_PubReg5:R_PubReg4]->R_PubReg3:R_PubReg0
0677  0196  208A    			MOVFW	R_PubReg3

⌨️ 快捷键说明

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