Thông báo

Collapse
No announcement yet.

cho mình hỏi chương trình này sai chỗ nào.

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

  • cho mình hỏi chương trình này sai chỗ nào.

    .mình dùng ngắt ngoài với nv là bình thương vdk bat 1 led đơn tại chân P2^0 và khi có ngắt ngoài thì tắt led ở chân P2^0 và bật led ở chân P2^1 sau 1s thì bật lại led P2^0 và tắt led P2^1. mình nạp thì nó chỉ sáng 1 led mà chả thấy bật tắt gì.
    #include <REGX52.H>
    #define bat 1
    #define tat 0
    sbit led1 = P2^0;
    sbit led2 = P2^1;

    void delay(long time) // ham tre
    {
    while(time--);
    }

    void int_0(void) interrupt 0 // chuong trinh phuc vu ngat
    {
    led1=tat;
    led2=bat;
    delay(20000);
    led1=bat;
    led2=tat;
    }
    void main(void)
    {
    EA=1; //cho phep ngat toan cuc
    EX0=1; // cho phep ngat ngoai
    IT0=1;
    led1=bat;
    led2=tat;
    while(1);
    }

  • #2
    EX0=1; // cho phep ngat ngoai
    IT0=1;
    EA=1; //cho phep ngat toan cuc
    Bản thử đạo lại nthe này xem đc ko nhé.

    Comment


    • #3
      không được bạn ạ.thế nó mới đểu, chả hiểu tại sao
      Nguyên văn bởi phuphuongbk Xem bài viết
      EX0=1; // cho phep ngat ngoai
      IT0=1;
      EA=1; //cho phep ngat toan cuc
      Bản thử đạo lại nthe này xem đc ko nhé.

      Comment


      • #4
        vậy bạn thêm đoạn này trong vòng while rồi chạy thử xem dữ liệu chân P2.2 đã đúng chưa nhé
        while ( 1 )
        {
        P2_2 = 0;
        delay(20000);
        P2_2=1;
        delay(20000);
        }
        thay thế hàm while trong main() ý nhé bạn.mục đích kiểm tra mạch bạn đã ok chưa thôi.

        Comment


        • #5
          Nguyên văn bởi banhcay1234 Xem bài viết
          .mình dùng ngắt ngoài với nv là bình thương vdk bat 1 led đơn tại chân P2^0 và khi có ngắt ngoài thì tắt led ở chân P2^0 và bật led ở chân P2^1 sau 1s thì bật lại led P2^0 và tắt led P2^1. mình nạp thì nó chỉ sáng 1 led mà chả thấy bật tắt gì.
          #include <REGX52.H>
          #define bat 1
          #define tat 0
          sbit led1 = P2^0;
          sbit led2 = P2^1;

          void delay(long time) // ham tre
          {
          while(time--);
          }

          void int_0(void) interrupt 0 // chuong trinh phuc vu ngat
          {
          led1=tat;
          led2=bat;
          delay(20000);
          led1=bat;
          led2=tat;
          }
          void main(void)
          {
          EA=1; //cho phep ngat toan cuc
          EX0=1; // cho phep ngat ngoai
          IT0=1;
          led1=bat;
          led2=tat;
          while(1);
          }
          bạn xem lại phần mềm mô phỏng hay nối nhầm chân ngắt không? Mình giữ nguyên code của bạn chạy ầm ầm mà.!

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X