Thông báo

Collapse
No announcement yet.

ADC pic16F887 help

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • ADC pic16F887 help

    Mọi người giúp mình lỗi sau vơi.
    Mình đang làm mạch vơi Pic 16F887 sử dụng 4 kenh ADC, san0,san1,san2,san3,san4. các chan ADC đều có trở kéo mass 10k. nhưng trong một số mạch của mình có hiện tượng(chỉ một số mạch bị) khi có tín hiệu đầu vào từ san3 thì doc san0 cũng có giá trị nhỏ(giá trị 8 bit =1->3)( mà chân này chưa có tín hiệu vào).
    Chưong trình của mình như sau(Minh dung ccs c):
    #include<16f887.h>
    #fuses HS,NOWDT,NOPROTECT,NOLVP
    #device ADC=8
    #use delay(clock=10000000)
    //#include<lcd.c>
    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
    //Phân khai báo cong mình ko dưa vào
    void init(){
    int8 i,k=0;
    trisd=0x00;
    trisb=0xff;
    trisa=0xff;
    SETUP_ADC_PORTS(sAN0|sAN1|sAN2|sAN3|sAN4|VSS_VDD );
    setup_adc( ADC_CLOCK_INTERNAL );
    }
    Đây là chương trình con dọc adc
    void sampling(){
    int16 i;
    int8 a,b,c,r,m;
    max=0;max1=0;max2=0;r=0;
    for(i=0; i<=200; ++i) {
    delay_us(300);//delay_us(200);
    set_adc_channel(0);
    a = Read_ADC();
    if(a>max)
    max=a;
    set_adc_channel(1);
    delay_us(300);
    b = Read_ADC();
    if(b>max1)
    max1=b;
    set_adc_channel( 2);
    delay_us(300);
    c = Read_ADC();
    if(c>max2)
    max2=c;
    }
    if(max<=1){
    set_adc_channel( 3);
    for(i=0;i<=10;i++){
    m = Read_ADC();
    if(m>r)r=m;
    delay_us(50);
    }
    }
    }

Về tác giả

Collapse

chip_nho Tìm hiểu thêm về chip_nho

Bài viết mới nhất

Collapse

Đang tải...
X