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

📄 9821h621.lst

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

⌨️ 快捷键说明

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