Thông báo

Collapse
No announcement yet.

Dành cho người mới tìm hiểu 8051

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

  • Nguyên văn bởi Multi System Xem bài viết
    printf hả ?
    Là tên hàm thôi! cái này lập trình cho LCD, họ viết cho giống với sách vở ngôn ngữ C ấy mà,
    Hàm đó có biến đầu vào là xâu kí tự. Khi nào cần thì gọi nó với xâu kí tự cần hiển thị.
    Mình vẫn chưa hiểu rõ ý bạn lắm, ví dụ mình dùng hàm printf xuất ra cổng với keilC thì thế này à? printf("P1=%s",s); hay là thế này? P1=printf("%s",s);
    Thanks!
    Last edited by vuxuanloi; 10-05-2009, 22:52.
    Vũ xuân Lợi
    YM!:

    Comment


    • Nguyên văn bởi vuxuanloi Xem bài viết
      Mình vẫn chưa hiểu rõ ý bạn lắm, ví dụ mình dùng hàm printf xuất ra cổng với keilC thì thế này à? printf("P1=%s",s); hay là thế này? P1=printf("%s",s);
      Thanks!
      Không đơn giản như vậy đâu bạn ơi !
      Trong hàm hiển thị này nó còn chứa các hàm, lệnh khác như hàm điểu khiển LCD, lệnh xuất dữ liệu ra Port...
      Vì họ cố ý viết giống sách vở nên khi họ gọi cũng giống như sách vở
      VD: printf("xau_ki_tu", s);
      xau_ki_tu là chuỗi kí tự cần hiển thị
      s là giá trị hàng của LCD (1, 2, 3, 4...)

      Comment


      • Nguyên văn bởi Multi System Xem bài viết
        Không đơn giản như vậy đâu bạn ơi !
        Trong hàm hiển thị này nó còn chứa các hàm, lệnh khác như hàm điểu khiển LCD, lệnh xuất dữ liệu ra Port...
        Vì họ cố ý viết giống sách vở nên khi họ gọi cũng giống như sách vở
        VD: printf("xau_ki_tu", s);
        xau_ki_tu là chuỗi kí tự cần hiển thị
        s là giá trị hàng của LCD (1, 2, 3, 4...)
        Ừ, vậy là mình phải viết hàm printf là do mình viết ra và gọi như một ct con?
        ví du:
        void printf(unsigned char *n,m)
        {
        LCDcontrol(m);//chọn dòng
        LCDdata(n);//ghi kí tự
        }
        chưa thử được, win của mình đang bị lỗi, keilC không chạy được, đợi đứa em làm luận án xong thì sửa lỗi một thể.
        Vũ xuân Lợi
        YM!:

        Comment


        • thiết kế lịch điện tử với 89c51 kiểu gi vậy các bạn va sử dụng ram va rom ngoài hiẻn thi liên màn hinh dùng led
          bạn nào có ý tưởng giúp mình
          thanhks nhiu nha
          CÁC THIÊN TÀI THỰC THỤ :
          sáng đá lá đa
          chiều đá cóng bơ

          Comment


          • Mọi người xem giúp mình đoạn C này có lỗi nào không, mình không thể hiểu nổi nó lỗi gì nữa
            #include <REGX52.H>
            #define Q0 P3^0
            #define Q1 P3^1
            #define Q2 P3^2
            #define Q3 P3^3

            sbit red=P1^0;
            sbit yellow=P1^1;
            sbit green=P1^2;

            void delay(unsigned int ms) //day la chuong trinh tao tre 1s
            {
            while(ms--)
            {
            TMOD=0x01; //su dung timer0,che do 16 bit
            TH0=0xFC;
            TL0=0x18 ;
            TR0=1;
            while(!TF0);
            TR0=0;
            TF0=0;
            }
            }
            void display(unsigned char number)
            {
            switch (number)
            {
            case 0:
            Q0=Q1=Q2=Q3=0;
            break;
            case 1:
            Q1=Q2=Q3=0;
            Q0=1;
            break;
            case 2:
            Q1=1;
            Q0=Q2=Q3=0;
            break;
            case 3:
            Q0=Q1=1;
            Q2=Q3=0;
            break;
            case 4:
            Q0=Q1=Q3=0;
            Q2=1;
            break;
            case 5:
            Q1=Q3=0;
            Q2=Q0=1;
            break;
            case 6:
            Q3=Q0=0;
            Q2=Q1=1;
            break;
            case 7:
            Q3=0;
            Q0=Q1=Q2=1;
            break;
            case 8:
            Q3=1;
            Q0=Q1=Q2=0;
            break;
            case 9:
            Q3=Q0=1;
            Q1=Q2=0;
            break;
            default:
            Q0=Q1=Q2=Q3=0;
            break;
            }
            }


            void main()
            {int m;
            red=yellow=green=0;
            while(1)
            {
            red=1;
            yellow=0;
            green=0;
            delay(10000);
            red=0;
            yellow=1;
            green=0;
            delay(10000);
            red=0;
            yellow=0;
            green=1;
            delay(10000);
            }
            while(1)
            {
            for(m=9;m<10;m--)
            { display(m);delay(1000);
            }
            }
            }


            nó báo thế này
            Build target 'Target 1'
            compiling anhtrinh...
            ANHTRINH(29): error C141: syntax error near '='
            ANHTRINH(29): error C141: syntax error near '='
            ANHTRINH(29): error C141: syntax error near '='
            ANHTRINH(29): error C141: syntax error near '='
            ANHTRINH(32): error C141: syntax error near '='
            ANHTRINH(32): error C141: syntax error near '='
            ANHTRINH(32): error C141: syntax error near '='
            ANHTRINH(33): error C141: syntax error near '='
            ANHTRINH(36): error C141: syntax error near '='
            ANHTRINH(37): error C141: syntax error near '='
            ANHTRINH(37): error C141: syntax error near '='
            ANHTRINH(37): error C141: syntax error near '='
            ANHTRINH(40): error C141: syntax error near '='
            ANHTRINH(40): error C141: syntax error near '='
            ANHTRINH(41): error C141: syntax error near '='
            ANHTRINH(41): error C141: syntax error near '='
            ANHTRINH(44): error C141: syntax error near '='
            ANHTRINH(44): error C141: syntax error near '='
            ANHTRINH(44): error C141: syntax error near '='
            ANHTRINH(45): error C141: syntax error near '='
            ANHTRINH(48): error C141: syntax error near '='
            ANHTRINH(48): error C141: syntax error near '='
            ANHTRINH(49): error C141: syntax error near '='
            ANHTRINH(49): error C141: syntax error near '='
            ANHTRINH(52): error C141: syntax error near '='
            ANHTRINH(52): error C141: syntax error near '='
            ANHTRINH(53): error C141: syntax error near '='
            ANHTRINH(53): error C141: syntax error near '='
            ANHTRINH(56): error C141: syntax error near '='
            ANHTRINH(57): error C141: syntax error near '='
            ANHTRINH(57): error C141: syntax error near '='
            ANHTRINH(57): error C141: syntax error near '='
            ANHTRINH(60): error C141: syntax error near '='
            ANHTRINH(61): error C141: syntax error near '='
            ANHTRINH(61): error C141: syntax error near '='
            ANHTRINH(61): error C141: syntax error near '='
            ANHTRINH(64): error C141: syntax error near '='
            ANHTRINH(64): error C141: syntax error near '='
            ANHTRINH(65): error C141: syntax error near '='
            ANHTRINH(65): error C141: syntax error near '='
            ANHTRINH(68): error C141: syntax error near '='
            ANHTRINH(68): error C141: syntax error near '='
            ANHTRINH(68): error C141: syntax error near '='
            ANHTRINH(68): error C141: syntax error near '='
            Target not created

            Comment


            • Nguyên văn bởi hoangvantrin Xem bài viết
              Mọi người xem giúp mình đoạn C này có lỗi nào không, mình không thể hiểu nổi nó lỗi gì nữa
              ....
              Target not created
              Số trong ngoặc đơn () là dòng trong chương trình có lỗi.
              Bạn dùng chương trình dịch nào Keil C, SDCC, Reads ???
              More friends more foods

              Comment


              • Mình dùng Keil C nó ghi dấu = là sao.Minh thấy có lỗi gì đâu

                Comment


                • Bạn sửa lại phần định nghĩa đi
                  Cụ thể là thế này:
                  #define Q0 P3_0
                  #define Q1 P3_1
                  #define Q2 P3_2
                  #define Q3 P3_3

                  Comment


                  • Nguyên văn bởi hoangvantrin Xem bài viết
                    Mình dùng Keil C nó ghi dấu = là sao.Minh thấy có lỗi gì đâu
                    Thay ^ bằng _ cho các dòng sau:
                    Code:
                    #define Q0 P3_0
                    #define Q1 P3_1
                    #define Q2 P3_2
                    #define Q3 P3_3
                    More friends more foods

                    Comment


                    • Cho mình hỏi tường tận hơn. Mình vẽ mạch thế này

                      #include <REGX52.H>
                      #define Q0 P3_0
                      #define Q1 P3_1
                      #define Q2 P3_2
                      #define Q3 P3_3

                      sbit red=P1^0;
                      sbit yellow=P1^1;
                      sbit green=P1^2;

                      void delay(unsigned int ms) //day la chuong trinh tao tre 1s
                      {
                      while(ms--)
                      {
                      TMOD=0x01; //su dung timer0,che do 16 bit
                      TH0=0xFC;
                      TL0=0x18 ;
                      TR0=1;
                      while(!TF0);
                      TR0=0;
                      TF0=0;
                      }
                      }
                      void display(unsigned char number)
                      {
                      switch (number)
                      {
                      case 0:
                      Q0=Q1=Q2=Q3=0;
                      break;
                      case 1:
                      Q1=Q2=Q3=0;
                      Q0=1;
                      break;
                      case 2:
                      Q1=1;
                      Q0=Q2=Q3=0;
                      break;
                      case 3:
                      Q0=Q1=1;
                      Q2=Q3=0;
                      break;
                      case 4:
                      Q0=Q1=Q3=0;
                      Q2=1;
                      break;
                      case 5:
                      Q1=Q3=0;
                      Q2=Q0=1;
                      break;
                      case 6:
                      Q3=Q0=0;
                      Q2=Q1=1;
                      break;
                      case 7:
                      Q3=0;
                      Q0=Q1=Q2=1;
                      break;
                      case 8:
                      Q3=1;
                      Q0=Q1=Q2=0;
                      break;
                      case 9:
                      Q3=Q0=1;
                      Q1=Q2=0;
                      break;
                      default:
                      Q0=Q1=Q2=Q3=0;
                      break;
                      }
                      }


                      void main()
                      {int m;
                      red=yellow=green=0;
                      while(1)
                      {
                      red=1;
                      yellow=0;
                      green=0;
                      delay(10000);
                      red=0;
                      yellow=1;
                      green=0;
                      delay(10000);
                      red=0;
                      yellow=0;
                      green=1;
                      delay(10000);
                      }
                      while(1)
                      {
                      for(m=9;m>=1;m--)
                      { display(m);delay(1000);
                      }
                      }
                      }
                      Mình dùng Keil C để dịch cho chạy nhưng không biết làm cách nào cho đèn sáng từ 9 đến 0. Mình viết code vậy có sai gì không. Mong các pro chỉ giúp.

                      Comment


                      • Trong hàm main sao lại có 2 vòng lặp vô hạn ?

                        Comment


                        • ủa, thế à.nhầm mất rồi. Cậu có thể sửa giúp mình đoạn code này cho hợp lý không.
                          sao cho cứ 10s là lại chuyển bóng đèn 1 lần. Mình học C không tốt lắm nên cứ loay hoay mãi chỗ này...

                          Comment


                          • Nguyên văn bởi ntct Xem bài viết
                            thiết kế lịch điện tử với 89c51 kiểu gi vậy các bạn va sử dụng ram va rom ngoài hiẻn thi liên màn hinh dùng led
                            bạn nào có ý tưởng giúp mình
                            thanhks nhiu nha
                            Ý bạn muốn hỏi gì ? có thể cụ thể hơn được không ?
                            Chúc vui!
                            Pavolusa
                            :-)

                            Comment


                            • Ý của mình là sửa đoạn code trên cho hợp lý hơn. Mình định viết code cho mạch đèn giao thông ở trên nhưng chắc sai rồi, cứ sau 10s lại chuyển bóng đèn 1 lần. Mình định viết như thế nhưng nạp vào mạch lại không thấy đèn sáng theo ý muốn.

                              Comment


                              • Nguyên văn bởi hoangvantrin Xem bài viết
                                ủa, thế à.nhầm mất rồi. Cậu có thể sửa giúp mình đoạn code này cho hợp lý không.
                                sao cho cứ 10s là lại chuyển bóng đèn 1 lần. Mình học C không tốt lắm nên cứ loay hoay mãi chỗ này...
                                Uh, chương trình bạn viết hơi dài, mình sửa lại cho ngắn nhé !
                                PHP Code:
                                #include <REGX52.H>
                                sbit red=P1^0;
                                sbit yellow=P1^1;
                                sbit green=P1^2;
                                // Tạo mã font cho led trên P3
                                unsined char font[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
                                // Hàm delay 1s luôn :->
                                void delay(unsigned char ss)
                                 {
                                   while(
                                ss--)
                                    {
                                      
                                unsigned int time=1000;
                                      while(
                                time--)
                                       {
                                             
                                TMOD=0x01;
                                         
                                TH0=0xFC;
                                         
                                TL0=0x18;
                                         
                                TR0=1;
                                         while(!
                                TF0);
                                         
                                TR0=0;
                                         
                                TF0=0;
                                       }
                                    }
                                 }
                                // Hàm đếm số tiến từ 0->9, số lùi thì bạn làm ngược lại
                                 
                                void count(unsigned int i)
                                 {
                                   for(
                                i=0;i<10;i++)
                                    {
                                        
                                P0=font[i]; delay(1);
                                    }
                                 }
                                 
                                void main(void)
                                 {
                                   while(
                                1)
                                   {
                                       
                                red=0;yellow=green=1;    count(10); đèn đỏ sáng và đếm 10s
                                    yellow
                                =0;red=green=1    count(10);
                                    
                                green=0;red=yellow=1    count(10);
                                   }
                                 } 
                                Mình viết đại chứ ko có phần cứng như của bạn để test.
                                Bạn nạp thử xem kếp quả sao. Có gì thì cứ "ho" anh em giúp đỡ

                                Comment

                                Về tác giả

                                Collapse

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

                                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...
                                  hôm nay, 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