Thông báo

Collapse
No announcement yet.

ngắt RB4-RB7 giúp em

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

  • ngắt RB4-RB7 giúp em

    #include <16f877a.h>
    #include <def_877a.h>
    #fuses XT,NOWDT,NOPROTECT,NOLVP
    #use delay(clock=4000000)
    #int_RB
    void ngat_RB()
    {
    if(RB4==0)
    {
    portd=0b00000101;
    }
    if(RB5==0)
    {
    portd=0b11000101;
    }
    if(RB6==0)
    {
    portd=0b11110101;
    }
    if(RB7==0)
    {
    portd=0xff;
    }
    }
    void main()
    {
    trisb=0xff;
    trisd=0x00;
    portd=0x00;
    enable_interrupts(global);
    enable_interrupts(int_RB);
    ext_int_edge(H_to_L);
    while(true)
    {
    portd=0xff;
    }
    }


    tại sao khi 1 trong 4 chân rb4-rb7 xuống mức thấp nó ko xảy ra ngắt nhỉ.ai giúp em với

  • #2
    Hi,
    Bác phải làm như ri: if(!input(PIN_B4)) output_d(0b00000101);

    Nếu muốn mần theo kiểu của bác thì phải có khai báo:
    #byte RD = getenv("SFR: PORTD")
    #byte RB = getenv("SFR: PORTB")
    #bit RB4 = RB.4
    #bit RB5 = RB.5
    ....

    Khi đó bác có thể viết theo kiểu if(RB4 == 0) RD = 0x05;
    Khuyến cáo không nên dùng mấy tên cổng trong lập trình mà nên khai báo chức năng của cổng đó làm gì ví dụ RB4 dùng làm nút Enter thì khai báo:
    #bit Enter = RB.4 thay cho dòng #bit RB4 = RB.4.
    Khi đó đọc source code dễ hiểu hơn với ví dụ trên thì người đọc sẽ hiểu rằng khi bấm nút Enter thì chuyện gì sẽ xảy ra... Với cách viết này đôi khi bác có thể copy code của chip này làm code của loại chip khác mà chỉ cần chỉnh sửa rất ít.
    Thân ái.
    Last edited by Hard; 22-03-2012, 23:26.
    Đường đến những ngày vinh quang không còn xa
    Con đường chúng ta... chúng ta đã chọn.

    Comment


    • #3
      Để if( RB4==0) cũng đc. Bạn xem luồng này nhé: CCS C for PIC16F877A - Page 2 - PIC Vietnam
      Web:
      ->Nhận thiết kế, hoàn thiện dự án, sản phẩm điện tử<-
      -->Giải pháp GSM/GPRS/GPS - Công nghệ RFID<--

      Comment


      • #4
        Nguyên văn bởi 222222 Xem bài viết
        #include <16f877a.h>
        #include <def_877a.h>
        #fuses XT,NOWDT,NOPROTECT,NOLVP
        #use delay(clock=4000000)
        #int_RB
        void ngat_RB()
        {
        if(RB4==0)
        {
        portd=0b00000101;
        }
        if(RB5==0)
        {
        portd=0b11000101;
        }
        if(RB6==0)
        {
        portd=0b11110101;
        }
        if(RB7==0)
        {
        portd=0xff;
        }
        }
        void main()
        {
        trisb=0xff;
        trisd=0x00;
        portd=0x00;
        enable_interrupts(global);
        enable_interrupts(int_RB);
        ext_int_edge(H_to_L);
        while(true)
        {
        portd=0xff;
        }
        }


        tại sao khi 1 trong 4 chân rb4-rb7 xuống mức thấp nó ko xảy ra ngắt nhỉ.ai giúp em với
        thêm lệnh này vào hàm main:
        port_b_pullups(TRUE);//dung r keo len nguon
        while(true)
        {
        portd=0xff;
        }
        viết thế này ngắt có xảy ra bạn cũng không thấy portd nó thay đổi.
        |

        Comment


        • #5
          cho mình hỏi xíu

          làm sao để thoát ra khỏi ngắt vậy.hay là khi 1 trong 4 chân RB4-RB7 lên mức logic 1 thì thoát ra khỏi ngắt lúcđó portd=0xff phải hok?ai chỉ giúp mình với

          Comment


          • #6
            Nguyên văn bởi 222222 Xem bài viết
            làm sao để thoát ra khỏi ngắt vậy.hay là khi 1 trong 4 chân RB4-RB7 lên mức logic 1 thì thoát ra khỏi ngắt lúcđó portd=0xff phải hok?ai chỉ giúp mình với
            while(true)
            {
            }
            |

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            • 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
            • nick22
              Trả lời cho Máy điện châm ?
              bởi nick22
              Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
              01-12-2025, 13:23
            Đang tải...
            X