Thông báo

Collapse
No announcement yet.

NhỜ giÚp code nÀy

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

  • NhỜ giÚp code nÀy

    TOI KHONG HIEU SAO 2 CHÂN RD4 VÀ RD5 CỦA TÔI NÓ CỨ Ở MỨC THẤP.
    CHO DÙ TÔI VIẾT CHƯƠNG TRÌNH KHÔNG PHẢI THẾ. TÔI ĐỌC ENCODER TỪ CHÂN T1CKI CỦA 18F4331 NHƯNG ĐỌC HOÀI KHÔNG ĐƯỢC .MỌI NGƯỜI GIÚP TÔI VỚI;

    #include <18f4331.h>
    #include <def_4331.h>

    #fuses HS
    #FUSES NOWDT
    #FUSES NOPROTECT
    #FUSES NOLVP
    /*#FUSES NOBROWNOUT
    #FUSES NOPUT
    #FUSES NOCPD
    #FUSES NODEBUG
    #FUSES NOFCMEN
    #FUSES NOCPB
    #FUSES HPOL_LOW
    #FUSES NOPWMPIN
    #FUSES STVREN
    */

    #use delay(clock=20000000)

    #use fast_io(b)
    #use fast_io(c)
    #use fast_io(a)
    #use fast_io(d)
    #use fast_io(e)

    #INT_TIMER1

    VOID NGAT_TIMER1()
    {

    }
    #zero_ram

    VOID MAIN()
    {
    INT16 A;
    TRISC0=1;
    TRISD5=0;
    TRISD4=0;


    // DOC ENCODER TU CHAN T1CKI
    // enable_interrupts(INT_TIMER1 );
    // enable_interrupts(GLOBAL );
    //SETUP_TIMER_1(T1_INTERNAL); //DUNG CHE DO TIMER
    // setup_timer_1(T1_DISABLED);// che do 16 bit
    //setup_timer_1(T1_EXTERNAL);// CHE DO COUTER
    //setup_timer_1(T1_EXTERNAL_SYNC);//timer dong bo xung vao tu T1CKI
    // setup_timer_1(T1_DIV_BY_1); // dung bo chia 1-1;
    //setup_timer_1(T1_CLK_OUT);
    setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1|T1_CLK_OUT);



    WHILE(true)

    {
    set_timer1(0);
    delay_ms(1000);
    IF(GET_TIMER1()<2000) RD4=0;
    ELSE RD5=0;

    }
    }

  • #2
    thì bạn có gán nó lên mức cao đâu?
    Ôi! Từ lý thuyết đến thực tế.

    Comment


    • #3
      ý mình là mình dùng lệnh if thì chỉ có 1 trong 2 chân mức thấp thôi chứ. sao lại 2 chân cùng xảy ra được

      Comment


      • #4
        Bác chưa ràng buộc trong hàm If,phải sửa lại như thế này

        IF(GET_TIMER1()<2000)
        {
        RD4=0;
        RD5=1;
        }
        ELSE
        {
        RD5=0;
        RD4=1;
        }

        Đảm bảo là nó chạy theo ý của bác ngay
        Ẹc,e mới học CCS được 2 tuần(mới chuyển nhà từ 89 qua) cho hỏi 3 cái dòng lệnh này để làm gì vậy nhỉ:
        TRISC0=1;
        TRISD5=0;
        TRISD4=0;


        email:
        Giá mà mạch điện tử không có nhiễu (noise) thì mình bây giờ đã là ... đại gia

        Comment


        • #5
          Bác chưa ràng buộc trong hàm If,phải sửa lại như thế này

          IF(GET_TIMER1()<2000)
          {
          RD4=0;
          RD5=1;
          }
          ELSE
          {
          RD5=0;
          RD4=1;
          }

          Đảm bảo là nó chạy theo ý của bác ngay
          Ẹc,e mới học CCS được 2 tuần(mới chuyển nhà từ 89 qua) cho hỏi 3 cái dòng lệnh này để làm gì vậy nhỉ:
          TRISC0=1;
          TRISD5=0;
          TRISD4=0;


          email:
          Giá mà mạch điện tử không có nhiễu (noise) thì mình bây giờ đã là ... đại gia

          Comment


          • #6
            Bạn có thể dùng đoạn chương trình này để làm việc với encoder.
            khai báo dùng encoder
            void init_QEI()
            {
            DFLTCON = 0x70; //check agian 0111 1000
            VELM =1;
            ERROR =1;
            //SET QEI enable in 4x update, INDX reset Position counter
            QEIM2 =1;
            QEIM1 =1;
            QEIM0 =0;
            //Set Velocity Pulse Ratio 1:1
            PDEC1 =0;
            PDEC0 =0;
            MAXCNT = 40000;
            POSCNT = 20000;
            }

            hàm POSCNT sẽ thay đổi theo encoder
            Quang Nhat
            ---------------------------------------
            Yahoo :quangnhat85ls
            Mail :
            Nhận thiết kế và ép nhựa cho đồ điện tử

            Comment


            • #7
              mình dung 2 encorder nên không dùng module qei dc. 18f4331 có 1 bộ encorder chứ mấy.mình muốn dùng timer.

              mình xin hỏi bác otacon tý nhé. hàm if một lệnh thì đâu cần để trong {} mình củng thử rồi mà chưa đc.

              còn lệnh trisc0=1; đó thật sự không fai lệnh đau bạn.

              mình khai báo địa chỉ thanh ghi #bit TRISC7 =0xF94.7
              #bit TRISC6 =0xF94.6
              #bit TRISC5 =0xF94.5
              #bit TRISC4 =0xF94.4
              #bit TRISC3 =0xF94.3
              #bit TRISC2 =0xF94.2
              #bit TRISC1 =0xF94.1
              #bit TRISC0 =0xF94.0

              mình khai báo mấy cái này trong file h kem theo đó.

              sau đó mình không dùng set_tris_c() nua

              địa chỉ cảu mấy cái này có trong datasheet dó bạn

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...
              X