Thông báo

Collapse
No announcement yet.

[OnChange] Hỏi về ngắt RB và nút bấm

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

  • [OnChange] Hỏi về ngắt RB và nút bấm

    Em đang viết một chương trình cho 16f877a, cụ thể là cho ngắt ở RB, khi bấm nút ở RB0 thì biến tương ứng sẽ được tăng lên 1, sau thời gian t (ms) mà không bấm nút ở chân RB1 thì biến này sẽ trả về 0, ngược lại thì xuất tín hiệu ra chân RA. Rắc rối ở chỗ khi bấm nút mà nhả ra liền thì không tăng biến lên 1 được, phải dùng công tắc nó mới nhận? em nghĩ nên giái quyết như quét bàn phím nhưng không biết phải lập trình thế nào? Nhờ mọi người giúp, em mới học được mấy tháng thôi.
    [Thành viên mới]

  • #2
    trời, cái này cũng không ai giúp mình sao ?

    Comment


    • #3
      Bạn nên post code để mọi người giúp
      Diễn đàn Vi điều khiển:

      Comment


      • #4
        Nguyên văn bởi vaa_dtvn Xem bài viết
        Em đang viết một chương trình cho 16f877a, cụ thể là cho ngắt ở RB, khi bấm nút ở RB0 thì biến tương ứng sẽ được tăng lên 1, sau thời gian t (ms) mà không bấm nút ở chân RB1 thì biến này sẽ trả về 0, ngược lại thì xuất tín hiệu ra chân RA. Rắc rối ở chỗ khi bấm nút mà nhả ra liền thì không tăng biến lên 1 được, phải dùng công tắc nó mới nhận? em nghĩ nên giái quyết như quét bàn phím nhưng không biết phải lập trình thế nào? Nhờ mọi người giúp, em mới học được mấy tháng thôi.
        [Thành viên mới]
        Hỏi thế này mơ hồ quá ! Chắc bạn định làm kiểu khóa Code hay bập bênh , báo động?

        bit i,j;
        i=0;
        j=0;
        if(RB0) {i=1;}

        while(timer--) {if(RB1){i=0; j=1;} }
        // ckeck here
        if(!j) // RB1 not pressed
        { RA0=1; } // Toggle RA0 high

        --- ở đây tôi VD cho bạn 1 cách đơn giản bằng cách hỏi vòng... Bạn có thể dùng timer , ngắt để đo đếm thời gian ( trong khoảng thời gian đó bạn có thể tận dụng làm được rất nhiều việc mà không lãng phí tài nguyên .
        Tôi thích màu đen nên tôi đã chọn CAMRY 3.5Q

        Comment


        • #5
          hi, cảm ơn bạn, mình đã t ìm được câu trả lời rồi. Mình định làm một mạch điện tự động, khi có một xung trên chân RB0 thì bật đèn 1 sáng, và khi có một xung điện khác trên chân RB1 thì đèn 1 tắt. Nhưng gặp chút rắc rối ở phần ngắt, khi xảy ra ngắt trên RB thì làm sao biết có ngắt ở chân nào nên mới hỏi thôi. Giờ mình đã tìm được câu trả lời rồi.

          Comment


          • #6
            khi vào ngắt thì việc đầu tiên phải làm là xóa cờ ngắt và các nguyên nhân gây ngắt, ở đây là dùng lệnh movf PORTB, f, sau đó thì kiểm tra xem PORTB mấy thay đổi, bằng lệnh btfss hoặc btfsc.

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X