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

                                • 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 nay, 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 nay, 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 nay, 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...
                                  Hôm qua, 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 ...
                                  Hôm qua, 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...
                                  Hôm qua, 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