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

📄 9821h621.lst

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

⌨️ 快捷键说明

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