Thông báo

Collapse
No announcement yet.

lập trình keil c 89C51 cho led đơn

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

  • lập trình keil c 89C51 cho led đơn

    ai thu gọn đoạn code này giúp e với . . . e mới viết xong nhưng còn gà nên nó dài wa . . hihi
    #include <REGX51.H>
    sbit led1 = P3^0;
    sbit led2 = P3^1;
    sbit led3 = P3^2;
    sbit led4 = P3^3;
    sbit led5 = P3^4;
    sbit led6 = P3^5;
    sbit led7 = P3^6;
    sbit led8 = P3^7;
    void huy ( unsigned long ms )
    {
    while ( ms--);
    }
    void main ( void )
    {
    int i;
    {

    P3=1;
    huy ( 25000);
    for ( i=1; i<=7;i++)
    {
    P3=P3<<1;
    huy ( 25000);
    }
    {
    led8=1; //led 8 sang
    led1=1;
    huy(25000);
    led1=0;
    led2=1;
    huy(25000);
    led2=0;
    led3=1;
    huy(25000);
    led3=0;
    led4=1;
    huy(25000);
    led4=0;
    led5=1;
    huy(25000);
    led5=0;
    led6=1;
    huy(25000);
    led6=0;
    led7=1;
    huy(25000);
    led7=0;
    }
    for ( i=2; i<=2;i++) //led 7,8 sang
    {
    led8=1;
    led7=1;
    led1=1;
    huy(25000);
    led1=0;
    led2=1;
    huy(25000);
    led2=0;
    led3=1;
    huy(25000);
    led3=0;
    led4=1;
    huy(25000);
    led4=0;
    led5=1;
    huy(25000);
    led5=0;
    led6=1;
    huy(25000);
    led6=0;
    }
    for ( i=2; i<=2;i++) //led 6,7,8 sang
    {
    led8=1;
    led7=1;
    led6=1;
    led1=1;
    huy(25000);
    led1=0;
    led2=1;
    huy(25000);
    led2=0;
    led3=1;
    huy(25000);
    led3=0;
    led4=1;
    huy(25000);
    led4=0;
    led5=1;
    huy(25000);
    led5=0;
    led6=1;
    }
    for ( i=2; i<=2;i++) //led 5,6,7,8 sang
    {
    led8=1;
    led7=1;
    led6=1;
    led5=1;
    led1=1;
    huy(25000);
    led1=0;
    led2=1;
    huy(25000);
    led2=0;
    led3=1;
    huy(25000);
    led3=0;
    led4=1;
    huy(25000);
    led4=0;
    }
    for ( i=2; i<=2;i++) //4,5,6,7,8 sang
    {
    led8=1;
    led7=1;
    led6=1;
    led5=1;
    led4=1;
    led1=1;
    huy(25000);
    led1=0;
    led2=1;
    huy(25000);
    led2=0;
    led3=1;
    huy(25000);
    led3=0;
    }
    for ( i=2; i<=2;i++) //led 3,4,5,6,7,8 sang
    {
    led8=1;
    led7=1;
    led6=1;
    led5=1;
    led3=1;
    led1=1;
    huy(25000);
    led1=0;
    led2=1;
    huy(25000);
    led2=0;

    }
    for ( i=2; i<=2;i++) //led 2,3,4,5,6,7,8 sang
    {
    led8=1;
    led7=1;
    led6=1;
    led5=1;
    led4=1;
    led3=1;
    led2=1;
    led1=1;
    huy(25000);
    led1=0;

    } // 8 led sang
    for ( i=2; i<=2;i++)
    {
    led8=1;
    led7=1;
    led6=1;
    led5=1;
    led4=1;
    led3=1;
    led2=1;
    led1=1;
    }
    }
    }

  • #2
    1 cổng vdk tương đương vs 1 byte 8 bit, ví dụ P1=0xAA, thì nó sẽ đc tách theo bit nhị phân là 10101010, bít P1.7 P1.5 P1.3 P1.1 =1 còn lại = 0, bạn gọi 1 lúc cả cổng ra là có thể tự thu gọn rồi
    Website chính thức đổi địa chỉ website thành
    Mời các bạn ghé thăm !!!

    Comment


    • #3
      Nguyên văn bởi mast090 Xem bài viết
      1 cổng vdk tương đương vs 1 byte 8 bit, ví dụ P1=0xAA, thì nó sẽ đc tách theo bit nhị phân là 10101010, bít P1.7 P1.5 P1.3 P1.1 =1 còn lại = 0, bạn gọi 1 lúc cả cổng ra là có thể tự thu gọn rồi
      oh tks bạn nhiều nha

      Comment


      • #4
        quá dài, hình như đây là ctrình sáng dần từ phải qua trái đúng ko nhỉ
        mình có ctrình ntn bạn xem qua nha
        #include <REGX51.H>
        void delay(int);
        void main()
        {
        for( ; ; )
        {
        P0=0x00; delay(1000);
        P0=0x01; delay(1000);
        P0=0x03; delay(1000);
        P0=0x07; delay(1000);
        P0=0x0f; delay(1000);
        P0=0x1f; delay(1000);
        P0=0x3f; delay(1000);
        P0=0x7f; delay(1000);
        P0=0xff; delay(1000);
        }
        }
        void delay(int x)
        {
        int i,j;
        for(i=0;i<=x;i++)
        for(j=0;j<1275;j++);
        }
        chương trình này trễ 1s, nếu bạn muốn tăng trễ lên thì sửa 1000 trong delay đi là ok

        Comment

        Về tác giả

        Collapse

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

        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
        Đang tải...
        X