Thông báo

Collapse
No announcement yet.

Xin sửa giúp CODE PIC 16f877a

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

  • Xin sửa giúp CODE PIC 16f877a

    #include <16f877a.h>// Khai bao thu vien
    #fuses PUT, HS, NOWDT, NOPROTECT, NOLVP// Cau hinh
    #USE delay(clock=20000000)// Khai bao tan so thach anh
    #use fast_io(b)// Su dung cong b de lap trinh
    #define portb 0x06
    int8 mode,i;
    byte temp;
    void program1(){
    output_b(0);
    delay_ms(500);
    output_b(255);
    delay_ms(500);
    }
    void program2(){
    output_b(0);
    delay_ms(500);
    output_b(0x80);
    delay_ms(500);
    }
    void program3(){
    output_b(0);
    delay_ms(500);
    output_b(0xC0);
    delay_ms(500);
    }
    void program4(){
    output_b(0);
    delay_ms(500);
    output_b(0xE0);
    delay_ms(500);

    }
    void program5(){
    output_b(0);
    delay_ms(500);
    output_b(0xF0);
    delay_ms(500);

    }
    void program6(){
    output_b(0);
    delay_ms(500);
    output_b(0xF8);
    delay_ms(500);

    }
    void program7(){
    output_b(0);
    delay_ms(500);
    output_b(0xFC);
    delay_ms(500);

    }
    void program8(){
    output_b(0);
    delay_ms(500);
    output_b(0xFE);
    delay_ms(500);

    }
    void program9(){
    temp=0xFF;
    for(i=0;i<=8;i++){
    portb=temp;

    delay_ms(500);
    temp=temp>>1;
    }
    }

    void main(){
    set_tris_b(0);
    while(1){
    program1();
    program2();
    program3();
    program4();
    program5();
    program6();
    program7();
    program8();

    }

    }
    EM MỚI TẬP TÀNH TỰ HỌC PIC MONG AC GIÚP ĐỠ: báo lỗi ở câu lênh portb=temp, Chuơng trình con từ program1-program8 có thay = câu lênh nào ngắn hơn dc ko ạ., lệnh lặp 1 chương trình ví dụ như program1 lặp 5 lần rồi mới chuyển sang các program tiếp theo làm thế nào ạ ?
    EM CẢM ƠN RẤT NHIỀU !

  • #2
    tại sao bạn lại "define portb 0x06" ?? portb đã được định nghĩa trong file 16f877a.h rồi.bạn sẵn dùng ko phải định nghĩa lại nhé. Nếu bạn muốn xuất temp ra port thì có thể làm output_b ( temp ) ;

    Comment


    • #3
      Bạn cũng có thể thay thế bằng đoạn code này. Chỉ cần sử dụng lệnh dịch bit thôi là đủ rồi.
      signed char i ;
      for ( i = 7 ; i > 0 ; i -- )
      {
      output_b ( 0 ) ;
      delay_ms ( 500 ) ;
      output_b(0xff<<i) ;
      }

      Comment


      • #4
        Em cảm ơn anh phuphuongbk nhé !

        Comment


        • #5
          sorry mình thiếu 1 lệnh delay phía dưới
          signed char i ;
          for ( i = 7 ; i > 0 ; i -- )
          {
          output_b ( 0 ) ;
          delay_ms ( 500 ) ;
          output_b(0xff<<i) ;
          delay_ms ( 500 ) ;
          }

          Comment


          • #6
            các pro giup mình với mình mới học về con 16f877a nên chưa rõ lắm cho mình hỏi ;
            nếu minh bấm buton1 lệnh xuất đc nhớ đợi khi nào mình bấm button2 thì mới xuất lệnh nhớ của button1 đc ko !!
            mong các pro chỉ giúp mình :
            ví dụ : bấm nút button1 thì nhớ lệnh 1 lại đợi khi nào button2 đc bấm mới xuất lệnh nhớ 1 của button1

            Comment


            • #7
              bạn dùng ngắt ngoài xem sao

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              • nguyendinhvan
                Trả lời cho Vấn đề về tốc độ quay
                bởi nguyendinhvan
                Sử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
                hôm nay, 19:50
              • 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...
                12-12-2025, 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
              Đang tải...
              X