Thông báo

Collapse
No announcement yet.

Sữa Code Giúp Em

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

  • Sữa Code Giúp Em

    #include <regx51.h>
    unsigned long x;
    unsigned char b;
    unsigned char c;
    unsigned char e;
    #define BYTE1(v) ((unsigned char) (v))
    #define BYTE2(v) ((unsigned char) (((unsigned long) (v)) >> 8))
    #define BYTE3(v) ((unsigned char) (((unsigned long) (v)) >> 16))

    unsigned long code a2[]={0x0000,0x0001,0x0003,0x00007,0x000f,0x001f,0x003 f,0x0007f,0x00ff,
    0x01ff,0x03ff,0x007ff,0x0fff,0x1fff,
    0x0000,0x0001,0x0003,0x00007,0x000f,0x001f,0x003f, 0x0007f,0x00ff,
    0x01ff,0x03ff,0x007ff,0x0fff,0x2fff};
    unsigned long code a3[]={0x0000,0x0001,0x0003,0x00007,0x000f,0x001f,0x003 f,0x0007f,0x00ff,
    0x01ff,0x03ff,0x007ff,0x0fff,0x1fff,0x2fff,
    0x1fff,0x2fff,0x1fff,0x2fff,0x1fff,0x2fff,0x1fff,0 x2fff,0x1fff,0x2fff,0x1fff,0x2fff};

    void delay()////delay xung 555///////
    {
    while(!P1_0);
    while(P1_0);
    }
    void xuat (void)
    {
    P2 = BYTE1(x);
    P3 = BYTE2(x);


    }
    void main(void)
    {
    while(1)
    {
    for(b=0;b<27;b++)
    {
    x=a2[b];
    xuat();
    delay();
    }
    }
    }


    Code e nó thế này mà giờ e muốn cho chạy 6 lần của mảng a2 xong thì chạy a3 và quay lại từ đầu
    E làm hết cách mà nó cứ chạy 1 trong 2
    Mấy a chỉ giúp e với
    Thank nhiều ạ

  • #2
    Có ai còn thức giúp e với

    Comment


    • #3
      #include <regx51.h>
      unsigned long x;
      unsigned char b;
      unsigned char c;
      unsigned char d;
      #define BYTE1(v) ((unsigned char) (v))
      #define BYTE2(v) ((unsigned char) (((unsigned long) (v)) >> 8))
      #define BYTE3(v) ((unsigned char) (((unsigned long) (v)) >> 16))

      unsigned long code a2[]={0x0000,0x0001,0x0003,0x00007,0x000f,0x001f,0x003 f,0x0007f,0x00ff,
      0x01ff,0x03ff,0x007ff,0x0fff,0x1fff,
      0x0000,0x0001,0x0003,0x00007,0x000f,0x001f,0x003f, 0x0007f,0x00ff,
      0x01ff,0x03ff,0x007ff,0x0fff,0x2fff};
      unsigned long code a3[]={0x0000,0x0001,0x0003,0x00007,0x000f,0x001f,0x003 f,0x0007f,0x00ff,
      0x01ff,0x03ff,0x007ff,0x0fff,0x1fff,0x2fff,
      0x1fff,0x2fff,0x1fff,0x2fff,0x1fff,0x2fff,0x1fff,0 x2fff,0x1fff,0x2fff,0x1fff,0x2fff};

      void delay()////delay xung 555///////
      {
      while(!P1_0);
      while(P1_0);
      }
      void xuat (void)
      {
      P2 = BYTE1(x);
      P3 = BYTE2(x);


      }
      ///////////////
      void ef1 (void)
      {
      while(1)
      {
      for(b=0;b<28;b++)
      {
      x=a2[b];
      xuat();
      delay();
      }
      }
      }
      ///////

      void ef2(void)
      {
      while(1)
      {
      for(b=0;b<27;b++)
      {
      x=a3[b];
      xuat();
      }
      }
      }
      //////////

      void main(void)
      {
      c=0;
      while(c<=5)
      {
      ef1();
      }
      ef2();
      delay();

      }

      nó vẫn cứ thế

      Comment


      • #4
        Hjc mấy a cao thủ ko ai chỉ giúp e với

        Comment


        • #5
          Vòng while(1) trong các hàm ef1 , ef2 lúc nào cũng đúng và thế là nó lặp mãi ko thoát ra đc. Gọi hàm nào trước thì nó nằm đó mãi.

          Đề nghị về xem lại sách vở ghi chép, học lại lập trình.

          Comment


          • #6
            Chỗ này :
            void main(void)
            {
            while(1)
            {

            c=0;
            while(c<=5)
            {
            ef1();
            ////////// Cho thêm cái này ////
            c++;
            }
            ef2();
            delay();
            }
            }

            ///////// Khi chạy hết 5 lần ef1 ( do c++ ( tăng dần >5) nó sẽ thoát nhảy sang ef2 chạy 1 lần ... sau đó delay .... rồi lại quay lại chu trình ấy ( do nằm trong while (1) ).

            Nói Chung nên đọc lại lập trình C cơ bản về mấy cái vòng lặp ( while, for, do ... )
            Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

            Comment


            • #7
              Bạn cũng cần bỏ lệnh while(1) trong các chương trình ef1, ef2 thì nó mới chạy được .... Để vòng lặp vô tận trong 1 chương trình con thì nó thoát sao được sang trương trình khác ( trong khi trương trình bạn viết chẳng có điều kiện hay sự kiện để Nó thoát khỏi while(1) ).
              Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

              Comment


              • #8
                Nguyên văn bởi queduong Xem bài viết
                Bạn cũng cần bỏ lệnh while(1) trong các chương trình ef1, ef2 thì nó mới chạy được .... Để vòng lặp vô tận trong 1 chương trình con thì nó thoát sao được sang trương trình khác ( trong khi trương trình bạn viết chẳng có điều kiện hay sự kiện để Nó thoát khỏi while(1) ).


                dạ ổn rồi a. e thật là gà quá. e hiểu lệnh nhưng e không biết sử dụng và xử lý với nó thế nào cho chạy đúng. phải học thêm mới được
                thank anh nhiều ạ

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                • 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
                • 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