Thông báo

Collapse
No announcement yet.

Cần giúp về Led sáng dồn bằng C

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

  • Cần giúp về Led sáng dồn bằng C

    mình tập viết C cho 8051, code sáng dồn mình nghỉ thế này là đúng nhưng khi mô phỏng nó không theo ý muốn, mình cho led sáng dồn nhưng khi sáng tới bit thứ 8 nó không lưu lại giá trị bít thứ 8 đó để thực hiện sáng dồn tiếp lần 2,3,4...bạn nào góp ý mình với. thank nhiều
    #include <REGX51.H>
    unsigned char a,b,c,d;
    unsigned int i,j,k;
    void delay(unsigned char time){
    while(time--)
    {
    unsigned char j=121;
    while(j--);
    }
    }
    void main()
    {
    while(1)
    {
    k=9;P1=0x00;
    for(i=0;i<8;i++)
    {
    k--;a=P1;c=0x01;
    for(j=0;j<k;j++)
    {
    b=a;
    a|=c;
    P1=a;
    delay(1000);
    a=b;
    c<<=1;
    }
    }
    }
    }

  • #2
    Code

    Sáng dồn là như thế nào nhỉ.
    Code nhìn phức tạp hoá.

    Comment


    • #3
      Sáng dồn viết như thế này nhé, Chỉ cần 2 vòng lặp for là ok. 1 cái để nó sáng dần, trong vòng lặp sáng dần ý cho 1 vòng lặp for của 1 điểm sáng chạy
      Ngồi nghĩ với ý tưởng của này bạn sẽ thành công, và từ lần sau bạn viết code cũng tốt hơn. dễ mà, khoảng 5,6 dòng lệnh thui

      Comment


      • #4
        Nguyên văn bởi maingochoc Xem bài viết
        Sáng dồn là như thế nào nhỉ.
        Code nhìn phức tạp hoá.
        là led sáng từng bit từ bit 0 đến bit 7, xong bit thứ 7 sáng. tiếp tục sáng từng bit 0 đến 6 xong bit 6 sáng ....... như vậy dồn đến bit thứ 0. code mình viết nó chạy theo như vậy nhưng mổi tội là chạy xong bit thứ 7 không sáng để tiếp tục vòng lặp tiếp. code led sáng tích cực mức 0

        Comment


        • #5
          Nguyên văn bởi Đức Xem bài viết
          Sáng dồn viết như thế này nhé, Chỉ cần 2 vòng lặp for là ok. 1 cái để nó sáng dần, trong vòng lặp sáng dần ý cho 1 vòng lặp for của 1 điểm sáng chạy
          Ngồi nghĩ với ý tưởng của này bạn sẽ thành công, và từ lần sau bạn viết code cũng tốt hơn. dễ mà, khoảng 5,6 dòng lệnh thui
          chổ mình không hiểu là sao trong vòng lặp for(j=0;j<k;j++) chạy xong 8 lần thì P1=10000000; trong vòng lặp for(i=0;i<8;i++) mình đẳ cho a=P1 để lưu giá trị P1 rồi mà xảy ra j tăng lên 1 để thực hiện for(j=0;j<k;j++) tiếp thì a vẩn không bằng 10000000 vậy

          Comment


          • #6
            mình lâu ko viết code rùi nhưng đọc thì có thấy như sau, vòng lặp for(j=0;j<9-i;j++) thì mới đúng chứ, bạn viết vậy thì rõ ràng là lần nào nó cũng sáng chạy 8 lần mất

            Comment


            • #7
              Nguyên văn bởi Đức Xem bài viết
              mình lâu ko viết code rùi nhưng đọc thì có thấy như sau, vòng lặp for(j=0;j<9-i;j++) thì mới đúng chứ, bạn viết vậy thì rõ ràng là lần nào nó cũng sáng chạy 8 lần mất
              thank bạn, mình làm được rồi. for(j=0;j<9-i;j++) củng giống như for(j=0;j<k;j++) {k--} vì mình đẳ cho k giảm đi 1 rồi

              Comment


              • #8
                đúng rùi, nó có khác gì đâu, mà cảm ơn thì có nút thank nhá

                Comment


                • #9
                  Nguyên văn bởi Đức Xem bài viết
                  đúng rùi, nó có khác gì đâu, mà cảm ơn thì có nút thank nhá
                  nếu mình muốn cho P1 và P3 sáng dồn thì làm thế nào nhỉ

                  Comment


                  • #10
                    code bạn viết tầm bậy quá làm sao mà sáng dồn được

                    Comment


                    • #11
                      Nguyên văn bởi diamond Xem bài viết
                      code bạn viết tầm bậy quá làm sao mà sáng dồn được
                      mình mô phỏng nó chạy bình thường mà,. bạn có thể cho mình một ví dụ về cách của bạn được không

                      Comment


                      • #12
                        Nguyên văn bởi kervin Xem bài viết
                        nếu mình muốn cho P1 và P3 sáng dồn thì làm thế nào nhỉ
                        Viết dc 8 con rùi, 16 con led ăn nhằm gì đâu, nghĩ 1 tí cho nhớ lâu, , tui còn viết bằng asembly 4 port luôn đấy, C dễ hơn nhiều mà

                        Comment


                        • #13
                          mình mà viết chỉ có vài dòng thui dễ mà chỉ có điều bạn tự nghĩ ra thì sẽ có kinh nghiệm về học hành cho bạn tiếc là mình không làm led nên không nghiên cứu bạn thông cảm nha

                          Comment


                          • #14
                            mình nghỉ mãi mà không ra, bạn có thể chia sẻ cách sáng dồn 2 port dk không?

                            Comment


                            • #15
                              mình nghĩ về khoản lập trình bạn còn yếu viết chương trình chưa chuyên nghiệp nên đọc sách lại

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X