|
大家好 ,请教个AD问题<br /><br />详细请看以下,静态电流判断部分,当我AD采的值超过了2.0V的时候,没有反映,还是转跳到pASS这边,但是前部分的V0输出电压判断部分正常.<br /><br />我用访真过,采样的值正确.<br /><br />不知道那里问题啊!<br />LIST P=16F877A<br />#INCLUDE<P16F877a.INC> ;包含芯片头文件<br />__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_OFF&_LVP_OFF&_BODEN_OFF&_PWRTE_OFF&_WDT_OFF&_HS_OSC<br />;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡<br />;280116001 测试程序<br />;2008-12-26<br />;*******************************************<br />PORTA EQU 0X05<br />TRISA EQU 0X85<br />PORTB EQU 0X06<br />TRISB EQU 0X86<br />PORTC EQU 0X07<br />TRISC EQU 0X87<br />PORTD EQU 0X08<br />TRISD EQU 0X88<br />PORTE EQU 0X09<br />TRISE EQU 0X89<br />RP0 EQU 0X05<br />Z EQU 0X02<br />DC EQU 0X01<br />C EQU 0X00<br />ADCON1 EQU 0X9F<br />ADCON0 EQU 0X1F<br />INTCON EQU 0X0B<br />TMR0 EQU 0X01<br />N1 EQU 0X21<br />N2 EQU 0X22<br />N3 EQU 0X28<br />N4 EQU 0X27<br />TEMP1 EQU 0X20<br />STATUS EQU 0X03 <br />ADRESH EQU 0X1E<br />INTCON EQU 0X0B<br />PIR1 EQU 0X0C<br />PIE1 EQU 0X8C<br />TEMP0 EQU 0X23<br />;***********程序开始**************<br /> ORG 0X00<br /> NOP<br /> GOTO MAIN<br /> ORG 0X05<br />MAIN CALL RESTE<br /> CALL START<br /> GOTO CHECK<br />;************按键按下检查**********<br />CHECK BSF STATUS,RP0<br /> MOVLW 0X3F<br /> MOVWF TRISA<br /> MOVLW 0XBF<br /> MOVWF TRISB<br /> BSF TRISB,0<br /> BCF STATUS,RP0<br /> BTFSC PORTB,0; 按键判断 <br /> GOTO CHECK ; <br /> caLL DELAY_10MS; 延时10MS<br /> BTFSC PORTB,0; 继续判断<br /> BSF STATUS,RP0;关闭FAIL.PASS指示灯<br /> BCF TRISC,2<br /> BCF TRISC,3<br /> BCF STATUS,RP0<br /> BCF PORTC,2<br /> BCF PORTC,3<br /> BSF STATUS,RP0;选择为1<br /> BSF TRISB,0<br /> CALL RESTE<br /> CALL START<br />;*************第1步**************<br /> CALL DELAY_1S<br /> BCF STATUS,RP0<br /> CLRF ADRESH;<br /> MOVLW 0X30 ;显示1<br /> MOVWF PORTD<br /> BSF STATUS,RP0<br /> BCF TRISB,2;RB2为输出口<br /> BCF STATUS,RP0;选择体0<br /> BSF PORTB,2; OPEN S2<br /> CALL DELAY_250MS<br /> CALL P0<br />;************第2步***************<br />NEXT2 CALL DELAY_1S; 为1,到下一步<br /> BCF STATUS,RP0<br /> CLRF ADRESH;<br /> BSF STATUS,RP0<br /> MOVLW 0X00<br /> MOVWF TRISD<br /> BCF STATUS,RP0<br /> MOVLW 0XDB ;显示2<br /> MOVWF PORTD<br /> BSF STATUS,RP0<br /> BCF TRISB,1; RB1为输出口<br /> BCF STATUS,RP0;选择体0<br /> BSF PORTB,1;OPEN S1<br /> CALL DELAY_250MS<br /> CALL P1<br />;***********第3步*****************<br />NEXT3 CALL DELAY_1S ; 没有借位,下一步开始<br /> BCF STATUS,RP0<br /> CLRF ADRESH;<br /> BSF STATUS,RP0<br /> MOVLW 0X00;<br /> MOVWF TRISD;<br /> BCF STATUS,RP0;选择体0<br /> MOVLW 0X4F ;显示3<br /> MOVWF PORTD<br /> BCF PORTB,1;CLOSE S1<br /> BCF PORTB,2;CLOSE S2<br /> CALL DELAY_250MS<br /> BSF STATUS,RP0<br /> BCF TRISB,3 ;RB3.RB2 OUTPUT<br /> BCF TRISB,2<br /> BCF STATUS,RP0<br /> BSF PORTB,3; 打开S3<br /> BSF PORTB,2;再打开S2<br /> CALL DELAY_250MS<br /> CALL P3<br />;***********第4步*****************<br />NEXT4 CALL DELAY_1S ; 没有借位,下一步开始<br /> BCF STATUS,RP0<br /> CLRF ADRESH;<br /> BSF STATUS,RP0<br /> MOVLW 0X00<br /> MOVWF TRISD;<br /> BCF STATUS,RP0;选择体0<br /> MOVLW 0XE6 ;显示4<br /> MOVWF PORTD<br /> BCF PORTB,3;CLOSE S3<br /> BCF PORTB, 2;CLOSE S2<br /> CALL DELAY_250MS<br /> BSF STATUS,RP0;选择体1<br /> BCF TRISB,2 <br /> BCF TRISB,4<br /> BCF STATUS,RP0<br /> BSF PORTB,2;OPEN S2<br /> CALL DELAY_250MS<br /> BSF PORTB,4;OPEN S4<br /> CALL DELAY_250MS<br /> CALL P4<br />;**********第5步*****************<br />NEXT5 CALL DELAY_1S ; 没有借位,下一步开始<br /> BCF STATUS,RP0<br /> CLRF ADRESH;<br /> BSF STATUS,RP0<br /> MOVLW 0X00<br /> MOVWF TRISD<br /> BCF STATUS,RP0; 选择体0<br /> MOVLW 0X6D ;显示5<br /> MOVWF PORTD<br /> BCF PORTB,4;CLOSE S4<br /> BCF PORTB,2;CLOSE S2<br /> CALL DELAY_250MS; <br /> BSF STATUS,RP0;<br /> BCF TRISB,1;<br /> BCF TRISB,5;<br /> BCF STATUS,RP0;<br /> BSF PORTB,1;OPEN S1<br /> BSF PORTB,5;OPEN S5<br /> CALL DELAY_1S<br /> CALL P2<br />;*************PASS子程序****************<br />PASS BSF STATUS,RP0<br /> BCF TRISC,3<br /> BCF STATUS,RP0<br /> BSF PORTC,3; 点亮PASS LED<br /> GOTO CHECK ;再看启动按键有没有按下,重新开始测试<br /> RETURN<br />;**************FAIL子程序***************<br />FAIL BSF STATUS,RP0<br /> BCF TRISC,2 <br /> BCF STATUS,RP0;<br /> BSF PORTC,2 ;点亮FAIL LED<br /> GOTO CHECK ;再看启动按键有没有按下,重新开始测试<br /> RETURN<br />;********延时10MS子程序****************<br />DELAY_10MS MOVLW D'1'<br /> MOVWF N1<br />DELAY0 MOVLW D'2'<br /> MOVWF N2<br />DELAY1 DECFSZ N2,1<br /> GOTO DELAY1<br /> DECFSZ N1,1<br /> GOTO DELAY0<br /> RETURN<br />;********延时250MS子程序**************<br />DELAY_250MS MOVLW D'39'<br /> MOVWF N1;<br />DELAY2 MOVLW D'100';<br /> MOVWF N2;<br />DELAY3 MOVLW D'20';<br /> MOVWF N4<br />DELAY4 DECFSZ N4,1<br /> GOTO DELAY4<br /> DECFSZ N2,1<br /> GOTO DELAY3<br /> DECFSZ N1,1<br /> GOTO DELAY2<br /> RETURN<br />;***********延时1S子程序****************<br />DELAY_1S MOVLW 0X30<br /> MOVWF N2;<br />LOOP3 MOVLW 0XC8<br /> MOVWF N1;<br />LOOP2 MOVLW 0X24<br /> MOVWF N4;<br />LOOP1 DECFSZ N4,1<br /> GOTO LOOP1<br /> DECFSZ N1,1<br /> GOTO LOOP2;<br /> DECFSZ N2,1<br /> GOTO LOOP3<br /> RETURN<br />;**********初始化各寄存器**************<br />RESTE BCF STATUS,RP0 <br /> CLRF N1;<br /> CLRF N2;<br /> CLRF N3;<br /> CLRF N4;<br /> CLRF TEMP1;<br /> CLRF PORTB<br /> CLRF PORTC; <br /> CLRF PORTE;<br /> CLRF ADRESH;<br /> CLRF PIR1;<br /> CLRF INTCON;<br /> CLRF ADCON0;<br /> BSF STATUS,RP0<br /> CLRF ADCON1<br /> CLRF PIE1<br /> MOVLW 0XFF<br /> MOVWF OPTION_REG<br /> RETURN<br />;*************************************<br />START BSF STATUS,RP0;<br /> MOVLW 0X00; TRISD.TRISB.TRISC为输出口<br /> MOVWF TRISD;<br /> MOVLW 0X00<br /> MOVWF TRISC;<br /> BSF TRISB,0;RB0为输入口<br /> BCF STATUS,RP0<br /> MOVLW 0X3F;显示0<br /> MOVWF PORTD;<br /> RETURN<br />;*********V0输出电压判断子程序************<br />P0 BCF STATUS,5<br /> MOVLW B'01001001';<br /> MOVWF ADCON0<br /> BSF STATUS,5<br /> BSF STATUS,6<br /> MOVLW B'10000111'<br /> MOVWF OPTION_REG<br /> BSF STATUS,5<br /> BCF STATUS,6<br /> MOVLW B'00001110'<br /> MOVWF ADCON1<br /> BCF STATUS,5<br />S0 BTFSS INTCON,2<br /> GOTO S0<br /> BCF INTCON,2<br /> BSF ADCON0,2<br />WAIT0 BTFSS PIR1,6<br /> GOTO WAIT0<br /> MOVF ADRESH,W<br /> SUBLW 0XB7;3.6V-A/D<br /> BTFSC STATUS,0<br /> GOTO FAIL<br /> GOTO NEXT2<br /> RETURN<br />;******过放保护判断测试子程序**********<br />P1 BCF STATUS,5<br /> BCF STATUS,6<br /> MOVLW B'01001001';<br /> MOVWF ADCON0<br /> BSF STATUS,5<br /> BSF STATUS,6<br /> MOVLW B'10000111'<br /> MOVWF OPTION_REG<br /> BSF STATUS,5<br /> BCF STATUS,6<br /> MOVLW B'00001110'<br /> MOVWF ADCON1<br /> BCF STATUS,5<br />S1 BTFSS INTCON,2<br /> GOTO S1<br /> BCF INTCON,2<br /> BSF ADCON0,2<br />WAIT1 BTFSS PIR1,6<br /> GOTO WAIT1<br /> MOVF ADRESH,W<br /> SUBLW 0X19;0.5V-A/D<br /> BTFSC STATUS,0<br /> GOTO NEXT3<br /> GOTO FAIL<br /> RETURN<br />;*************静态电流判断<10UA**********<br />P2 BCF STATUS,5<br /> BCF STATUS,6<br /> BCF STATUS,0<br /> <br /> MOVLW B'01000001';<br /> MOVWF ADCON0<br /> BSF STATUS,5<br /> BSF STATUS,6<br /> MOVLW B'10000111'<br /> MOVWF OPTION_REG<br /> BSF STATUS,5<br /> BCF STATUS,6 <br /> MOVLW B'00001110'<br /> MOVWF ADCON1<br /> BCF STATUS,5<br />S2 BTFSS INTCON,2<br /> GOTO S2<br /> BCF INTCON,2<br /> BSF ADCON0,2<br />WAIT2 BTFSS PIR1,6<br /> GOTO WAIT2<br /> MOVF ADRESH,W<br /> ;CALL DELAY_250MS<br /> <br /> SUBLW 0X5B;2V-A/D<br /> BCF STATUS,RP0<br /> BCF STATUS,RP1<br /> BTFSC STATUS,C<br /> GOTO PASS<br /> GOTO FAIL<br /> RETURN<br />;******NTC保护保测试子程序************<br />P3 BCF STATUS,5<br /> MOVLW B'01001001';<br /> MOVWF ADCON0<br /> BSF STATUS,5<br /> BSF STATUS,6<br /> MOVLW B'10000111'<br /> MOVWF OPTION_REG<br /> BSF STATUS,5<br /> BCF STATUS,6<br /> MOVLW B'00001110'<br /> MOVWF ADCON1<br /> BCF STATUS,5<br />S3 BTFSS INTCON,2<br /> GOTO S3<br /> BCF INTCON,2<br /> BSF ADCON0,2<br />WAIT3 BTFSS PIR1,6<br /> GOTO WAIT3<br /> MOVF ADRESH,W<br /> SUBLW 0X19;0.5V-A/D<br /> BTFSC STATUS,0<br /> GOTO NEXT4<br /> GOTO FAIL<br /> RETURN<br />;****** RT保护测试子程序**********<br />P4 BCF STATUS,5<br /> MOVLW B'01001001';<br /> MOVWF ADCON0<br /> BSF STATUS,5<br /> BSF STATUS,6<br /> MOVLW B'10000111'<br /> MOVWF OPTION_REG<br /> BSF STATUS,5<br /> BCF STATUS,6<br /> MOVLW B'00001110'<br /> MOVWF ADCON1<br /> BCF STATUS,5<br />S4 BTFSS INTCON,2<br /> GOTO S4<br /> BCF INTCON,2<br /> BSF ADCON0,2<br />WAIT4 BTFSS PIR1,6<br /> GOTO WAIT4<br /> MOVF ADRESH,W<br /> SUBLW 0X19;0.5V-A/D<br /> BTFSC STATUS,0<br /> GOTO NEXT5<br /> GOTO FAIL<br /> RETURN<br />;*****************************<br /> END<br /> |
|