Thông báo

Collapse
No announcement yet.

Thắc mắc về vi điều khiển họ 8051 !!!

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

  • Thắc mắc về vi điều khiển họ 8051 !!!

    Sau 1 thời gian nghiên cứu nhg vẫn mơ màng. Các bác cho e hỏi là ví dụ : lắp mạch dk mình lập trình cho cổng vào 1.1 , lúc bình thường ko nối gì (ko đấu 5v hay mass) thì nó có nhận giá trị 0 ko ạ hay phải nối vs mass nguồn thì mới nhận giá trị 0. (tại trên proteus mô phỏng thấy ko nối gì nó toàn hiện giá trị 1, nối đất thì mới chịu 0 ạ)

    Các bác giúp em vs ạ, xin chân thành cảm ơn !!!!!!

  • #2
    mô tả cổng I/O của 89 mặc định khi reset mà ko có lệnh tác động tới các chân I/O thì nó sẽ có mức 1. Còn bạn hỏi quá mơ hồ, ko rõ
    Còn nếu muốn giá trị 0 1 chân I/O nào đó thì dùng lệnh CLR. (bạn hỏi P1.1 thì dùng lệnh CLR P1.1)

    Comment


    • #3
      #include <regx52.h>
      #include <stdio.h>

      sbit TRAI = P1^0;
      sbit PHAI = P1^1;
      sbit TOC1 = P1^2;
      sbit TOC2 = P1^3;
      sbit TOC3 = P1^4;
      sbit TOC4 = P1^5;
      sbit TOC5 = P1^6;
      sbit TOC6 = P1^7;

      unsigned char M[] = {0x0e,0x0d,0x0b,0x07};
      int i=0,j=0,a;

      //-------------------------

      void tocdoc(){
      a=3000;
      if (TOC1) {a = a - 500; }
      if (TOC2) {a = a - 1000;}
      if (TOC3) {a = a - 1500;}
      if (TOC4) {a = a - 2000;}
      if (TOC5) {a = a - 2300;}
      if (TOC6) {a = a - 2600;}
      }

      void delay(){
      unsigned int t,time=10;
      tocdoc();
      while(time--)
      for(t=0;t<a;t++);
      }
      //--------------------------
      void dc_thuan(){
      while(TRAI){
      delay();
      P2 = M[i--];
      if(i < 0)
      i = 3;
      }
      i++;
      }
      //-------------------------
      void dc_dao(){
      while(PHAI){
      delay();
      P2 = M[i++];
      if(i > 3)
      i = 0;
      }
      i--;
      }

      //-------------------------

      void main(){
      P2 = 0;
      while(1){
      dc_thuan();
      dc_dao();
      }
      }



      Đây là code e nạp vào IC. e hỏi h để ko thì các cổng từ 0 - 7 nhận giá trị 0 hay 1 ạ để e làm mạch ạ

      Comment


      • #4
        ko hiểu chú đang hỏi gì cái code điều khiển động cơ trên
        0 - 7 của cái gì ?
        cái gì nhận giá trị 0 hay 1 và để làm gì ?

        Comment


        • #5
          Cổng 1.0 - 1.7 là e để xung vào ạ. theo như e biết là 5v = 1 , 0v = 0.
          bthường ko nối j thì mấy cổng sẽ nhận giá trị 0 hay 1 ạ

          Comment


          • #6
            bạn đặt tocdo dạng sbit thì nó chỉ nhận giá trị 0 or 1.
            a=3000;
            if (TOC1) {a = a - 500; }
            if (TOC2) {a = a - 1000;}
            if (TOC3) {a = a - 1500;}
            if (TOC4) {a = a - 2000;}
            if (TOC5) {a = a - 2300;}
            if (TOC6) {a = a - 2600;}
            THẾ ĐOẠN NÀY THÌ SAO
            Nguyễn Huy Biên - 01649 802 694
            gmail :

            Comment


            • #7
              Nguyên văn bởi nbking Xem bài viết
              Cổng 1.0 - 1.7 là e để xung vào ạ. theo như e biết là 5v = 1 , 0v = 0.
              bthường ko nối j thì mấy cổng sẽ nhận giá trị 0 hay 1 ạ
              Mức 1 bạn àh. bài a chung trả lời rồi đó
              Nguyễn Huy Biên - 01649 802 694
              gmail :

              Comment


              • #8
                Đấy ạ. đoạn ý là nếu 1.2 nhận 1 thì a = 2500
                1.3 nhận giá trị 1 thì a = 2000
                .....
                chỗ đấy là e điều khiển tốc độ ạ

                Comment


                • #9
                  thế ạ, cảm ơn các bác. thế bây h e phải nối vào mass nguồn hả bác?

                  Comment


                  • #10
                    Nguyên văn bởi nbking Xem bài viết
                    thế ạ, cảm ơn các bác. thế bây h e phải nối vào mass nguồn hả bác?
                    nói chung mình vẫn không hiểu ý bạn. :d
                    Nguyễn Huy Biên - 01649 802 694
                    gmail :

                    Comment


                    • #11
                      , thì muốn bt là 0 thôi mà, xong ấn nút cấp 5v cho từng chân thì nó mới chạy lệnh

                      Comment


                      • #12
                        mình ko thấy ai điều chỉnh tốc độ như bạn. bạn xem thêm về PWM nhé.
                        Nguyễn Huy Biên - 01649 802 694
                        gmail :

                        Comment


                        • #13
                          Mình nói chung là lúc nhận bài tập thì mới bắt đầu đọc tài liệu. Động cơ của mình là động cơ bước chứ ko phai DC. nhặt được cái code trên mạng, về sửa lại chút lắp vào mô phỏng thấy tốc độ thay đổi nên chiến thui.

                          Comment


                          • #14
                            lấy code người khác thì cũng được nhưng muốn thành của mình thì phải hiểu người ta làm thế nào chứ.

                            Comment


                            • #15
                              Không biết bạn hiểu hết chưa! Nếu chưa tôi xin góp ý thế này
                              1. Khi bình thường để trống các chân (trừ P0) thì nó xuất ra mức 1 (5v)
                              2. Nên lấy tín hiệu điều khiển là mass, không nên lấy tín hiệu + (tức là bạn kéo điện trở 10k lên vcc, khi bấm nút thì dập nó xuống mass - lấy tín hiệu này để đi làm cái gì mà bạn thích)
                              Không có gì quý hơn độc lập tự do!

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X