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

📄 9821h621.lst

📁 用台湾富晶单片机开发的电子称包括源码和编译器
💻 LST
📖 第 1 页 / 共 5 页
字号:
0869  023E  EA86                BTFSC   R_PubFlag1,5
0870  023F  A247                GOTO    L_DispHeft_11   ;[R_PubFlag1].5=1 (计量单位=lb) 转
0871  0240  4080    			MOVLW	80H				;\
0872  0241  0488    			ADDWF	R_PubReg1,0		; | 计量单位=kg,分度值=1
0873  0242  4000    			MOVLW	0				; | [R_PubReg3:R_PubReg2]+0.5
0874  0243  2689    			ADDWFC	R_PubReg2,1		; | ->R_PubReg3:R_PubReg2
0875  0244  4000    			MOVLW	0				; | (四舍五入)
0876  0245  268A    			ADDWFC	R_PubReg3,1		;/
0877  0246  A24C                GOTO    L_DispHeft_12
0878                L_DispHeft_11:
0879  0247  4001    			MOVLW	1				;\  计量单位=lb,分度值=2
0880  0248  0689    			ADDWF	R_PubReg2,1		; | [R_PubReg3:R_PubReg2]+1
0881  0249  4000    			MOVLW	0				; | ->R_PubReg3:R_PubReg2
0882  024A  268A    			ADDWFC	R_PubReg3,1		;/  (四舍五入)
0883  024B  C089    			BCF		R_PubReg2,0		;0->R_PubReg2.0
0884                L_DispHeft_12:
0885  024C  4001    			MOVLW	D_DecimalDigits
0886  024D  22C9    			MOVWF	R_DispMode		;D_DecimalDigits(小数位数)->R_DispMode
0887  024E  D4C9    			BSF		R_DispMode,2	;1->R_DispMode.2 显示计量单位
0888  024F  F286    			BTFSS	R_PubFlag1,1
0889  0250  A257    			GOTO	L_DispHeft_2	;[R_PubFlag1].1=0(未锁定) 转
0890  0251  D6CF    			BSF		R_DispFlag,3	;[R_PubFlag1].1=1(称重数据锁定),1->R_DispFlag.3 显示锁符
0891  0252  40A0    			MOVLW	0A0H
0892  0253  228E    			MOVWF	R_PubCnt1		;0A0H->R_PubCnt1,定时10秒
0893  0254  40C0    			MOVLW	0C0H
0894  0255  2282    			MOVWF	R_WorkStatus	;0C0H->R_WorkStatus,2秒后关机
0895  0256  C81C    			BCF     NETE,ENVS       ;0->NETE.ENVS 关VS输出
0896                L_DispHeft_2:
0897  0257  2089    			MOVFW	R_PubReg2
0898  0258  2C8A    			IORWF	R_PubReg3,0
0899  0259  E004    			BTFSC	STATUS,Z
0900  025A  C6CF    			BCF		R_DispFlag,3	;[R_PubReg3:R_PubReg2]=0,0->R_DispFlag.3 不显示锁符
0901  025B  851F    			CALL    S_Hex2BCD		;将[R_PubReg3:R_PubReg2]转换为5位BCD码->R_DispBuff4:R_DispBuff0
0902  025C  C4CF    			BCF		R_DispFlag,2	;[R_PubReg3:R_PubReg2]=0,0->R_DispFlag.2 不显示负号
0903  025D  A49E    			GOTO	S_Display		;去显示
0904                L_CalcHeftRet:
0905  025E  0003    			RETURN
0906                ;
0907                S_RdMinDispV:		;读最小显示值
0908  025F  0008    			ADDPCW
0909  0260  4802    			RETLW	2		;D_P21=0,最小显示值=0.2KG
0910  0261  4804    			RETLW	4		;D_P21=1,最小显示值=0.4KG
0911  0262  4805    			RETLW	5		;D_P21=2,最小显示值=0.5KG
0912  0263  4808    			RETLW	8		;D_P21=3,最小显示值=0.8KG
0913  0264  480A    			RETLW	10		;D_P21=4,最小显示值=1.0KG
0914  0265  480C    			RETLW	12		;D_P21=5,最小显示值=1.2KG
0915  0266  480F    			RETLW	15		;D_P21=6,最小显示值=1.5KG
0916  0267  4814    			RETLW	20		;D_P21=7,最小显示值=2.0KG
0917  0268  4819    			RETLW	25		;D_P21=8,最小显示值=2.5KG
0918  0269  4832    			RETLW	50		;D_P21=9,最小显示值=5.0KG
0919                ;
0920                L_DispOverErr:						;显示超载错误
0921  026A  8482    			CALL	S_ClrDisp
0922  026B  400F    			MOVLW	0FH
0923  026C  22CD    			MOVWF	R_DispBuff3		;0FH("F")->R_DispBuff3
0924  026D  22CC    			MOVWF	R_DispBuff2		;0FH("F")->R_DispBuff2
0925  026E  22CB    			MOVWF	R_DispBuff1		;0FH("F")->R_DispBuff1
0926  026F  22CA    			MOVWF	R_DispBuff0		;0FH("F")->R_DispBuff0
0927  0270  4008    			MOVLW	08H	
0928  0271  22C9    			MOVWF	R_DispMode		;08H->R_DispMode,无小数点,16进制显示方式
0929  0272  A49E    			GOTO	S_Display		;去显示
0930                ;------------------------------------------------------------------------------
0931                L_CaliProc:							;标定处理		
0932  0273  4001    			MOVLW	01H
0933  0274  2ACF    			ANDWF	R_DispFlag,1	;0->R_DispFlag.7:1
0934  0275  E682    			BTFSC	R_WorkStatus,3
0935  0276  A2E5    			GOTO	L_CaliOver	    ;[R_WorkStatus].3=1(标定完成) 转
0936  0277  EE92    			BTFSC	R_KeyStatus,7
0937  0278  A281    			GOTO	L_CaliProc_1	;[R_KeyStatus].7=1 转
0938  0279  E892    			BTFSC	R_KeyStatus,4	;[R_KeyStatus].7=0
0939  027A  A2F9    			GOTO	L_DispCaliCode	;[R_KeyStatus].4=1 转去显示内码
0940  027B  2093    			MOVFW	R_KeyCode
0941  027C  680F    			ANDLW	0FH
0942  027D  5806    			SUBLW	06H
0943  027E  E004    			BTFSC	STATUS,Z
0944  027F  A308    			GOTO	L_DispDate		;[R_KeyCode].2:0=6("TARE"键按下)转去显示日期
0945  0280  A2F9    			GOTO	L_DispCaliCode	;去显示内码
0946                L_CaliProc_1:
0947  0281  400C    			MOVLW	0CH
0948  0282  1893    			SUBWF	R_KeyCode,0
0949  0283  F004    			BTFSS	STATUS,Z
0950  0284  A2F8    			GOTO	L_CaliProcRet	;[R_KeyCode]≠0CH(不是"Cali"键短键释放) 转,返回
0951  0285  4070    			MOVLW	70H
0952  0286  2E92    			IORWF	R_KeyStatus,1	;7->R_KeyStatus.7:4
0953  0287  E082    			BTFSC	R_WorkStatus,0
0954  0288  A297    			GOTO	L_CaliProc_3	;[R_WorkStatus].0=1 转
0955  0289  209E    			MOVFW	R_ZeroCodeL		;\
0956  028A  22D1    			MOVWF	R_CaliCode0L	; | [R_ZeroCodeH:R_ZeroCodeL]
0957  028B  209F    			MOVFW	R_ZeroCodeH		; | ->R_CaliCode0H:R_CaliCode0L
0958  028C  22D2    			MOVWF	R_CaliCode0H	;/  暂存零点内码
0959  028D  D082    			BSF     R_WorkStatus,0  ;1->R_WorkStatus.0
0960  028E  8482    			CALL	S_ClrDisp       ;清显示,然后显示“0.0KG”
0961                L_CaliProc_2:
0962  028F  02CA    			CLRF    R_DispBuff0     ;0->R_DispBuff0
0963  0290  02CB    			CLRF    R_DispBuff1     ;0->R_DispBuff1
0964  0291  4005    			MOVLW   05H
0965  0292  22C9    			MOVWF   R_DispMode      ;05H->R_DispMode(显示计量单位、1位小数)
0966  0293  4010    			MOVLW	10H
0967  0294  228E    			MOVWF	R_PubCnt1		;10H->R_PubCnt1,定时1秒
0968  0295  DE82    			BSF     R_WorkStatus,7  ;1->R_WorkStatus.7
0969  0296  A49E    			GOTO    S_Display
0970                L_CaliProc_3:
0971  0297  40D1    			MOVLW	R_CaliCode0L
0972  0298  2202    			MOVWF	FSR0
0973  0299  F282    			BTFSS	R_WorkStatus,1
0974  029A  A2A1    			GOTO	L_CaliProc_31	;[R_WorkStatus].1=0 转
0975  029B  0A02    			INCF	FSR0,1			;[FSR0]+1->FSR
0976  029C  0A02    			INCF	FSR0,1			;[FSR0]+1->FSR
0977  029D  F482    			BTFSS	R_WorkStatus,2
0978  029E  A2A1    			GOTO	L_CaliProc_31	;[R_WorkStatus].2=0 转
0979  029F  0A02    			INCF	FSR0,1			;[FSR0]+1->FSR
0980  02A0  0A02    			INCF	FSR0,1			;[FSR0]+1->FSR
0981                L_CaliProc_31:
0982  02A1  2000    			MOVFW	IND0
0983  02A2  2287    			MOVWF	R_PubReg0		;[IND0]->R_PubReg0
0984  02A3  0A02    			INCF	FSR0,1			;[FSR0]+1->FSR
0985  02A4  2000    			MOVFW	IND0
0986  02A5  2288    			MOVWF	R_PubReg1		;[IND0]->R_PubReg1
0987  02A6  E482    			BTFSC	R_WorkStatus,2
0988  02A7  A2AE    			GOTO	L_CaliProc_30	;[R_WorkStatus].2=1(标定120KG) 转
0989  02A8  0A02    			INCF	FSR0,1			;[FSR0]+1->FSR
0990  02A9  209E                MOVFW   R_ZeroCodeL
0991  02AA  2200                MOVWF   IND0            ;保存标定内码低字节
0992  02AB  0A02    			INCF	FSR0,1			;[FSR0]+1->FSR
0993  02AC  209F                MOVFW   R_ZeroCodeH
0994  02AD  2200                MOVWF   IND0            ;保存标定内码高字节
0995                L_CaliProc_30:
0996  02AE  209E    			MOVFW	R_ZeroCodeL		;\
0997  02AF  228B    			MOVWF	R_PubReg4		; | [R_ZeroCodeH:R_ZeroCodeL]
0998  02B0  209F    			MOVFW	R_ZeroCodeH		; | ->R_PubReg5:R_PubReg4
0999  02B1  228C    			MOVWF	R_PubReg5		;/
1000  02B2  83F2    			CALL	S_CalcABS		;计算[R_PubReg5:R_PubReg4]-[R_PubReg1:R_PubReg0]绝对值->R_PubReg5:R_PubReg4
1001  02B3  E686    			BTFSC	R_PubFlag1,3
1002  02B4  A2F8    			GOTO	L_CaliProcErr	;[R_PubFlag1].3=1(减法结果为负数) 转 标定错误处理
1003  02B5  4090                MOVLW   90H		    ;\
1004  02B6  2289                MOVWF   R_PubReg2	; | 0190H->R_PubReg3:R_PubReg2
1005  02B7  4001                MOVLW   01H		    ; | 400->R_PubReg3:R_PubReg2
1006  02B8  228A                MOVWF   R_PubReg3   ;/
1007  02B9  208B    			MOVFW	R_PubReg4
1008  02BA  1889    			SUBWF	R_PubReg2,0
1009  02BB  208C    			MOVFW	R_PubReg5
1010  02BC  388A    			SUBWFC	R_PubReg3,0
1011  02BD  E204    			BTFSC	STATUS,C
1012  02BE  A2F8    			GOTO	L_CaliProcErr ;[R_PubReg3:R_PubReg2]≥[R_PubReg5:R_PubReg4] 转,返回
1013  02BF  8503    			CALL    S_Divis	;[R_PubReg3:R_PubReg2]×65536÷[R_PubReg5:R_PubReg4]->R_PubReg1:R_PubReg0
1014  02C0  EE88    			BTFSC	R_PubReg1,7
1015  02C1  A2F8    			GOTO	L_CaliProcErr ;[R_PubReg1]≥80H(每个内码对应的重量≥0.5d) 转,返回
1016  02C2  E482    			BTFSC	R_WorkStatus,2
1017  02C3  A2DA    			GOTO	L_CaliProc_33	;[R_WorkStatus].2=1(标定120KG) 转
1018  02C4  E282    			BTFSC	R_WorkStatus,1
1019  02C5  A2D1    			GOTO	L_CaliProc_32	;[R_WorkStatus].1=1(标定80KG) 转
1020  02C6  F082    			BTFSS	R_WorkStatus,0
1021  02C7  A2F8    			GOTO	L_CaliProcErr	;[R_WorkStatus].0=0(不是标定40KG) 转
1022  02C8  2087    			MOVFW   R_PubReg0       ;\
1023  02C9  22D7    			MOVWF   R_CaliData1L    ; | [R_PubReg1:R_PubReg0]->R_CaliData1H:R_CaliData1L
1024  02CA  2088    			MOVFW   R_PubReg1       ; | 保存 40KG 标定数据
1025  02CB  22D8    			MOVWF   R_CaliData1H    ;/
1026  02CC  8482    			CALL	S_ClrDisp
1027  02CD  4004    			MOVLW   04H
1028  02CE  22CC    			MOVWF   R_DispBuff2     ;4->R_DispBuff2 ;显示“40.0KG”
1029  02CF  D282                BSF     R_WorkStatus,1  ;1->R_WorkStatus.1
1030  02D0  A28F                GOTO    L_CaliProc_2
1031                L_CaliProc_32:
1032  02D1  2087    			MOVFW   R_PubReg0       ;\
1033  02D2  22D9    			MOVWF   R_CaliData2L    ; | [R_PubReg1:R_PubReg0]->R_CaliData2H:R_CaliData2L
1034  02D3  2088    			MOVFW   R_PubReg1       ; | 保存 80KG 标定数据
1035  02D4  22DA    			MOVWF   R_CaliData2H    ;/
1036  02D5  8482    			CALL	S_ClrDisp
1037  02D6  4008    			MOVLW   08H
1038  02D7  22CC    			MOVWF   R_DispBuff2     ;8->R_DispBuff2 ;显示“80.0KG”
1039  02D8  D482                BSF     R_WorkStatus,2  ;1->R_WorkStatus.2
1040  02D9  A28F                GOTO    L_CaliProc_2
1041                L_CaliProc_33:
1042  02DA  2087    			MOVFW   R_PubReg0       ;\
1043  02DB  22DB    			MOVWF   R_CaliData3L    ; | [R_PubReg1:R_PubReg0]->R_CaliData3H:R_CaliData3L
1044  02DC  2088    			MOVFW   R_PubReg1       ; | 保存 120KG 标定数据
1045  02DD  22DC    			MOVWF   R_CaliData3H    ;/
1046  02DE  8482    			CALL	S_ClrDisp
1047  02DF  4002    			MOVLW   02H
1048  02E0  22CC    			MOVWF   R_DispBuff2     ;2->R_DispBuff2
1049  02E1  4001    			MOVLW   01H
1050  02E2  22CD    			MOVWF   R_DispBuff3     ;1->R_DispBuff3 ;显示“120.0KG”
1051  02E3  D682                BSF     R_WorkStatus,3  ;1->R_WorkStatus.3
1052  02E4  A28F                GOTO    L_CaliProc_2
1053                ;
1054                L_CaliOver:						;标定完成处理
1055  02E5  8482    			CALL	S_ClrDisp		;清LCD显示缓冲区LCD1-LCD6
1056  02E6  40A5    			MOVLW	D_CaliMark
1057  02E7  22DD    			MOVWF	R_CaliFlag	;D_CaliMark->R_CaliFlag
1058  02E8  85EB    			CALL	S_WrCaliData	;将[R_CaliChksumH:R_CaliPara]的8个16位数据写入到93LC46的00H-07H中
1059  02E9  4020    			MOVLW	20H
1060  02EA  228E    			MOVWF	R_PubCnt1		;20H->R_PubCnt1,定时2秒
1061  02EB  40C1    			MOVLW	0C1H
1062  02EC  2282    			MOVWF	R_WorkStatus	;0C1H->R_WorkStatus,显示版本号2秒后再显示修改日期2秒后关机。
1063  02ED  4015    			MOVLW	15H				;"H"					;\
1064  02EE  22CD    			MOVWF	R_DispBuff3		;15H("H")->R_DispBuff3	; |
1065  02EF  4006    			MOVLW	06H										; | 显示版本号
1066  02F0  22CC    			MOVWF	R_DispBuff2		;06H("6")->R_DispBuff2	; | "H621 "
1067  02F1  4002    			MOVLW	02H										; |
1068  02F2  22CB    			MOVWF	R_DispBuff1		;02H("2")->R_DispBuff1	; |
1069  02F3  4001    			MOVLW	01H										; |
1070  02F4  22CA    			MOVWF	R_DispBuff0		;01H("0")->R_DispBuff0	;/
1071  02F5  4008    			MOVLW	08H	
1072  02F6  22C9    			MOVWF	R_DispMode		;08H->R_DispMode,无小数点,16进制显示方式
1073  02F7  A49E    			GOTO	S_Display		;去显示
1074                L_CaliProcErr:      ;标定不成功,返回
1075                L_CaliProcRet:
1076  02F8  0003    			RETURN
1077                ;
1078                S_DispCaliCode:						;显示内码
1079                L_DispCaliCode:						;显示内码
1080  02F9  F885    			BTFSS	R_PubFlag0,4
1081  02FA  A2F8    			GOTO	L_CaliProcRet	;[R_PubFlag0].4=0(未得到新的有效内码) 转,返回
1082  02FB  C6CF    			BCF		R_DispFlag,3	;0->R_DispFlag.3
1083  02FC  EA85    			BTFSC	R_PubFlag0,5
1084  02FD  D6CF    			BSF		R_DispFlag,3	;[R_PubFlag0].5=1(称重数据稳定),1->R_DispFlag.3 显示锁符
1085                ;			MOVLW	1
1086                ;			CALL	S_ReadCode		;读当前内码->R_PubRe

⌨️ 快捷键说明

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