Thông báo

Collapse
No announcement yet.

giúp e xuất PORTD cho 16f877a

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

  • giúp e xuất PORTD cho 16f877a

    cho e hỏi taị sao Port D của con Pic 16f877a khi e cho nó xuất toàn bộ ở mức cao thì ở d1 và d2 nó ko dc ak. mà tại sao lại như vậy
    hướng dân giúp e là cho nó xuất dc vs e dùng CCS de lập trình. e dính kèm cái code vs mạch thử lun
    trong code khi case = 2 thì khi bấm c2 và c3 thì d1 d2 lại xuất mức 1 e không biết minh có sai chổ nào ko --http://sdrv.ms/15P4Ron --day là file mạch
    */
    #include <16F877A.h>
    #fuses NOWDT,PUT,XT,NOPROTECT
    #use delay(clock=20000000) //su dung thach anh tan so 20MHz
    int8 count,time1,time2,l1,l2,l3,l4,i,t2,t3,t1,d;
    unsigned char LED[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0}; //Ma led 7 thanh
    unsigned char den[6]={0x21,0X22,0x0C,0x14};
    //Chuong trinh ngat TIMER0 theo chu ki 1s giam thoi gan xuong 1 don vi

    void main()
    { int8 cd,v,t,j,kt, l1,l2,z,l;
    set_tris_c(0xff);
    set_tris_b(0x00);
    set_tris_e(0x00);
    set_tris_d(0x00);
    set_tris_a(0x00);
    if(input(pin_c5)==0)l= read_eeprom(0x20);
    else {
    if(input(pin_c5)==1)l= read_eeprom(0x21);}
    cd=0;
    while(true) //thiet lap thoi gian cho he thong
    {
    if(input(pin_c0)==0){
    v=1;}
    if(input(pin_c0)==1 && v==1)
    {v=0;
    cd++;

    }
    if(cd==3){cd=0;}
    switch (cd){
    case 0 :
    output_high(pin_e0);
    output_low(pin_e2);
    output_low(pin_e1);
    output_d(0xff);
    output_b(0xff);
    break;
    case 1:
    output_high(pin_e1);
    output_low(pin_e0);
    output_low(pin_d0);
    output_low(pin_d1);
    output_low(pin_d2);
    output_low(pin_d3);
    output_a(0x12);
    if(input(pin_c2)==0)
    {kt=kt+5;
    delay_ms(200);

    }
    if(input(pin_c3)==0)
    {
    kt++;
    delay_ms(200);
    }
    if(input(pin_c4)==0)
    {
    kt=kt-5;
    delay_ms(200);

    }

    if(kt>99){kt=0;}

    l1 = kt%10;
    l2 = kt/10;
    if(l1==10) l1=0;
    if(l1==10) l2=0;
    output_b(LED[l2]);
    output_high(pin_d4);
    delay_ms(2);
    output_low(pin_d4);
    output_b(LED[l1]);
    output_high(pin_d5);
    delay_ms(2);
    output_low(pin_d5);
    if(input(pin_c5)==0 && input(pin_c1)== 0)
    {
    write_eeprom(0x20,kt);
    }
    else
    { if(input(pin_c5)==1 && input(pin_c1)== 0)
    {
    write_eeprom(0x21,kt);
    }
    }
    break;
    case 2 :
    output_high(pin_e2);
    output_low(pin_e1);

    if(input(pin_c2)==0)
    {
    output_a(0x0c);
    delay_ms(50);
    }
    if(input(pin_c3)==0)
    {
    output_a(0x21);
    delay_ms(50);
    }
    if(input(pin_c4)==0)
    {
    output_a(0x0c);
    delay_ms(50);
    }
    break;}


    }



    }

  • #2
    Mạch nguyên lý đâu bạn? mà có phải port C bạn nối với các nút bấm ko?

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X