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

                                Đang tải...
                                X