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

📄 9821h621.lst

📁 用台湾富晶单片机开发的电子称包括源码和编译器
💻 LST
📖 第 1 页 / 共 5 页
字号:
0433  00C8  3888    			SUBWFC	R_PubReg1,0		; / 
0434  00C9  228C    			MOVWF	R_PubReg5		;/
0435  00CA  2087    			MOVFW	R_PubReg0		;\
0436  00CB  229A    			MOVWF	R_LastAverageL	; | [R_PubReg1:R_PubReg0]->R_LastAverageH:R_LastAverageL
0437  00CC  2088    			MOVFW	R_PubReg1		; |
0438  00CD  229B    			MOVWF	R_LastAverageH	;/
0439  00CE  208B    			MOVFW	R_PubReg4		;\
0440  00CF  069C    			ADDWF	R_DifferenceL,1	; | [R_DifferenceH:R_DifferenceL]+[R_PubReg5:R_PubReg4]
0441  00D0  208C    			MOVFW	R_PubReg5		; | ->R_DifferenceH:R_DifferenceL (累计差值)
0442  00D1  269D    			ADDWFC	R_DifferenceH,1	;/
0443  00D2  209C    			MOVFW	R_DifferenceL	;\
0444  00D3  228B    			MOVWF	R_PubReg4		; | [R_DifferenceH:R_DifferenceL]
0445  00D4  209D    			MOVFW	R_DifferenceH	; | ->R_PubReg5:R_PubReg4
0446  00D5  228C    			MOVWF	R_PubReg5		;/
0447  00D6  FE8C    			BTFSS	R_PubReg5,7
0448  00D7  A0D9    			GOTO	L_MainAdcP_2	;[R_PubReg5].7=0(正数) 转
0449  00D8  83FA    			CALL	S_CalcABS1		;计算[R_PubReg5:R_PubReg4]的补码->R_PubReg5:R_PubReg4
0450                L_MainAdcP_2:			
0451  00D9  4000    			MOVLW	0
0452  00DA  188C    			SUBWF	R_PubReg5,0
0453  00DB  F004    			BTFSS	STATUS,Z
0454  00DC  A10D    			GOTO	L_MainAdcP_7	;[R_PubReg5]>0 (数据不稳) 转
0455  00DD  208B    			MOVFW	R_PubReg4
0456  00DE  18E3    			SUBWF	R_OffsetCode,0
0457  00DF  F204    			BTFSS	STATUS,C
0458  00E0  A10D    			GOTO	L_MainAdcP_7	;[R_PubReg4]>[R_OffsetCode] (数据不稳) 转
0459  00E1  EA85    			BTFSC	R_PubFlag0,5
0460  00E2  A0F9    			GOTO	L_MainAdcP_5	;[R_PubFlag0].5=1(已锁定) 转
0461  00E3  20E2    			MOVFW	R_LockCodeNum
0462  00E4  18A2    			SUBWF	R_SteadyCnt,0
0463  00E5  E204    			BTFSC	STATUS,C
0464  00E6  A0E9    			GOTO	L_MainAdcP_3	;[R_SteadyCnt]≥[R_LockCodeNum](稳定次数到)转
0465  00E7  0AA2    			INCF	R_SteadyCnt,1	;稳定次数未到,[R_SteadyCnt]+1->R_SteadyCnt
0466  00E8  A112    			GOTO	L_MainAdcP_8
0467                L_MainAdcP_3:
0468  00E9  DA85    			BSF		R_PubFlag0,5	;1->R_PubFlag0.5 锁定
0469  00EA  EC85    			BTFSC	R_PubFlag0,6
0470  00EB  A0EE    			GOTO	L_MainAdcP_4	;[R_PubFlag0].6=1 转
0471  00EC  DC85    			BSF		R_PubFlag0,6	;1->R_PubFlag0.6
0472  00ED  DE85    			BSF		R_PubFlag0,7	;1->R_PubFlag0.7
0473                L_MainAdcP_4:
0474  00EE  2082    			MOVFW	R_WorkStatus
0475  00EF  6870    			ANDLW	70H
0476  00F0  7030    			XORLW	30H
0477  00F1  F004    			BTFSS	STATUS,Z
0478  00F2  A0F8    			GOTO	L_MainAdcP_41	;[R_WorkStatus]的高4位≠3且≠B,转
0479  00F3  209A    			MOVFW	R_LastAverageL	;\
0480  00F4  229E    			MOVWF	R_ZeroCodeL   	; | [R_LastAverageH:R_LastAverageL]->R_ZeroCodeH:R_ZeroCodeL
0481  00F5  209B    			MOVFW	R_LastAverageH	; | 标定中保存当前锁定内码
0482  00F6  229F    			MOVWF	R_ZeroCodeH		;/
0483  00F7  A112    			GOTO	L_MainAdcP_8
0484                L_MainAdcP_41:
0485  00F8  A112    			GOTO	L_MainAdcP_8
0486                ;
0487                L_MainAdcP_5:
0488  00F9  A112    			GOTO	L_MainAdcP_8
0489                L_MainAdcP_6:
0490  00FA  4001    			MOVLW	1
0491  00FB  83D7    			CALL	S_ReadCode		;读当前内码->R_PubReg1:R_PubReg0
0492  00FC  2087    			MOVFW	R_PubReg0		;\
0493  00FD  229A    			MOVWF	R_LastAverageL	; | [R_PubReg1:R_PubReg0]->R_LastAverageH:R_LastAverageL
0494  00FE  2088    			MOVFW	R_PubReg1		; |
0495  00FF  229B    			MOVWF	R_LastAverageH	;/
0496  0100  4008    			MOVLW	8
0497  0101  2284    			MOVWF	R_Count			;8->R_Count
0498  0102  40F0    			MOVLW	R_CodeBuffer
0499  0103  2202    			MOVWF	FSR0			;R_CodeBuffer->FSR0
0500                L_MainAdcP_L1:
0501  0104  2087    			MOVFW	R_PubReg0
0502  0105  2200    			MOVWF	IND0
0503  0106  0A02    			INCF	FSR0,1
0504  0107  2088    			MOVFW	R_PubReg1
0505  0108  2200    			MOVWF	IND0
0506  0109  0A02    			INCF	FSR0,1
0507  010A  1684    			DECFSZ	R_Count,1
0508  010B  A104    			GOTO	L_MainAdcP_L1
0509  010C  02EF    			CLRF	R_CodePointer	;0->R_CodePointer
0510                L_MainAdcP_7:
0511  010D  CA85    			BCF		R_PubFlag0,5	;0->R_PubFlag0.5 (数据不稳)
0512  010E  02A2    			CLRF	R_SteadyCnt		;0->R_SteadyCnt
0513  010F  029C    			CLRF	R_DifferenceL	;0->R_DifferenceL
0514  0110  029D    			CLRF	R_DifferenceH	;0->R_DifferenceH
0515  0111  02A3    			CLRF    R_2dWeightCnt   ;0->R_2dWeightCnt
0516                L_MainAdcP_8:
0517  0112  4001    			MOVLW	1
0518  0113  83D7    			CALL	S_ReadCode		;读当前内码->R_PubReg1:R_PubReg0
0519  0114  D886    			BSF		R_PubFlag1,4	;1->R_PubFlag1.4
0520  0115  4024    			MOVLW	D_OverCodeL		;\
0521  0116  1887    			SUBWF	R_PubReg0,0		; | [R_PubReg1:R_PubReg0]-D_OverCodeH:D_OverCodeL
0522  0117  40F4    			MOVLW	D_OverCodeH		; | (内码超载判断)
0523  0118  3888    			SUBWFC	R_PubReg1,0		;/
0524  0119  F204    			BTFSS	STATUS,C
0525  011A  C886    			BCF		R_PubFlag1,4	;0->R_PubFlag1.4
0526  011B  FA85    			BTFSS	R_PubFlag0,5
0527  011C  A126    			GOTO	L_Main_5		;[R_PubFlag0].5=0(内码未锁定) 转
0528  011D  FE85    			BTFSS	R_PubFlag0,7
0529  011E  A126    			GOTO	L_Main_5		;[R_PubFlag0].7=0, 转
0530  011F  CE85    			BCF		R_PubFlag0,7	;0->R_PubFlag0.7
0531  0120  E886    			BTFSC	R_PubFlag1,4
0532  0121  A126    			GOTO	L_Main_5		;[R_PubFlag1].4=1 转
0533  0122  209A    			MOVFW	R_LastAverageL	;\
0534  0123  229E    			MOVWF	R_ZeroCodeL   	; | [R_LastAverageH:R_LastAverageL]->R_ZeroCodeH:R_ZeroCodeL
0535  0124  209B    			MOVFW	R_LastAverageH	; | 保存零点内码
0536  0125  229F    			MOVWF	R_ZeroCodeH		;/
0537                L_Main_5:
0538  0126  FE92    			BTFSS	R_KeyStatus,7
0539  0127  A13C    			GOTO	L_Main_6		;[R_KeyStatus].7=0 转
0540  0128  8356                CALL    S_CalcOffTime	;计算自动关机时间(单位:秒)->R_OffTimerH:R_OffTimerL
0541  0129  2082    			MOVFW	R_WorkStatus
0542  012A  6870    			ANDLW	70H
0543  012B  7030    			XORLW	30H
0544  012C  E004    			BTFSC	STATUS,Z
0545  012D  A13C    			GOTO	L_Main_6		;[R_WorkStatus]的高4位=3或=B(标定状态),转
0546  012E  400C    			MOVLW	0CH
0547  012F  1893    			SUBWF	R_KeyCode,0
0548  0130  F004    			BTFSS	STATUS,Z
0549  0131  A13C    			GOTO	L_Main_6		;[R_KeyCode]≠0CH(不是"Cali"键短键释放) 转
0550  0132  4030    			MOVLW	30H
0551  0133  2282    			MOVWF	R_WorkStatus	;"Cali"键短键释放进入标定状态
0552  0134  029E    			CLRF	R_ZeroCodeL		;0->R_ZeroCodeL
0553  0135  029F    			CLRF	R_ZeroCodeH		;0->R_ZeroCodeH
0554  0136  CA85    			BCF		R_PubFlag0,5	;0->R_PubFlag0.5
0555  0137  DC85    			BSF		R_PubFlag0,6	;1->R_PubFlag0.6
0556  0138  CE92    			BCF		R_KeyStatus,7	;0->R_KeyStatus.7
0557  0139  CC92    			BCF		R_KeyStatus,6	;0->R_KeyStatus.6
0558  013A  D892    			BSF		R_KeyStatus,4	;1->R_KeyStatus.4
0559  013B  CA86    			BCF		R_PubFlag1,5	;0->R_PubFlag1.5
0560                L_Main_6:
0561  013C  8142    			CALL	S_MainFunc		;主要功能
0562  013D  CE92    			BCF		R_KeyStatus,7	;0->R_KeyStatus.7
0563  013E  C885    			BCF		R_PubFlag0,4	;0->R_PubFlag0.4
0564  013F  C285    			BCF		R_PubFlag0,1	;0->R_PubFlag0.1
0565  0140  C085    			BCF		R_PubFlag0,0	;0->R_PubFlag0.0
0566  0141  A077    			GOTO	L_MainLoop
0567                ;------------------------------------------------------------------------------
0568                ;子程序S_MainFunc		;主要功能
0569                S_MainFunc:
0570  0142  FE82    			BTFSS	R_WorkStatus,7
0571  0143  A14C    			GOTO	L_MainFunc_1	;[R_WorkStatus].7=0 转
0572  0144  208E    			MOVFW	R_PubCnt1
0573  0145  68FF    			ANDLW	0FFH
0574  0146  E004    			BTFSC	STATUS,Z
0575  0147  A14C    			GOTO	L_MainFunc_1	;[R_PubCnt1]=0 转
0576  0148  F085    			BTFSS	R_PubFlag0,0
0577  0149  A15A    			GOTO	L_MainFuncRet	;[R_PubFlag0].0=0(未到1/16秒) 转,返回
0578  014A  168E    			DECFSZ	R_PubCnt1,1		;[R_PubCnt1]-1->R_PubCnt1
0579  014B  A15A    			GOTO	L_MainFuncRet	;[R_PubCnt1]>0 转,返回
0580                L_MainFunc_1:
0581  014C  CE82    			BCF		R_WorkStatus,7	;0->R_WorkStatus.7
0582  014D  40F0    			MOVLW	0F0H
0583  014E  2882    			ANDWF	R_WorkStatus,0
0584  014F  E004    			BTFSC	STATUS,Z
0585  0150  A15B    			GOTO	L_MainFunc0		;[R_WorkStatus].7:4=0 转
0586  0151  44F0    			ADDLW	0F0H
0587  0152  E004    			BTFSC	STATUS,Z
0588  0153  A178    			GOTO	L_CalcHeft		;[R_WorkStatus].7:4=1 转 计算并显示重量值
0589  0154  44E0    			ADDLW	0E0H
0590  0155  E004    			BTFSC	STATUS,Z
0591  0156  A273    			GOTO	L_CaliProc		;[R_WorkStatus].7:4=3 转 标定处理
0592  0157  44F0    			ADDLW	0F0H
0593  0158  E004    			BTFSC	STATUS,Z
0594  0159  A313    			GOTO	L_OFF_Proc		;[R_WorkStatus].7:4=4 转 关机处理
0595                L_MainFuncRet:
0596  015A  0003    			RETURN
0597                ;------------------------------------------------------------------------------
0598                L_MainFunc0:						;找零点
0599  015B  F0CF    			BTFSS	R_DispFlag,0
0600  015C  A15E    			GOTO    L_MainFunc0_0   ;[R_DispFlag].0=0(电池电压正常) 转
0601  015D  0AAA    			INCF    R_BattLowCnt,1  ;[R_DispFlag].0=1(电池电压低),[R_BattLowCnt]+1->R_BattLowCnt
0602                ;			MOVLW   4
0603                ;			SUBWF   R_BattLowCnt,0
0604                ;			BTFSC   STATUS,C
0605                ;			GOTO	L_BattLowProc	;[R_BattLowCnt]≥4 转
0606                L_MainFunc0_0:
0607  015E  F0CF    			BTFSS	R_DispFlag,0
0608  015F  02AA                CLRF    R_BattLowCnt    ;[R_DispFlag].0=0(电池电压正常),0->R_BattLowCnt
0609                ;
0610                ;			CALL	S_DispCaliCode	;去显示内码
0611                ;
0612  0160  FC85    			BTFSS	R_PubFlag0,6
0613  0161  A16B    			GOTO	L_MainFunc0Ret	;[R_PubFlag0].6=0 转
0614  0162  E082    			BTFSC   R_WorkStatus,0
0615  0163  A168    			GOTO    L_MainFunc0_1   ;[R_WorkStatus].0=1 转
0616  0164  DE20    			BSF     PT1,7           ;1->PT1.7 点亮背光灯
0617  0165  D082    			BSF     R_WorkStatus,0  ;1->R_WorkStatus.0
0618  0166  0285    			CLRF    R_PubFlag0,6    ;0->R_PubFlag0.6
0619  0167  A16A    			GOTO    L_MainFunc0_2
0620                L_MainFunc0_1:
0621  0168  4010    			MOVLW	10H
0622  0169  2282    			MOVWF	R_WorkStatus	;10H->R_WorkStatus 进入称重状态
0623                L_MainFunc0_2:
0624  016A  8356                CALL    S_CalcOffTime	;计算自动关机时间(单位:秒)->R_OffTimerH:R_OffTimerL
0625                L_MainFunc0Ret:
0626  016B  0003    			RETURN
0627                L_BattLowProc:						;电池低电压处理
0628  016C  4020    			MOVLW	20H
0629  016D  228E    			MOVWF	R_PubCnt1		;20H->R_PubCnt1,定时2秒
0630  016E  40C0    			MOVLW	0C0H
0631  016F  2282    			MOVWF	R_WorkStatus	;0C0H->R_WorkStatus,2秒后关机
0632  0170  8482    			CALL	S_ClrDisp		;清LCD显示缓冲区LCD1-LCD6
0633  0171  4012    			MOVLW	12H
0634  0172  22CC    			MOVWF	R_DispBuff2		;12H("L")->R_DispBuff2
0635  0173  4013    			MOVLW	13H
0636  0174  22CB    			MOVWF	R_DispBuff1		;13H("o")->R_DispBuff1
0637  0175  4008    			MOVLW	08H
0638  0176  22C9    			MOVWF	R_DispMode		;1->R_DispMode.3 显示提示信息
0639  0177  A49E    			GOTO	S_Display		;去显示"  Lo "
0640                ;------------------------------------------------------------------------------
0641                ;下面计算出重量值,并根据公/英制要求送显示缓冲区
0642                L_CalcHeft:							;计算并显示重量值
0643  0178  F885    			BTFSS	R_PubFlag0,4
0644  0179  A25E    			GOTO	L_CalcHeftRet	;[R_PubFlag0].4=0(无新的有效内码) 转,返回
0645  017A  4001    			MOVLW	01H
0646  017B  2ACF    			ANDWF	R_DispFlag,1	;0->R_DispFlag.7:1
0647  017C  E886    			BTFSC	R_PubFlag1,4
0648  017D  A26A    			GOTO	L_DispOverErr	;[R_PubFlag1].4=1(超载) 转,显示超载错误
0649                L_CalcHeft_1:
0650  017E  209E    			MOVFW   R_ZeroCodeL     ;\

⌨️ 快捷键说明

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