CHIP SN8P2714 //{{SONIX_CODE_OPTION .Code_Option LVD LVD_L ; 2.0V Reset .Code_Option RST_P0.3 P0.3 .Code_Option Watch_Dog Always_ON ; Watchdog still enable even in Green and Sleep mode .Code_Option High_Clk RC ; Connect R to VDD and Xin Connect C to GND and Xin Enable P5.6 I/O pin .Code_Option Fcpu #3 ; Fcpu = High_Clk/8 .Code_Option Security Disable .Code_Option Noise_Filter Enable //}}SONIX_CODE_OPTION ;================================================= LD MACRO VAR,VAL MOV A,VAL B0MOV VAR,A ENDM ;================================================= CJE MACRO VAR,VAL,LABEL MOV A,VAR CMPRS A,VAL JMP $+2 JMP LABEL ENDM ;================================================= CJNE MACRO VAR,VAL,LABEL MOV A,VAR CMPRS A,VAL JMP LABEL ENDM ;================================================= LESS MACRO VAR,VAL,LABEL MOV A,VAR SUB A,VAL B0BTS1 CF JMP LABEL ENDM ;================================================= LARGE MACRO VAR,VAL,LABEL MOV A,VAR SUB A,VAL B0BTS0 CF JMP LABEL ENDM ;================================================= MAX_CURRENT EQU 10 MAX_VOLTAGE EQU 13 ;================================================= ADC_CNT EQU 00H ADC_TASK EQU 01H AD_BUF0H EQU 02H ;02H-0FH 用于AD采样中间结果 AD_BUF1H EQU 03H AD_BUF2H EQU 04H AD_BUF3H EQU 05H AD_BUF4H EQU 06H AD_BUF5H EQU 07H AD_BUF7H EQU 08H AD_BUF0L EQU 09H AD_BUF1L EQU 0AH AD_BUF2L EQU 0BH AD_BUF3L EQU 0CH AD_BUF4L EQU 0DH AD_BUF5L EQU 0EH AD_BUF7L EQU 0FH AD_R0 EQU 10H ;每节电池的最终结果,AD_R0对应最上端电池的电压 AD_R1 EQU 11H AD_R2 EQU 12H AD_R3 EQU 13H AD_R4 EQU 14H AD_R5 EQU 15H KEY_RUN_STOP_DELAY0 EQU 1AH KEY_RUN_STOP_DELAY1 EQU 1BH KEY_RUN_STOP_DELAY2 EQU 1CH DISCHARGE_INDEX EQU 1DH VOLTAGE_INDEX EQU 1EH KEY_VOLTAGE_STATUS EQU 20H.1 KEY_CURRENT_STATUS EQU 20H.2 KEY_RUN_STOP_STATUS_ON EQU 21H.4 KEY_RUN_STOP_STATUS_OFF EQU 21H.7 KEY_VOLTAGE_REPEAT_FLAG EQU 23H.0 WORK_MODE EQU 2AH ;00H: 放电工作状态,01H:调整参数状态 START_DELAY EQU 2CH ;启动按键启动后的延时 LED1_BUF EQU 30H LED2_BUF EQU 31H CH0_STOP_DELAY EQU 37H ;用于停止放电的延时 CH1_STOP_DELAY EQU 38H CH2_STOP_DELAY EQU 39H CH3_STOP_DELAY EQU 3AH CH4_STOP_DELAY EQU 3BH CH5_STOP_DELAY EQU 3CH AD_R7 EQU 3DH ;12V电压的AD结果 KEY_VOLTAGE EQU P0.1 KEY_RUN_STOP EQU P0.2 SCL EQU P2.0 SDA EQU P2.1 CF EQU PFLAG.2 ;================================================= .CODE ORG 0000h JMP START ;0000---820B DW 00000H ;0001---0000 DW 00000H ;0002---0000 DW 00000H ;0003---0000 DW 00000H ;0004---0000 DW 00000H ;0005---0000 DW 00000H ;0006---0000 DW 00000H ;0007---0000 DW 00000H ;0008---0000 ;======================================================================================== ;D7---A ;D6---B SEG_TAB: DW 000FCH ;0009---00FC DW 00060H ;000A---0060 DW 000DAH ;000B---00DA DW 000F2H ;000C---00F2 DW 00066H ;000D---0066 DW 000B6H ;000E---00B6 DW 000BEH ;000F---00BE DW 000E0H ;0010---00E0 DW 000FEH ;0011---00FE DW 000F6H ;0012---00F6 DW 0CE1CH ;0013---CE1C "L" ;========================================================================================= ;21种放电电流 PWM_TAB: DW 0108H ;0.5A 0108H: 开通占1个周期,关闭占8个周期 DW 030BH ;1A DW 0102H ;1.5A DW 0304H ;2A DW 0605H ;2.5A DW 0B06H ;3A DW 0301H ;3.5A DW 0601H ;4A DW 1E01H ;4.5A DW 6401H ;5A ;========================================================================================= ;停机电压 VOLTAGE_NUM_TAB: DW 00000H ;0029---0000 0.0V DW 00001H ;002A---0001 0.1V DW 00002H ;002B---0002 0.2V DW 00003H ;002C---0003 0.3V DW 00004H ;002D---0004 0.4V DW 00005H ;002E---0005 0.5V DW 00006H ;002F---0006 0.6V DW 00007H ;0030---0007 0.7V DW 00008H ;0031---0008 0.8V DW 00009H ;0032---0009 0.9V DW 0100H DW 0101H DW 0102H ;====================================================================== ;选择放电电流时,在数码管上的显示内容 DISCHARGE_NUM_TAB: DW 0005H DW 0100H DW 0105H DW 0200H DW 0205H DW 0300H DW 0305H DW 0400H DW 0405H DW 0500H ;=============================================================================== STOP_VOLTAGE: DW 00000H ;0048---0000 ---0 DW 00005H ;0049---0005 0.1V DW 0000AH ;004A---000A 0.2V DW 0000FH ;004B---000F DW 00014H ;004C---0014 DW 00019H ;004D---0019 DW 0001EH ;004E---001E DW 00023H ;004F---0023 DW 00028H ;0050---0028 DW 0002DH ;0051---002D DW 00032H DW 00037H DW 0003CH ;=============================================================================== MAIN: MOV A,AD_R7 ; CMPRS A,#036H ;相当于10V电压 NOP ; BTS1 CF ; JMP MAIN_LOW_POWER ;外接电源不足 BSET 2DH.0 ;1=电压充足 CLR 17H ;0058---2B17 JMP MAIN_A ;0059---8063 MAIN_LOW_POWER: INCMS 17H ;005A---1617 MOV A,17H ;005B---1E17 CMPRS A,#002H ;005C---0602 NOP ;005D---0000 BTS1 CF ;005E---5A86 JMP MAIN_A ;005F---8063 CLR 17H ; BCLR 2DH.0 ;1=电压充足 JMP KEY_ALL_DONE ; MAIN_A: BTS1 KEY_RUN_STOP ;0063---5AD0 JMP Q006B ; BSET KEY_RUN_STOP_STATUS_OFF ;0065---4F21 BSET KEY_RUN_STOP_STATUS_ON ;0066---4C21 CLR KEY_RUN_STOP_DELAY0 ;0067---2B1A CLR KEY_RUN_STOP_DELAY1 ;0068---2B1B CLR KEY_RUN_STOP_DELAY2 ;0069---2B1C JMP Q0093 ;006A---8093 Q006B: BTS1 KEY_RUN_STOP_STATUS_ON ;006B---5C21 JMP KEY_ALL_DONE ;006C---8106 INCMS KEY_RUN_STOP_DELAY0 MOV A,KEY_RUN_STOP_DELAY0 MOV A,KEY_RUN_STOP_DELAY0 CMPRS A,#064H ;约1秒钟(100*4*2.5MS) JMP Q0085 ;0071---8085 CLR KEY_RUN_STOP_DELAY0 ;0072---2B1A INCMS KEY_RUN_STOP_DELAY1 ;0073---161B MOV A,KEY_RUN_STOP_DELAY1 ;0074---1E1B CMPRS A,#004H ;约1秒钟(100*4*2.5MS) JMP Q0085 ;0076---8085 CLR KEY_RUN_STOP_DELAY1 ;0077---2B1B BCLR KEY_RUN_STOP_STATUS_ON ;0078---4421 CLR KEY_RUN_STOP_DELAY0 ;0079---2B1A BSET 21H.5 ;没用到 CLR WORK_MODE ;00H: 放电工作状态,01H:调整参数状态 CLR START_DELAY ; BCLR 21H.6 ;1=真正开始放电 CLR CH0_STOP_DELAY ;007E---2B37 CLR CH1_STOP_DELAY ;007F---2B38 CLR CH2_STOP_DELAY ;0080---2B39 CLR CH3_STOP_DELAY ;0081---2B3A CLR CH4_STOP_DELAY ;0082---2B3B CLR CH5_STOP_DELAY ;0083---2B3C JMP Q0085 ;0084---8085 Q0085: MOV A,WORK_MODE ;00H: 放电工作状态,01H:调整参数状态 CMPRS A,#000H ;0086---0600 JMP KEY_HANDLE_END ;0087---848E BTS1 KEY_RUN_STOP_STATUS_OFF ;0088---5F21 JMP KEY_HANDLE_END ;0089---848E INCMS KEY_RUN_STOP_DELAY2 ;008A---161C MOV A,KEY_RUN_STOP_DELAY2 ; CMPRS A,#009H ;22.5MS JMP KEY_HANDLE_END ; CLR KEY_RUN_STOP_DELAY2 ;008E---2B1C BCLR KEY_RUN_STOP_STATUS_OFF ;008F---4721 MOV A,#001H ;0090---2D01 MOV WORK_MODE,A ;00H: 放电工作状态,01H:调整参数状态 JMP KEY_HANDLE_END ;0092---848E ;===================================================================== Q0093: BTS1 KEY_VOLTAGE ;调整电压键 JMP KEY_VOLTAGE_DOWN ; BCLR KEY_VOLTAGE_REPEAT_FLAG ;0095---4023 CLR 22H ;0096---2B22 BSET KEY_VOLTAGE_STATUS ;0097---4920 CLR 18H ;0098---2B18 BTS1 21H.3 ;0099---5B21 JMP Q00CD ;009A---80CD BCLR 21H.3 ;009B---4321 BSET 21H.0 ;009C---4821 JMP Q00CD ;009D---80CD KEY_VOLTAGE_DOWN: BTS1 KEY_VOLTAGE_STATUS ;009E---5920 JMP KEY_VOLTAGE_REPEAT ;重复键 INCMS 18H ;00A0---1618 MOV A,18H ;00A1---1E18 CMPRS A,#009H ;00A2---0609 JMP KEY_ALL_DONE ;00A3---8106 BCLR 21H.2 ;00A4---4221 BCLR 21H.1 ;00A5---4121 BSET 21H.3 ;00A6---4B21 BSET 20H.5 ;0=调整电流模式,1=调整电压模式 CLR 18H ;00A8---2B18 BCLR KEY_VOLTAGE_STATUS ;00A9---4120 BSET 2DH.1 ;00AA---492D BCLR 2DH.3 ;00AB---432D CLR 16H ;00AC---2B16 JMP KEY_ALL_DONE ;00AD---8106 KEY_VOLTAGE_REPEAT: INCMS 18H ;00AE---1618 MOV A,18H ;00AF---1E18 CMPRS A,#00AH ;00B0---060A JMP KEY_ALL_DONE ;00B1---8106 CLR 18H ; CLR 34H ;保存参数的延时 BTS1 21H.0 ; JMP KEY_ALL_DONE ; BTS1 KEY_VOLTAGE_REPEAT_FLAG ;00B6---5823 JMP Q00B9 ;00B7---80B9 JMP Q00BB ;00B8---80BB Q00B9: BSET KEY_VOLTAGE_REPEAT_FLAG ;00B9---4823 JMP Q00C0 ;00BA---80C0 Q00BB: INCMS 22H ;00BB---1622 MOV A,22H ;00BC---1E22 CMPRS A,#014H ;00BD---0614 JMP KEY_ALL_DONE ;00BE---8106 CLR 22H ;00BF---2B22 Q00C0: INCMS VOLTAGE_INDEX ;00C0---161E MOV A,VOLTAGE_INDEX ;00C1---1E1E CMPRS A,#MAX_VOLTAGE JMP $+2 CLR VOLTAGE_INDEX ;00C4---2B1E BSET 36H.1 ;1=需要保存参数到24C01中 BSET 36H.2 ;00C6---4A36 MOV A,VOLTAGE_INDEX ;00C7---1E1E MOV 35H,A ;00C8---1F35 MOV A,#001H ;00C9---2D01 MOV WORK_MODE,A ;00CA---1F2A BSET 20H.5 ;0=调整电流模式,1=调整电压模式 JMP KEY_ALL_DONE ;00CC---8106 ;=================================================================================== Q00CD: BTS1 P0.0 ;电流键 JMP KEY_CURRENT_DOWN ; BCLR 23H.1 ;00CF---4123 CLR 24H ;00D0---2B24 BSET KEY_CURRENT_STATUS ;00D1---4A20 CLR 19H ;00D2---2B19 BTS1 21H.2 ;00D3---5A21 JMP KEY_ALL_DONE ;00D4---8106 BCLR 21H.2 ;00D5---4221 BSET 21H.1 ;00D6---4921 JMP KEY_ALL_DONE ;00D7---8106 ;================================================================================== KEY_CURRENT_DOWN: BTS1 KEY_CURRENT_STATUS ;00D8---5A20 JMP Q00E8 ;00D9---80E8 INCMS 19H ;00DA---1619 MOV A,19H ;00DB---1E19 CMPRS A,#009H ;00DC---0609 JMP KEY_ALL_DONE ;00DD---8106 BCLR 21H.0 ;00DE---4021 BCLR 21H.3 ;00DF---4321 BSET 21H.2 ;00E0---4A21 BCLR 20H.5 ;0=调整电流模式,1=调整电压模式 BCLR KEY_CURRENT_STATUS ;00E2---4220 CLR 19H ;00E3---2B19 BSET 2DH.1 ;00E4---492D BCLR 2DH.3 ;00E5---432D CLR 16H ;00E6---2B16 JMP KEY_ALL_DONE ;00E7---8106 Q00E8: INCMS 19H ;00E8---1619 MOV A,19H ;00E9---1E19 CMPRS A,#00AH ;00EA---060A JMP KEY_ALL_DONE ;00EB---8106 CLR 19H ; CLR 34H ;保存参数的延时 BTS1 21H.1 ; JMP KEY_ALL_DONE ;00EF---8106 BTS1 23H.1 ;00F0---5923 JMP Q00F3 ;00F1---80F3 JMP Q00F5 ;00F2---80F5 Q00F3: BSET 23H.1 ;00F3---4923 JMP Q00FA ;00F4---80FA Q00F5: INCMS 24H ;00F5---1624 MOV A,24H ;00F6---1E24 CMPRS A,#014H ;00F7---0614 JMP KEY_ALL_DONE ;00F8---8106 CLR 24H ;00F9---2B24 Q00FA: INCMS DISCHARGE_INDEX ;00FA---161D MOV A,DISCHARGE_INDEX ; CMPRS A,#MAX_CURRENT ;10种放电电流 JMP Q00FF ; CLR DISCHARGE_INDEX ;00FE---2B1D Q00FF: BSET 36H.1 ;1=需要保存参数到24C01中 BCLR 36H.2 ;0100---4236 MOV A,DISCHARGE_INDEX ;0101---1E1D MOV 35H,A ;0102---1F35 MOV A,#001H ; MOV WORK_MODE,A ; BCLR 20H.5 ;0=调整电流模式 KEY_ALL_DONE: JMP Q0223 ;0106---8223 ;===================================================================== CLR_RAM_BUF: CLR Y ;0107---2B84 LD Z,#02FH ;0108---2D2F CLR_RAM_BUF_LOOP: CLR @YZ ;010A---2BE7 DECMS Z ;010B---2683 JMP CLR_RAM_BUF_LOOP ;010C---810A CLR @YZ ;010D---2BE7 RET ;010E---0E00 ;====================================================================== INIT_PORT: MOV A,#0FFH ;010F---2DFF MOV P5UR,A ;0110---1FE5 MOV P2UR,A ;0111---1FE2 P2,P5上拉电阻效 MOV P2M,A ;0112---1FC2 MOV P5M,A ;0113---1FC5 P2,P5全为输出 MOV P0UR,A ;0114---1FE0 P1上拉 CLR P5 ;0115---2BD5 CLR P2 ;0116---2BD2 RET ;0117---0E00 ;====================================================================== INIT_ADC: MOV A,#0C0H ;0118---2DC0 B0MOV P4UR,A ;0119---2FE4 MOV A,#0C0H ;011A---2DC0 B0MOV P4M,A ;011B---2FC4 CLR P4 ;011C---2BD4 MOV A,#040H ;011D---2D40 B0MOV ADR,A ;011E---2FB3 CLK = FCPU MOV A,#090H ;011F---2D90 B0MOV ADM,A ;0120---2FB1 0B1H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 BSET ADM.7 ;0121---4FB1 ADM ADENB ADS EOC GCHS - CHS2 CHS1 CHS0 RET ;0122---0E00 ;===================================================================== INIT_HC164: MOV A,#001H ; MOV WORK_MODE,A ;00H: 放电工作状态,01H:调整参数状态 MOV A,#03FH ;0125---2D3F MOV 2EH,A ;0126---1F2E CLR R ;0127---2B82 CLR Y ;0128---2B84 CALL SEND_TO_HC164 ;0129---C378 RET ;012A---0E00 ;====================================================================== INIT_TC0: CLR TC0C MOV A,#0D4H ;Fcpu/8 Auto-reload. MOV TC0M,A RET ;====================================================================== Q012F: BSET 21H.2 ;012F---4A21 BSET 21H.3 ;0130---4B21 RET ;0131---0E00 ;====================================================================== Q0132: MOV A,#000H ; MOV P5,A ;关掉所有放电MOS管 BCLR P2.4 ;关掉所有放电MOS管 INCMS ADC_TASK MOV A,ADC_TASK ;0136---1E01 ADD PCL,A ;0137---13CE NOP JMP ADC_SELECT_CH7 ;0139---8148 JMP ADC_CH7 ;013A---814E JMP ADC_SELECT_CH0 ;013B---8157 JMP ADC_CH0 ;013C---815C JMP ADC_SELECT_CH1 ;013D---8164 JMP ADC_CH1 ;013E---8169 JMP ADC_SELECT_CH2 ;013F---8171 JMP ADC_CH2 ;0140---8176 JMP ADC_SELECT_CH3 ;0141---817E JMP ADC_CH3 ;0142---8183 JMP ADC_SELECT_CH4 ;0143---818B JMP ADC_CH4 ;0144---8190 JMP ADC_SELECT_CH5 ;0145---8198 JMP ADC_CH5 ;0146---819D JMP ADC_ALL_FINISH ;0147---81A5 ADC_SELECT_CH7: BCLR P4M.7 ;0148---47C4 MOV A,#097H ;0149---2D97 MOV ADM,A ;014A---1FB1 MOV A,#07FH ;014B---2D7F B0MOV P4CON,A ;014C---2FAE JMP Q0205 ;014D---8205 ADC_CH7: BCLR P4M.7 ; BSET ADM.6 ;START ADC ADC_CH7_WAIT: BTS1 ADM.5 ;0150---5DB1 JMP ADC_CH7_WAIT MOV A,ADB ;0152---1EB2 ADD AD_BUF7L,A ;0153---130F MOV A,#000H ;0154---2D00 ADC AD_BUF7H,A ;0155---1108 JMP Q0205 ;0156---8205 ADC_SELECT_CH0: MOV A,#090H ;0157---2D90 MOV ADM,A ;0158---1FB1 MOV A,#0FEH ;0159---2DFE B0MOV P4CON,A ;015A---2FAE JMP Q0205 ;015B---8205 ADC_CH0: BSET ADM.6 ;015C---4EB1 ADC_CH0_WAIT: BTS1 ADM.5 ;015D---5DB1 JMP ADC_CH0_WAIT ;015E---815D MOV A,ADB ;015F---1EB2 ADD AD_BUF0L,A ;0160---1309 MOV A,#000H ;0161---2D00 ADC AD_BUF0H,A ;0162---1102 JMP Q0205 ;0163---8205 ADC_SELECT_CH1: MOV A,#091H ;0164---2D91 MOV ADM,A ;0165---1FB1 MOV A,#0FDH ;0166---2DFD B0MOV P4CON,A ;0167---2FAE JMP Q0205 ;0168---8205 ADC_CH1: BSET ADM.6 ;0169---4EB1 ADC_CH1_WAIT: BTS1 ADM.5 ;016A---5DB1 JMP ADC_CH1_WAIT ;016B---816A MOV A,ADB ;016C---1EB2 ADD AD_BUF1L,A ;016D---130A MOV A,#000H ;016E---2D00 ADC AD_BUF1H,A ;016F---1103 JMP Q0205 ;0170---8205 ADC_SELECT_CH2: MOV A,#092H ;0171---2D92 MOV ADM,A ;0172---1FB1 MOV A,#0FBH ;0173---2DFB B0MOV P4CON,A ;0174---2FAE JMP Q0205 ;0175---8205 ADC_CH2: BSET ADM.6 ;0176---4EB1 ADC_CH2_WAIT: BTS1 ADM.5 ;0177---5DB1 JMP ADC_CH2_WAIT ;0178---8177 MOV A,ADB ;0179---1EB2 ADD AD_BUF2L,A ;017A---130B MOV A,#000H ;017B---2D00 ADC AD_BUF2H,A ;017C---1104 JMP Q0205 ;017D---8205 ADC_SELECT_CH3: MOV A,#093H ;017E---2D93 MOV ADM,A ;017F---1FB1 MOV A,#0F7H ;0180---2DF7 B0MOV P4CON,A ;0181---2FAE JMP Q0205 ;0182---8205 ADC_CH3: BSET ADM.6 ;0183---4EB1 ADC_CH3_WAIT: BTS1 ADM.5 ;0184---5DB1 JMP ADC_CH3_WAIT ;0185---8184 MOV A,ADB ;0186---1EB2 ADD AD_BUF3L,A ;0187---130C MOV A,#000H ;0188---2D00 ADC AD_BUF3H,A ;0189---1105 JMP Q0205 ;018A---8205 ADC_SELECT_CH4: MOV A,#094H ;018B---2D94 MOV ADM,A ;018C---1FB1 MOV A,#0EFH ;018D---2DEF B0MOV P4CON,A ;018E---2FAE JMP Q0205 ;018F---8205 ADC_CH4: BSET ADM.6 ;0190---4EB1 ADC_CH4_WAIT: BTS1 ADM.5 ;0191---5DB1 JMP ADC_CH4_WAIT ;0192---8191 MOV A,ADB ;0193---1EB2 ADD AD_BUF4L,A ;0194---130D MOV A,#000H ;0195---2D00 ADC AD_BUF4H,A ;0196---1106 JMP Q0205 ;0197---8205 ADC_SELECT_CH5: MOV A,#095H ;0198---2D95 MOV ADM,A ;0199---1FB1 MOV A,#0DFH ;019A---2DDF B0MOV P4CON,A ;019B---2FAE JMP Q0205 ;019C---8205 ADC_CH5: BSET ADM.6 ;019D---4EB1 ADC_CH5_WAIT: BTS1 ADM.5 ;019E---5DB1 JMP ADC_CH5_WAIT ;019F---819E MOV A,ADB ;01A0---1EB2 ADD AD_BUF5L,A ;01A1---130E MOV A,#000H ;01A2---2D00 ADC AD_BUF5H,A ;01A3---1107 JMP Q0205 ;01A4---8205 ADC_ALL_FINISH: CLR ADC_TASK ;01A5---2B01 INCMS ADC_CNT ;01A6---1600 MOV A,ADC_CNT ;01A7---1E00 CMPRS A,#004H ;采样4次 JMP Q0205 ;01A9---8205 BCLR CF ;01AA---4286 RRCM AD_BUF0H ;01AB---0902 RRCM AD_BUF0L ;01AC---0909 BCLR CF ;01AD---4286 RRCM AD_BUF1H ;01AE---0903 RRCM AD_BUF1L ;01AF---090A BCLR CF ;01B0---4286 RRCM AD_BUF2H ;01B1---0904 RRCM AD_BUF2L ;01B2---090B BCLR CF ;01B3---4286 RRCM AD_BUF3H ;01B4---0905 RRCM AD_BUF3L ;01B5---090C BCLR CF ;01B6---4286 RRCM AD_BUF4H ;01B7---0906 RRCM AD_BUF4L ;01B8---090D BCLR CF ;01B9---4286 RRCM AD_BUF5H ;01BA---0907 RRCM AD_BUF5L ;01BB---090E BCLR CF ;01BC---4286 RRCM AD_BUF7H ;01BD---0908 RRCM AD_BUF7L ;01BE---090F BCLR CF ;01BF---4286 RRCM AD_BUF7H ;01C0---0908 RRCM AD_BUF7L ;01C1---090F MOV A,AD_BUF0H ;01C2---1E02 CMPRS A,AD_BUF1H ;01C3---0703 JMP Q01C7 ;01C4---81C7 MOV A,AD_BUF0L ;01C5---1E09 CMPRS A,AD_BUF1L ;01C6---070A Q01C7: BTS1 CF ;01C7---5A86 JMP Q01CD ;01C8---81CD MOV A,AD_BUF0L ;01C9---1E09 SUB A,AD_BUF1L ;01CA---220A MOV AD_R0,A ;01CB---1F10 JMP Q01CE ;01CC---81CE Q01CD: CLR AD_R0 ;01CD---2B10 Q01CE: MOV A,AD_BUF1H ;01CE---1E03 CMPRS A,AD_BUF2H ;01CF---0704 JMP Q01D3 ;01D0---81D3 MOV A,AD_BUF1L ;01D1---1E0A CMPRS A,AD_BUF2L ;01D2---070B Q01D3: BTS1 CF ;01D3---5A86 JMP Q01D9 ;01D4---81D9 MOV A,AD_BUF1L ;01D5---1E0A SUB A,AD_BUF2L ;01D6---220B MOV AD_R1,A ;01D7---1F11 JMP Q01DA ;01D8---81DA Q01D9: CLR AD_R1 ;01D9---2B11 Q01DA: MOV A,AD_BUF2H ;01DA---1E04 CMPRS A,AD_BUF3H ;01DB---0705 JMP Q01DF ;01DC---81DF MOV A,AD_BUF2L ;01DD---1E0B CMPRS A,AD_BUF3L ;01DE---070C Q01DF: BTS1 CF ;01DF---5A86 JMP Q01E5 ;01E0---81E5 MOV A,AD_BUF2L ;01E1---1E0B SUB A,AD_BUF3L ;01E2---220C MOV AD_R2,A ;01E3---1F12 JMP Q01E6 ;01E4---81E6 Q01E5: CLR AD_R2 ;01E5---2B12 Q01E6: MOV A,AD_BUF3H ;01E6---1E05 CMPRS A,AD_BUF4H ;01E7---0706 JMP Q01EB ;01E8---81EB MOV A,AD_BUF3L ;01E9---1E0C CMPRS A,AD_BUF4L ;01EA---070D Q01EB: BTS1 CF ;01EB---5A86 JMP Q01F1 ;01EC---81F1 MOV A,AD_BUF3L ;01ED---1E0C SUB A,AD_BUF4L ;01EE---220D MOV AD_R3,A ;01EF---1F13 JMP Q01F2 ;01F0---81F2 Q01F1: CLR AD_R3 ;01F1---2B13 Q01F2: MOV A,AD_BUF4H ;01F2---1E06 CMPRS A,AD_BUF5H ;01F3---0707 JMP Q01F7 ;01F4---81F7 MOV A,AD_BUF4L ;01F5---1E0D CMPRS A,AD_BUF5L ;01F6---070E Q01F7: BTS1 CF ;01F7---5A86 JMP Q01FD ;01F8---81FD MOV A,AD_BUF4L ;01F9---1E0D SUB A,AD_BUF5L ;01FA---220E MOV AD_R4,A ;01FB---1F14 JMP Q01FE ;01FC---81FE Q01FD: CLR AD_R4 ;01FD---2B14 Q01FE: MOV A,AD_BUF5L ;01FE---1E0E MOV AD_R5,A ;01FF---1F15 MOV A,AD_BUF7L ;0200---1E0F MOV AD_R7,A ;0201---1F3D CLR Y B0MOV Z,#00FH ;清除用于AD的BUFFER CALL CLR_RAM_BUF_LOOP ;0204---C10A Q0205: JMP Q0225 ;0205---8225 JMP $+1 JMP $+1 JMP $+1 JMP $+1 RET ;020A---0E00 ;======================================================================== START: MOV A,#07FH ;020B---2D7F B0MOV STKP,A ;020C---2FDF CLR PFLAG ;020D---2B86 CLR OSCM ;020E---2BCA ;Bit [4:3] CPUM 0: CPU operating mode control bit. ;0 = normal mode ;1 = sleep (power down) mode. Always enter normal mode after wakeup. ;Bit 2 CLKMD: Select instruction cycle clock (Fcpu) source ;0 Fcpu came form External high clock (Fhosc). Operation mode is normal mode. ;1 Fcpu came from Internal low clock (Flosc). Operation mode is slow mode. ;Bit1 STPHX: Stop High clock control bit. ;0=High clock free running. ;1=High clock stop. MOV A,#05AH ;020F---2D5A B0MOV WDTR,A ;0210---2FCC CALL CLR_RAM_BUF ;0211---C107 CALL INIT_PORT ;0212---C10F CALL INIT_ADC ;0213---C118 CALL INIT_HC164 ;0214---C123 CALL Q012F ;0215---C12F CALL INIT_TC0 ;0216---C12B BSET 36H.2 ;0217---4A36 B0MOV Y,#014H ;0218---3414 MAIN_DELAY_A: B0MOV R,#0FEH ;0219---32FE MAIN_DELAY_B: DECMS R ;021A---2682 JMP MAIN_DELAY_B ;021B---821A DECMS Y ;021C---2684 JMP MAIN_DELAY_A ;021D---8219 CALL Q024A ;读入参数 CALL Q024A ; Q0220: MOV A,#05AH ;清除看门狗 B0MOV WDTR,A ; JMP MAIN ;0222---8052 ;================================================================================ Q0223: JMP Q0229 ;0223---8229 Q0224: JMP Q0132 ;0224---8132 Q0225: JMP Q0389 ;0225---8389 Q0226: JMP Q0304 ;0226---8304 Q0227: JMP Q048F ;0227---848F Q0228: JMP Q0220 ;0228---8220 Q0229: BTS1 36H.1 ;1=需要保存参数到24C01中 JMP Q02C2 ;022A---82C2 INCMS 34H ;保存参数的延时 MOV A,34H ; SUB A,#0C8H ;022D---24C8 BTS1 CF ;022E---5A86 JMP Q02C2 ;022F---82C2 MOV A,#079H ;0230---2D79 MOV 34H,A ;保存参数的延时 BSET P2M.1 ;0232---49C2 BSET P2M.0 ;0233---48C2 CALL IIC_START ;0234---C2D3 B0MOV R,#0A0H ;0235---32A0 B0MOV Y,#000H ;0236---3400 CALL IIC_SEND_8BITS ;0237---C2C3 CALL Q02F2 ;0238---C2F2 BTS1 36H.2 ;0239---5A36 JMP Q023E ;023A---823E B0MOV R,#001H ;023B---3201 B0MOV Y,#000H ;023C---3400 JMP Q0240 ;023D---8240 Q023E: B0MOV R,#002H ;023E---3202 B0MOV Y,#000H ;023F---3400 Q0240: CALL IIC_SEND_8BITS ;0240---C2C3 CALL Q02F2 ;0241---C2F2 MOV A,35H ;0242---1E35 B0MOV R,A ;0243---2F82 B0MOV Y,#000H ;0244---3400 CALL IIC_SEND_8BITS ;0245---C2C3 CALL Q02F2 ;0246---C2F2 CALL IIC_STOP ;0247---C2DE BCLR 36H.1 ;1=需要保存参数到24C01中 JMP Q02C2 ;0249---82C2 ;====================================================================== Q024A: CALL IIC_START ;024A---C2D3 B0MOV R,#0A0H ;024B---32A0 B0MOV Y,#000H ;024C---3400 CALL IIC_SEND_8BITS ;024D---C2C3 CALL IIC_REC_ACK ;024E---C2E6 BTS1 36H.2 ;024F---5A36 JMP Q0254 ;0250---8254 B0MOV R,#001H ;0251---3201 B0MOV Y,#000H ;0252---3400 JMP Q0256 ;0253---8256 Q0254: B0MOV R,#002H ;0254---3202 B0MOV Y,#000H ;0255---3400 Q0256: CALL IIC_SEND_8BITS ;0256---C2C3 CALL IIC_REC_ACK ;0257---C2E6 CALL IIC_START ;0258---C2D3 B0MOV R,#0A1H ;0259---32A1 B0MOV Y,#000H ;025A---3400 CALL IIC_SEND_8BITS ;025B---C2C3 CALL IIC_REC_ACK ;025C---C2E6 B0MOV Y,#000H ;025D---3400 B0MOV R,#000H ;025E---3200 BCLR P2M.1 ;025F---41C2 CALL DELAY10US ;0260---C2FE Q0261: BCLR SCL ;0261---40D2 CALL DELAY10US ;0262---C2FE BSET SCL ;0263---48D2 CALL DELAY10US ;0264---C2FE BTS0 SDA ;0265---51D2 BSET R.0 ;0266---4882 BTS1 SDA ;0267---59D2 BCLR R.0 ;0268---4082 INCMS Y ;0269---1684 MOV A,Y ;026A---1E84 CMPRS A,#008H ;026B---0608 JMP Q026E ;026C---826E JMP Q0271 ;026D---8271 Q026E: BCLR CF ;026E---4286 RLCM R ;026F---0B82 JMP Q0261 ;0270---8261 Q0271: BSET P2M.1 ;0271---49C2 CALL IIC_STOP ;0272---C2DE BTS1 36H.2 ;0273---5A36 JMP Q027D ;0274---827D MOV A,R ;0275---1E82 CMPRS A,#MAX_VOLTAGE BTS0 CF ;0277---5286 CLR R ;0278---2B82 MOV A,R ;0279---1E82 MOV VOLTAGE_INDEX,A ;027A---1F1E BCLR 36H.2 ;027B---4236 RET ;027C---0E00 Q027D: MOV A,R ;0275---1E82 CMPRS A,#MAX_CURRENT BTS0 CF ;0277---5286 CLR R ;0278---2B82 MOV A,R ;0279---1E82 MOV DISCHARGE_INDEX,A ;027A---1F1E BSET 36H.2 RET Q02C2: JMP Q0224 ;02C2---8224