Thông báo

Collapse
No announcement yet.

CẦN giúp đỡ cho khai báo trong PIC 12f675

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

  • CẦN giúp đỡ cho khai báo trong PIC 12f675

    trước e cũng poss 1 bài cho để tài này, nhưng mãi chả thấy ai giúp đỡ , sốt ruột .quá nên poss thêm bài này nữa, đam mê mà, khúc mắc nên kẹt mãi chả đi tiếp đk, mong amin đừng bane e nhé. hihi
    m đang lập trình cho con pic 12f675 mọi không hiểu sao trong phần khai báo I/O đã khai báo cho chân MCRL làm chân input trong phần #define ở code cũng thế. không khai báo nhưng khi tex vẫn thấy trễ ở chân đấy. đây là code e viết mong mọi người giúp đỡ.



    #include <12F675.h>
    #device ADC=10
    #fuses INTRC_IO,NOWDT,NOPUT,NOPROTECT,NOCPD,NOMCLR
    #use delay(clock=4000000)
    #define GP0 PIN_A0
    #define GP1 PIN_A1
    #define GP2 PIN_A2
    #define GP3 PIN_A3_OFF
    #define GP4 PIN_A4
    #define GP5 PIN_A5
    void main()
    {
    int16 k,t,p,i;
    while(1){
    set_tris_a(0x00);
    output_a(0x00);
    output_a(0x00);
    delay_ms(300);
    output_a(0xFF);
    delay_ms(300);
    set_tris_a(0);
    for(k=0x01; k<0x40; k=k<<1){output_a(k);delay_ms(200);}
    for(k=0x40;k>0x01;k>>=1){output_a(k);delay_ms(200) ;}
    for(i=0x4,p=0x2,t=0x10;p>0;p>>=1){output_a(p|t);de lay_ms(400);t<<=1;}
    }
    }

  • #2
    Nguyên văn bởi kaka_hjtmjss Xem bài viết
    trước e cũng poss 1 bài cho để tài này, nhưng mãi chả thấy ai giúp đỡ , sốt ruột .quá nên poss thêm bài này nữa, đam mê mà, khúc mắc nên kẹt mãi chả đi tiếp đk, mong amin đừng bane e nhé. hihi
    m đang lập trình cho con pic 12f675 mọi không hiểu sao trong phần khai báo I/O đã khai báo cho chân MCRL làm chân input trong phần #define ở code cũng thế. không khai báo nhưng khi tex vẫn thấy trễ ở chân đấy. đây là code e viết mong mọi người giúp đỡ.



    #include <12F675.h>
    #device ADC=10
    #fuses INTRC_IO,NOWDT,NOPUT,NOPROTECT,NOCPD,NOMCLR
    #use delay(clock=4000000)
    #define GP0 PIN_A0
    #define GP1 PIN_A1
    #define GP2 PIN_A2
    #define GP3 PIN_A3_OFF
    #define GP4 PIN_A4
    #define GP5 PIN_A5
    void main()
    {
    int16 k,t,p,i;
    while(1){
    set_tris_a(0x00);
    output_a(0x00);
    output_a(0x00);
    delay_ms(300);
    output_a(0xFF);
    delay_ms(300);
    set_tris_a(0);
    for(k=0x01; k<0x40; k=k<<1){output_a(k);delay_ms(200);}
    for(k=0x40;k>0x01;k>>=1){output_a(k);delay_ms(200) ;}
    for(i=0x4,p=0x2,t=0x10;p>0;p>>=1){output_a(p|t);de lay_ms(400);t<<=1;}
    }
    }
    trễ là phải rồi.
    giả sử khi k=0x08 mà bạn (output_a) thì không có PIN nào tác dụng cả nên nó trễ ở chỗ đó.(GP3 chỉ là chân input).
    khắc phục:kiểm tra k==0x08 bỏ qua không (output_a) cho k dịch tiếp.
    Code:
    #include <12F675.h>
    #device ADC=10
    #fuses INTRC_IO,NOWDT,NOPUT,NOPROTECT,NOCPD,NOMCLR
    #use delay(clock=4000000)
    #define GP0 PIN_A0
    #define GP1 PIN_A1
    #define GP2 PIN_A2
    #define GP3 PIN_A3_OFF
    #define GP4 PIN_A4
    #define GP5 PIN_A5
    void main()
    {
    int16 k,t,p,i;
    while(1){
    set_tris_a(0b00001000);//GP3=input
    output_a(0x00);
    output_a(0x00);
    delay_ms(300);
    output_a(0xFF);
    delay_ms(300);
    set_tris_a(0);
    for(k=0x01; k<0x40; k=k<<1){
    if(k==0x08)
    {
    }
    else
    {
    output_a(k);delay_ms(200);}
    }
    }
    }
    Last edited by tdm; 08-03-2012, 18:54.
    |

    Comment


    • #3
      thật sự e cảm ơn a nhé. e tex được rồi. hi. mới làm quen với pic nên nhiều cái còn bỡ ngỡ.trước e cùng dùng lệnh if nhưng vẫn không đk. thì ra là ntn. hihi. thank a nhiều nhé.

      Comment


      • #4
        à. a cho e hỏi thêm. trong c có lệnh nào lồng vòng lặp không a. VD e muốn trong vòng lặp for lệnh dịch bit được thực hiện thêm nhiều lần với mỗi lần là một thời gian khác nhau.
        for(k=0x01; k<0x40; k=k<<1){output_a(k);delay_ms(200);}
        for(k=0x01; k<0x40; k=k<<1){output_a(k);delay_ms(150);}
        for(k=0x01; k<0x40; k=k<<1){output_a(k);delay_ms(100);}
        nếu viết ntn thì dài dòng lắm.
        mong a giúp đỡ nhé. thân gửi.

        Comment


        • #5
          đã giúp thì giúp cho chót. a giải thích lại cho e đoạn kiểm tra chân GP3 đi. e vẫn chưa hiểu lắm. nếu e tiếp tục viết thêm nhiều lệnh tương tự, thì lần nào cũng phải kiểm tra bằng if ạ? e muốn gộp vào 1 lệnh chung luôn đk không?

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X