Thông báo

Collapse
No announcement yet.

"HELP" giao tiếp rs232 với pic16f877A với máy tính

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

  • "HELP" giao tiếp rs232 với pic16f877A với máy tính

    em có viết đoạn chương trình giao tiếp pc với pic 16f877 qua rs232 nhưng không biết lỗi chỗ nào mà kí tự truyền xuống pic rùi nhưng pic ko thực hiện chương trình tiếp theo các huynh giúp đệ với .sủa lỗi sai giúp đệ với ! đây là đoạn chương chình nạp vào pic :
    #include <16f877.h>
    #fuses hs,put,noprotect,nolvp,nowdt
    #use delay(clock=20000000)
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
    #byte portd=0x08
    #byte PORTa=0x05
    #byte portb=0x06
    char c;
    #int_RDA
    void RDA_INT()
    {
    c = getchar();
    if (c=="t")
    {
    setup_ccp1(CCP_PWM);
    set_pwm1_duty(512);
    }

    }

    void main()
    {
    setup_timer_2(T2_DIV_BY_16,255,1);
    enable_interrupts(INT_EXT);
    enable_interrupts(INT_RDA);
    enable_interrupts(GLOBAL);



    while(1)
    {

    }
    }

  • #2
    các huynh đài giúp đệ với !thank các huynh nhìu lắm !

    Comment


    • #3
      sửa if (c=="t") thành if (c=='t') là được

      Comment


      • #4
        Nguyên văn bởi thinking Xem bài viết
        sửa if (c=="t") thành if (c=='t') là được
        huynh cho đệ hỏi một chút đc ko ! em truyền các kí tự từ trên VB xuống VDK để điều khiển động cơ,giả sử như 't' là để động cơ quay thuận và 'n' để động cơ quay ngược và 's' để dừng động cơ ! nhưng khi VB truyền hết các kí tự đó xuống hết rùi nhưng VDK không đúng đây là code huynh xem hộ em sai chỗ nào đc ko thanh huynh nhìu nhìu :
        #include <16f877.h>
        #fuses hs,put,noprotect,nolvp,nowdt
        #use delay(clock=20000000)
        #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
        #byte portd=0x08
        #byte PORTa=0x05
        #byte portb=0x06
        char c;
        #int_RDA
        Receive_isr()
        {
        c = getc();
        if (c=='t')//quay thuan
        {

        setup_ccp1(CCP_OFF);
        setup_ccp2(CCP_PWM);
        set_pwm1_duty(512);
        }
        else if (c=='n') //quay nguoc
        {

        setup_ccp2(CCP_OFF);
        setup_ccp1(CCP_PWM);
        set_pwm1_duty(512);
        }

        if (c='s')//dung dong co
        {
        setup_ccp2(CCP_OFF);
        setup_ccp1(CCP_OFF);
        }
        }

        void main()
        {

        setup_timer_2(T2_DIV_BY_16,255,1);
        enable_interrupts(int_rda); //cho phep ngat noi tiep nhan.
        enable_interrupts(GLOBAL);
        while(1)
        {

        }

        }

        Comment


        • #5
          huynh cho em email để em hỏi cho tiện !

          Comment


          • #6
            mô phỏng phải thêm cổng not vào Tin, Tout của Max232 thì mới truyền nhận được(mạch thật thì phải bỏ đi) tôi cũng chả biết tại sao như thế, nhưng làm thật thì là thế...

            Comment


            • #7
              Nguyên văn bởi thacdtk72 Xem bài viết
              huynh cho đệ hỏi một chút đc ko ! em truyền các kí tự từ trên VB xuống VDK để điều khiển động cơ,giả sử như 't' là để động cơ quay thuận và 'n' để động cơ quay ngược và 's' để dừng động cơ ! nhưng khi VB truyền hết các kí tự đó xuống hết rùi nhưng VDK không đúng đây là code huynh xem hộ em sai chỗ nào đc ko thanh huynh nhìu nhìu :
              #include <16f877.h>
              #fuses hs,put,noprotect,nolvp,nowdt
              #use delay(clock=20000000)
              #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
              #byte portd=0x08
              #byte PORTa=0x05
              #byte portb=0x06
              char c;
              #int_RDA
              Receive_isr()
              {
              c = getc();
              if (c=='t')//quay thuan
              {

              setup_ccp1(CCP_OFF);
              setup_ccp2(CCP_PWM);
              set_pwm1_duty(512);
              }
              else if (c=='n') //quay nguoc
              {

              setup_ccp2(CCP_OFF);
              setup_ccp1(CCP_PWM);
              set_pwm1_duty(512);
              }

              if (c='s')//dung dong co => else if ('s' ==c)
              {
              setup_ccp2(CCP_OFF);
              setup_ccp1(CCP_OFF);
              }
              }

              void main()
              {

              setup_timer_2(T2_DIV_BY_16,255,1);
              enable_interrupts(int_rda); //cho phep ngat noi tiep nhan.
              enable_interrupts(GLOBAL);
              while(1)
              {

              }

              }
              Bạn xem lại chỗ bold đậm nha. code này luôn luôn dừng động cơ bạn à,

              Kinh nghiệm của mình là khi dùng điều kiện mình hay để ngược lại, ví dụ ('s' == c) , nếu lở gõ thiếu ký tự = là trình biên dịch báo lỗi liền.

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              • Andrea14
                Vấn đề về tốc độ quay
                bởi Andrea14
                Chào mọi người,

                Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
                Hôm qua, 12:42
              • bqviet
                Trả lời cho Đấu tắt điện cho máy tính bảng
                bởi bqviet
                Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                06-12-2025, 17:17
              • nguyendinhvan
                Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
                bởi nguyendinhvan
                Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
                05-12-2025, 19:59
              • afrendly
                Trả lời cho Đấu tắt điện cho máy tính bảng
                bởi afrendly
                Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
                04-12-2025, 01:27
              Đang tải...
              X