9821h620.lst

来自「用台湾富晶单片机开发的电子称包括源码和编译器」· LST 代码 · 共 1,084 行 · 第 1/5 页

LST
1,084 行
字号
0431  00D0  A146    			GOTO	L_MainAdcP_6	;[R_PubReg5:R_PubReg4]≥[R_10dCodeH:R_10dCodeL] (数据不稳)转
0432  00D1  4008    			MOVLW	8
0433  00D2  846C    			CALL	S_ReadCode	;计算最近4次的内码的平均值->R_PubReg1:R_PubReg0
0434  00D3  209A    			MOVFW	R_LastAverageL	;\
0435  00D4  1887    			SUBWF	R_PubReg0,0		; \
0436  00D5  228B    			MOVWF	R_PubReg4		;  | [R_PubReg1:R_PubReg0]-[R_LastAverageH:R_LastAverageL]
0437  00D6  209B    			MOVFW	R_LastAverageH	;  | ->R_PubReg5:R_PubReg4
0438  00D7  3888    			SUBWFC	R_PubReg1,0		; / 
0439  00D8  228C    			MOVWF	R_PubReg5		;/
0440  00D9  2087    			MOVFW	R_PubReg0		;\
0441  00DA  229A    			MOVWF	R_LastAverageL	; | [R_PubReg1:R_PubReg0]->R_LastAverageH:R_LastAverageL
0442  00DB  2088    			MOVFW	R_PubReg1		; |
0443  00DC  229B    			MOVWF	R_LastAverageH	;/
0444  00DD  208B    			MOVFW	R_PubReg4		;\
0445  00DE  069E    			ADDWF	R_DifferenceL,1	; | [R_DifferenceH:R_DifferenceL]+[R_PubReg5:R_PubReg4]
0446  00DF  208C    			MOVFW	R_PubReg5		; | ->R_DifferenceH:R_DifferenceL (累计差值)
0447  00E0  269F    			ADDWFC	R_DifferenceH,1	;/
0448  00E1  209E    			MOVFW	R_DifferenceL	;\
0449  00E2  228B    			MOVWF	R_PubReg4		; | [R_DifferenceH:R_DifferenceL]
0450  00E3  209F    			MOVFW	R_DifferenceH	; | ->R_PubReg5:R_PubReg4
0451  00E4  228C    			MOVWF	R_PubReg5		;/
0452  00E5  FE8C    			BTFSS	R_PubReg5,7
0453  00E6  A0E8    			GOTO	L_MainAdcP_2	;[R_PubReg5].7=0(正数) 转
0454  00E7  848F    			CALL	S_CalcABS1		;计算[R_PubReg5:R_PubReg4]的补码->R_PubReg5:R_PubReg4
0455                L_MainAdcP_2:			
0456  00E8  4000    			MOVLW	0
0457  00E9  188C    			SUBWF	R_PubReg5,0
0458  00EA  F004    			BTFSS	STATUS,Z
0459  00EB  A159    			GOTO	L_MainAdcP_7	;[R_PubReg5]>0 (数据不稳) 转
0460  00EC  208B    			MOVFW	R_PubReg4
0461  00ED  18E3    			SUBWF	R_OffsetCode,0
0462  00EE  F204    			BTFSS	STATUS,C
0463  00EF  A159    			GOTO	L_MainAdcP_7	;[R_PubReg4]>[R_OffsetCode] (数据不稳) 转
0464  00F0  EA85    			BTFSC	R_PubFlag0,5
0465  00F1  A10C    			GOTO	L_MainAdcP_5	;[R_PubFlag0].5=1(已锁定) 转
0466  00F2  20E2    			MOVFW	R_LockCodeNum
0467  00F3  189D    			SUBWF	R_SteadyCnt,0
0468  00F4  E204    			BTFSC	STATUS,C
0469  00F5  A0F8    			GOTO	L_MainAdcP_3	;[R_SteadyCnt]≥[R_LockCodeNum](稳定次数到)转
0470  00F6  0A9D    			INCF	R_SteadyCnt,1	;稳定次数未到,[R_SteadyCnt]+1->R_SteadyCnt
0471  00F7  A15F    			GOTO	L_MainAdcP_8
0472                L_MainAdcP_3:
0473  00F8  DA85    			BSF		R_PubFlag0,5	;1->R_PubFlag0.5 锁定
0474  00F9  EC85    			BTFSC	R_PubFlag0,6
0475  00FA  A0FD    			GOTO	L_MainAdcP_4	;[R_PubFlag0].6=1 转
0476  00FB  DC85    			BSF		R_PubFlag0,6	;1->R_PubFlag0.6
0477  00FC  DE85    			BSF		R_PubFlag0,7	;1->R_PubFlag0.7
0478                L_MainAdcP_4:
0479  00FD  2082    			MOVFW	R_WorkStatus
0480  00FE  6870    			ANDLW	70H
0481  00FF  7030    			XORLW	30H
0482  0100  F004    			BTFSS	STATUS,Z
0483  0101  A107    			GOTO	L_MainAdcP_41	;[R_WorkStatus]的高4位≠3且≠B,转
0484  0102  209A    			MOVFW	R_LastAverageL	;\
0485  0103  22A0    			MOVWF	R_ZeroCodeL   	; | [R_LastAverageH:R_LastAverageL]->R_ZeroCodeH:R_ZeroCodeL
0486  0104  209B    			MOVFW	R_LastAverageH	; | 标定中保存当前锁定内码
0487  0105  22A1    			MOVWF	R_ZeroCodeH		;/
0488  0106  A15F    			GOTO	L_MainAdcP_8
0489                L_MainAdcP_41:
0490  0107  209A    			MOVFW	R_LastAverageL	;\
0491  0108  22A3    			MOVWF	R_SteadyCodeL	; | [R_LastAverageH:R_LastAverageL]
0492  0109  209B    			MOVFW	R_LastAverageH	; | ->R_SteadyCodeH:R_SteadyCodeL 保存稳定内码数据
0493  010A  22A4    			MOVWF	R_SteadyCodeH	;/
0494  010B  A15F    			GOTO	L_MainAdcP_8
0495                ;
0496                L_MainAdcP_5:
0497  010C  ECD2                BTFSC   R_CaliP1L,6
0498  010D  A15F    			GOTO	L_MainAdcP_8    ;[R_CaliP1L].6=1(无自动追重) 转
0499  010E  2082    			MOVFW	R_WorkStatus
0500  010F  6870    			ANDLW	70H
0501  0110  7030    			XORLW	30H
0502  0111  E004    			BTFSC	STATUS,Z
0503  0112  A15F    			GOTO	L_MainAdcP_8	;[R_WorkStatus]的高4位=3或=B(标定中),转
0504                ;            DECFSZ  R_TraceCnt,1
0505                ;            GOTO    L_MainAdcP_8    ;[R_TraceCnt]-1->R_TraceCnt,[R_TraceCnt]≠0 转
0506                ;            MOVLW   D_TraceCnt
0507                ;            MOVWF   R_TraceCnt      ;D_TraceCnt->R_TraceCnt
0508  0113  20A3                MOVFW   R_SteadyCodeL   ;\
0509  0114  2287                MOVWF   R_PubReg0       ; | [R_SteadyCodeH:R_SteadyCodeL]
0510  0115  20A4                MOVFW   R_SteadyCodeH   ; | ->R_PubReg1:R_PubReg0
0511  0116  2288                MOVWF   R_PubReg1       ;/
0512  0117  209A    			MOVFW	R_LastAverageL	;\
0513  0118  228B    			MOVWF	R_PubReg4		; | [R_LastAverageH:R_LastAverageL]
0514  0119  209B    			MOVFW	R_LastAverageH	; | ->R_PubReg5:R_PubReg4
0515  011A  228C    			MOVWF	R_PubReg5		;/
0516  011B  8487    			CALL	S_CalcABS		;计算[R_PubReg5:R_PubReg4]-[R_PubReg1:R_PubReg0]绝对值->R_PubReg5:R_PubReg4
0517                ;                                    R_PubFlag1.3	=1时减法结果为负数
0518  011C  208B                MOVFW   R_PubReg4
0519  011D  2C8C                IORWF   R_PubReg5,0
0520  011E  E004                BTFSC	STATUS,Z
0521  011F  A15F                GOTO    L_MainAdcP_8    ;[R_PubReg5:R_PubReg4]=0(无需自动追重) 转
0522  0120  E686                BTFSC   R_PubFlag1,3
0523  0121  A131                GOTO    L_MainAdcP_51   ;[R_PubFlag1].3=1(减法结果为负数) 转
0524  0122  EA86                BTFSC   R_PubFlag1,5
0525  0123  A140                GOTO    L_MainAdcP_52   ;[R_PubFlag1].5=1(上次减法结果为负数) 转
0526  0124  16A8                DECFSZ  R_TraceCnt,1
0527  0125  A15F                GOTO    L_MainAdcP_8    ;[R_TraceCnt]-1->R_TraceCnt,[R_TraceCnt]≠0 转
0528  0126  4008                MOVLW   D_TraceCnt
0529  0127  22A8                MOVWF   R_TraceCnt      ;D_TraceCnt->R_TraceCnt
0530  0128  4001                MOVLW   1               ;\
0531  0129  06A3                ADDWF   R_SteadyCodeL,1 ; | [R_SteadyCodeH:R_SteadyCodeL]+1
0532  012A  4000                MOVLW   0               ; | ->R_SteadyCodeH:R_SteadyCodeL
0533  012B  26A4                ADDWFC  R_SteadyCodeH,1 ;/
0534  012C  4001                MOVLW   1               ;\
0535  012D  06A0                ADDWF   R_ZeroCodeL,1   ; | [R_ZeroCodeH:R_ZeroCodeL]+1
0536  012E  4000                MOVLW   0               ; | ->R_ZeroCodeH:R_ZeroCodeL
0537  012F  26A1                ADDWFC  R_ZeroCodeH,1   ;/  零点微调
0538  0130  A15F    			GOTO	L_MainAdcP_8
0539                L_MainAdcP_51:
0540  0131  FA86                BTFSS   R_PubFlag1,5
0541  0132  A142                GOTO    L_MainAdcP_53   ;[R_PubFlag1].5=0(上次减法结果为正数) 转
0542  0133  16A8                DECFSZ  R_TraceCnt,1
0543  0134  A15F                GOTO    L_MainAdcP_8    ;[R_TraceCnt]-1->R_TraceCnt,[R_TraceCnt]≠0 转
0544  0135  4008                MOVLW   D_TraceCnt
0545  0136  22A8                MOVWF   R_TraceCnt      ;D_TraceCnt->R_TraceCnt
0546  0137  4001                MOVLW   1               ;\
0547  0138  1AA3                SUBWF   R_SteadyCodeL,1 ; | [R_SteadyCodeH:R_SteadyCodeL]-1
0548  0139  4000                MOVLW   0               ; | ->R_SteadyCodeH:R_SteadyCodeL
0549  013A  3AA4                SUBWFC  R_SteadyCodeH,1 ;/
0550  013B  4001                MOVLW   1               ;\
0551  013C  1AA0                SUBWF   R_ZeroCodeL,1   ; | [R_ZeroCodeH:R_ZeroCodeL]-1
0552  013D  4000                MOVLW   0               ; | ->R_ZeroCodeH:R_ZeroCodeL
0553  013E  3AA1                SUBWFC  R_ZeroCodeH,1   ;/  零点微调
0554  013F  A15F    			GOTO	L_MainAdcP_8
0555                L_MainAdcP_52:
0556  0140  CA86                BCF     R_PubFlag1,5    ;0->R_PubFlag1.5
0557  0141  A143                GOTO    L_MainAdcP_54
0558                L_MainAdcP_53:
0559  0142  DA86                BSF     R_PubFlag1,5    ;1->R_PubFlag1.5
0560                L_MainAdcP_54:
0561  0143  4008                MOVLW   D_TraceCnt
0562  0144  22A8                MOVWF   R_TraceCnt      ;D_TraceCnt->R_TraceCnt
0563  0145  A15F    			GOTO	L_MainAdcP_8
0564                L_MainAdcP_6:
0565  0146  4001    			MOVLW	1
0566  0147  846C    			CALL	S_ReadCode		;读当前内码->R_PubReg1:R_PubReg0
0567  0148  2087    			MOVFW	R_PubReg0		;\
0568  0149  229A    			MOVWF	R_LastAverageL	; | [R_PubReg1:R_PubReg0]->R_LastAverageH:R_LastAverageL
0569  014A  2088    			MOVFW	R_PubReg1		; |
0570  014B  229B    			MOVWF	R_LastAverageH	;/
0571  014C  4008    			MOVLW	8
0572  014D  2284    			MOVWF	R_Count			;8->R_Count
0573  014E  40F0    			MOVLW	R_CodeBuffer
0574  014F  2202    			MOVWF	FSR0			;R_CodeBuffer->FSR0
0575                L_MainAdcP_L1:
0576  0150  2087    			MOVFW	R_PubReg0
0577  0151  2200    			MOVWF	IND0
0578  0152  0A02    			INCF	FSR0,1
0579  0153  2088    			MOVFW	R_PubReg1
0580  0154  2200    			MOVWF	IND0
0581  0155  0A02    			INCF	FSR0,1
0582  0156  1684    			DECFSZ	R_Count,1
0583  0157  A150    			GOTO	L_MainAdcP_L1
0584  0158  02EF    			CLRF	R_CodePointer	;0->R_CodePointer
0585                L_MainAdcP_7:
0586  0159  CA85    			BCF		R_PubFlag0,5	;0->R_PubFlag0.5 (数据不稳)
0587  015A  029D    			CLRF	R_SteadyCnt		;0->R_SteadyCnt
0588  015B  029E    			CLRF	R_DifferenceL	;0->R_DifferenceL
0589  015C  029F    			CLRF	R_DifferenceH	;0->R_DifferenceH
0590  015D  4008                MOVLW   8
0591  015E  22A8                MOVWF   R_TraceCnt      ;8->R_TraceCnt
0592                L_MainAdcP_8:
0593  015F  4001    			MOVLW	1
0594  0160  846C    			CALL	S_ReadCode		;读当前内码->R_PubReg1:R_PubReg0
0595  0161  D886    			BSF		R_PubFlag1,4	;1->R_PubFlag1.4
0596  0162  4024    			MOVLW	D_OverCodeL		;\
0597  0163  1887    			SUBWF	R_PubReg0,0		; | [R_PubReg1:R_PubReg0]-D_OverCodeH:D_OverCodeL
0598  0164  40F4    			MOVLW	D_OverCodeH		; | (内码超载判断)
0599  0165  3888    			SUBWFC	R_PubReg1,0		;/
0600  0166  F204    			BTFSS	STATUS,C
0601  0167  C886    			BCF		R_PubFlag1,4	;内码不超载,0->R_PubFlag1.4
0602  0168  FA85    			BTFSS	R_PubFlag0,5
0603  0169  A173    			GOTO	L_Main_5		;[R_PubFlag0].5=0(内码未锁定) 转
0604  016A  FE85    			BTFSS	R_PubFlag0,7
0605  016B  A173    			GOTO	L_Main_5		;[R_PubFlag0].7=0, 转
0606  016C  CE85    			BCF		R_PubFlag0,7	;0->R_PubFlag0.7
0607  016D  E886    			BTFSC	R_PubFlag1,4
0608  016E  A173    			GOTO	L_Main_5		;[R_PubFlag1]=1(内码超载) 转
0609  016F  209A    			MOVFW	R_LastAverageL	;\
0610  0170  22A0    			MOVWF	R_ZeroCodeL   	; | [R_LastAverageH:R_LastAverageL]->R_ZeroCodeH:R_ZeroCodeL
0611  0171  209B    			MOVFW	R_LastAverageH	; | 保存零点内码
0612  0172  22A1    			MOVWF	R_ZeroCodeH		;/
0613                L_Main_5:
0614  0173  FE92    			BTFSS	R_KeyStatus,7
0615  0174  A190    			GOTO	L_Main_6		;[R_KeyStatus].7=0 转
0616  0175  838F                CALL    S_CalcOffTime	;计算自动关机时间(单位:秒)->R_OffTimerH:R_OffTimerL
0617  0176  2082    			MOVFW	R_WorkStatus
0618  0177  6870    			ANDLW	70H
0619  0178  7030    			XORLW	30H
0620  0179  E004    			BTFSC	STATUS,Z
0621  017A  A190    			GOTO	L_Main_6		;[R_WorkStatus]的高4位=3或=B(标定状态),转
0622  017B  400C    			MOVLW	0CH
0623  017C  1893    			SUBWF	R_KeyCode,0
0624  017D  F004    			BTFSS	STATUS,Z
0625  017E  A181    			GOTO	L_Main_51		;[R_KeyCode]≠0CH(不是"OFF"键短键释放) 转
0626  017F  4040    			MOVLW	40H				;"OFF"键短键释放
0627  0180  2282    			MOVWF	R_WorkStatus	;40H->R_WorkStatus 关机
0628                L_Main_51:			
0629  0181  40E5    			MOVLW	0E5H
0630  0182  1892    			SUBWF	R_KeyStatus,0
0631  0183  F004    			BTFSS	STATUS,Z
0632  0184  A190    			GOTO	L_Main_6		;[R_KeyStatus]≠0E5H 转
0633  0185  4030    			MOVLW	30H
0634  0186  2282    			MOVWF	R_WorkStatus	;同时按"OFF"+"TARE"键5秒以上进入标定状态
0635  0187  02A0    			CLRF	R_ZeroCodeL		;0->R_ZeroCodeL
0636  0188  02A1    			CLRF	R_ZeroCodeH		;0->R_ZeroCodeH
0637  0189  02A3    			CLRF	R_SteadyCodeL	;0->R_SteadyCodeL
0638  018A  02A4    			CLRF	R_SteadyCodeH	;0->R_SteadyCodeH
0639  018B  CA85    			BCF		R_PubFlag0,5	;0->R_PubFlag0.5
0640  018C  DC85    			BSF		R_PubFlag0,6	;1->R_PubFlag0.6
0641  018D  CE92    			BCF		R_KeyStatus,7	;0->R_KeyStatus.7
0642  018E  CC92    			BCF		R_KeyStatus,6	;0->R_KeyStatus.6
0643  018F  D892    			BSF		R_KeyStatus,4	;1->R_KeyStatus.4
0644                L_Main_6:
0645  0190  8196    			CALL	S_MainFunc		;主要功能
0646  0191  CE92    			BCF		R_KeyStatus,7	;0->R_KeyStatus.7
0647  0192  C885    			BCF		R_PubFlag0,4	;0->R_PubFlag0.4

⌨️ 快捷键说明

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