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 + -
显示快捷键?