Thông báo

Collapse
No announcement yet.

xem giúp code cho 8051

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

  • xem giúp code cho 8051

    em mới học lập trình c cho con 8051, mọi người cho em hỏi tí, đoạn code này là e lấy trên diễn đàn.
    [code]
    //8 led sang duoi nhau
    //tai 1 thoi diem chi duy nhat 1 led sang
    #include <REGX51.H>
    #define led0 P1_0
    #define led1 P1_1
    #define led2 P1_2
    #define led3 P1_3
    #define led4 P1_4
    #define led5 P1_5
    #define led6 P1_6
    #define led7 P1_7
    #define sang 1
    #define tat 0
    //---------------
    void delay( unsigned int ms )
    {
    unsigned int i,j;
    for (i=0;i<ms;i++)
    for (j=0;j<120;j++)
    {}
    }
    //--------------
    void display_led(unsigned char number)
    {

    switch (number)
    {

    case 1:
    led0=sang;
    led1=led2=led3=led4=led5=led6=led7=tat;
    break;
    case 2:
    led1=sang;
    led0=led2=led3=led4=led5=led6=led7=tat;
    break;
    case 3:
    led2=sang;
    led1=led0=led3=led4=led5=led6=led7=tat;
    break;
    case 4:
    led3=sang;
    led1=led2=led0=led4=led5=led6=led7=tat;
    break;
    case 5:
    led4=sang;
    led1=led2=led3=led0=led5=led6=led7=tat;
    break;
    case 6:
    led5=sang;
    led1=led2=led3=led4=led0=led6=led7=tat;
    break;
    case 7:
    led6=sang;
    led1=led2=led3=led4=led5=led0=led7=tat;
    break;
    case 8:
    led7=sang;
    led1=led2=led3=led4=led5=led6=led0=tat;
    break;


    }
    }
    main ()
    {
    unsigned char m;
    while(1)
    {
    for (m=1;m<9;m++)
    {display_led(m);delay(200);}
    for (m=7;m>=0;m--)
    {display_led(m);delay(200);}
    }
    }
    [/cocde]

    trong đoạn code đó, e chạy mô phỏng thì chỉ lặp được có một lần tức là led chạy từ 0 đến 7 rồi chạy từ 7 về 0 và đứng yên ở đó, ko tiếp tục chạy nữa, mọi người kiểm tra dùm em với,
    em muốn hỏi thêm trong đoạn code đó em có thể viết ngắn lại thế nào được không vậy

  • #2
    Lập trình nên dùng mã hexa tạo thành 1 mảng 1 chiều . vừa ngắn gọn vừa k bị treo chương trình .

    Comment


    • #3
      Nguyên văn bởi boybaby Xem bài viết
      em mới học lập trình c cho con 8051, mọi người cho em hỏi tí, đoạn code này là e lấy trên diễn đàn.
      [code]
      //8 led sang duoi nhau
      //tai 1 thoi diem chi duy nhat 1 led sang
      #include <REGX51.H>
      #define led0 P1_0
      #define led1 P1_1
      #define led2 P1_2
      #define led3 P1_3
      #define led4 P1_4
      #define led5 P1_5
      #define led6 P1_6
      #define led7 P1_7
      #define sang 1
      #define tat 0
      //---------------
      void delay( unsigned int ms )
      {
      unsigned int i,j;
      for (i=0;i<ms;i++)
      for (j=0;j<120;j++)
      {}
      }
      //--------------
      void display_led(unsigned char number)
      {

      switch (number)
      {

      case 1:
      led0=sang;
      led1=led2=led3=led4=led5=led6=led7=tat;
      break;
      case 2:
      led1=sang;
      led0=led2=led3=led4=led5=led6=led7=tat;
      break;
      case 3:
      led2=sang;
      led1=led0=led3=led4=led5=led6=led7=tat;
      break;
      case 4:
      led3=sang;
      led1=led2=led0=led4=led5=led6=led7=tat;
      break;
      case 5:
      led4=sang;
      led1=led2=led3=led0=led5=led6=led7=tat;
      break;
      case 6:
      led5=sang;
      led1=led2=led3=led4=led0=led6=led7=tat;
      break;
      case 7:
      led6=sang;
      led1=led2=led3=led4=led5=led0=led7=tat;
      break;
      case 8:
      led7=sang;
      led1=led2=led3=led4=led5=led6=led0=tat;
      break;


      }
      }
      main ()
      {
      unsigned char m;
      while(1)
      {
      for (m=1;m<9;m++)
      {display_led(m);delay(200);}
      for (m=7;m>=0;m--)
      {display_led(m);delay(200);}
      }
      }
      [/cocde]

      trong đoạn code đó, e chạy mô phỏng thì chỉ lặp được có một lần tức là led chạy từ 0 đến 7 rồi chạy từ 7 về 0 và đứng yên ở đó, ko tiếp tục chạy nữa, mọi người kiểm tra dùm em với,
      em muốn hỏi thêm trong đoạn code đó em có thể viết ngắn lại thế nào được không vậy
      Mình cũng mới đụng vô VĐK! Cái này bạn phải biết sơ sơ về C. Đây là code của mình
      Code:
      void hieu_ung_3a()// *********************************port1
      {
      	unsigned char i;
      	unsigned char a[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};
      	for(i=0;i<8;i++)
      	{
      		P0=a[i];
      		delay(100);
      	}
      }
      void hieu_ung_3b()// *********************************port1
      {
      	unsigned char i;
      	unsigned char a[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};
      	for(i=0;i<8;i++)
      	{
      		P1=a[i];
      		delay(100);
      	}
      }
      void hieu_ung_3c()//********************************** port2
      {
      	unsigned char i;
      	unsigned char a[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};
      	for(i=0;i<9;i++)
      	{
      		P2=a[i];
      		delay(100);
      	}
      }
      void hieu_ung_3d()// port3
      {
      	unsigned char i;
      	unsigned char a[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};
      	for(i=0;i<9;i++)
      	{
      		P3=a[i];
      		delay(100);
      	}
      }

      Comment


      • #4
        sao ko dùng dịch bit hở bạn. như thế code sẽ ngắn hơn rất nhiều

        Comment


        • #5
          Nguyên văn bởi it_p0k3t Xem bài viết
          sao ko dùng dịch bit hở bạn. như thế code sẽ ngắn hơn rất nhiều
          Tại mình mới viết nên viết theo cách dễ hiểu nhất! Rồi từ từ mình sẽ cải tiến hơn!

          Comment


          • #6
            Nguyên văn bởi it_p0k3t Xem bài viết
            sao ko dùng dịch bit hở bạn. như thế code sẽ ngắn hơn rất nhiều
            chưa chắc đã ngắn hơn, chỉ có 1 số hiệu ứng lợi dụng đc tính dịch của ic ghi dịch mới ngắn thôi, ko thì vẫn phải tạo mảng như bình thường
            còn ở đây chân vdk thừa thãi ko tội gì dùng ghi dịch tốn kém làm j, code viết theo kiểu kia là ổn rồi, khai báo theo mảng
            Website chính thức đổi địa chỉ website thành
            Mời các bạn ghé thăm !!!

            Comment


            • #7
              Hi,
              Chương trình bị đứng do vòng lặp for bị sai.
              Thân ái.
              Đường đến những ngày vinh quang không còn xa
              Con đường chúng ta... chúng ta đã chọn.

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              • mèomướp
                Trả lời cho Sửa bộ nguồn DC 60V 45A
                bởi mèomướp
                Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
                Hôm qua, 13:11
              • tuyennhan
                Trả lời cho Sửa bộ nguồn DC 60V 45A
                bởi tuyennhan
                Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
                Hôm qua, 09:25
              • tuyennhan
                Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                bởi tuyennhan
                Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
                Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
                Hôm qua, 09:10
              • Ng.Phuong.5
                Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
                bởi Ng.Phuong.5
                Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                Mấy con...
                09-01-2025, 19:44
              • viettinh
                Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                bởi viettinh
                Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
                Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
                09-01-2025, 18:12
              • nguyendinhvan
                Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                bởi nguyendinhvan
                Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
                Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
                Cách đơn giản...
                09-01-2025, 00:04
              • mèomướp
                Trả lời cho Sửa bộ nguồn DC 60V 45A
                bởi mèomướp
                Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
                08-01-2025, 19:02
              • tuyennhan
                Trả lời cho Sửa bộ nguồn DC 60V 45A
                bởi tuyennhan
                Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
                08-01-2025, 15:43
              • tuyennhan
                Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                bởi tuyennhan
                Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
                08-01-2025, 15:28
              • mèomướp
                Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                bởi mèomướp
                Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
                08-01-2025, 11:44
              Đang tải...
              X