Thông báo

Collapse
No announcement yet.

Thắc mắc về chức năng cực thu hở của port 0 trong 8051.

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

  • Thắc mắc về chức năng cực thu hở của port 0 trong 8051.

    Bạn nào biết tại sao port 0 người ta lại thiết kế chức năng cực thu hở không?
    Trong khi đó 3 port khác còn lại lại không có chức năng này.

    Bạn nào biết chỉ giúp mình với. Mình xin chân thành cảm ơn.

  • #2
    Giúp mình với...

    Mong cao thủ về 8051 giúp đỡ. Mình rất cần hiểu vấn đề trên...

    Xin chân thành cảm ơn.

    Comment


    • #3
      Cực thu hở ở P0 chỉ có ý nghĩa đối vớ việc xuất ra.Còn nhận dữ liệu thì không vấn đề.
      Đối với ngõ xuất thì việc kéo xuống 0 thì đuợc thực hiện.Còn đối với việc kích 1
      ví dụ P0_7=1;//lệnh này chỉ có tác dụng tắt MOSFET kéo xuống đất và để hở ngõ nhập nên logic ngõ ra lúc này nếu có thêm 1 con trở kéo lên nguồn thì mới là 1.
      Còn tại sao để hở thì theo ý kiến của mình là để linh động về dòng điện cho logic mức 1 -->ví dụ nếu như mắc trở kéo lên nhỏ thì mức 1 thực của cậu khi có tải sẽ không bị sụt xuống quá mức logic 1.

      Sông dài, Thuyền lớn, Biển rộng bao la.
      Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.

      Comment


      • #4
        Xin cho đính chính giùm một chút là open drain chứ không phải open collector (vì CMOS mà).
        Port0 chỉ xài điện trở kéo lên khi ở chế độ I/O port thôi. Đó là vì Port0 còn có thể dùng là Data bus, mà bus này luôn đòi hỏi phải có tính ba trạng thái. Do đó nếu có pull-up bên trong thì sẽ không thể có trạng thái Hi-Z được.
        Làm cái gì nữa đây?

        Comment


        • #5
          Giờ tới mình thắc mắc lại nhỉ.
          Vì nếu nói như bạn tivoi thì cần có 3 trạng thái trong đó có trạng thái Hi-Z.Thực chất ý nghĩa của trạng thái Hi-Z là có thể đưa chung vào đường bus.Mà đối với đường bus thì việc đặt pull-up có vấn đề gì vì chỉ có MCU tác động đến các phần tử khác hoặc quét các phần tử khác Pull-up vẫn bảo đảm tín hiệu là 1 hoặc 0 khi tác động mà.
          Databus thì có thể ta sẽ sử dụng cả PORT 2 mà port này vẫn cấu trúc trở kéo lên nội.
          bàn luận thêm để làm rõ vấn đề nào.

          Sông dài, Thuyền lớn, Biển rộng bao la.
          Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.

          Comment


          • #6
            Tí có nói là Port0 được dùng ở 2 mode: I/O port hoặc data/address. Vì nó có thể là data bus nên phải có Hi-Z. Data bus có thể nối đến nhiều ngõ ra, cái này thì không cần Hi-Z. Nhưng nó cũng có thể được nối đến bởi nhiều ngõ vào. Nếu các ngõ vào này không phải là 3-state (tức là chỉ có 0, 1) và có giá trị khác nhau thì bus sẽ xảy ra hiện tượng gọi là tranh chấp bus. Do đó bạn có thể thấy là nếu bạn muốn nối một thiết bị ngoại vi, memory nào đến VXL mà là dạng input thì các thiết bị đó phải là 3-state.
            Đễ dễ hiểu hơn Tí ví dụ bạn nối chung 5 ngõ ra của các cổng NOT thì điểm chung đó sẽ có mức logic là bao nhiêu nếu 2 ngõ ra là 0 và 3 ngõ ra là 1? Rõ ràng là mức 0. Lúc này xảy ra tranh chấp vì chỉ cần một ngõ ra NOT là 0 thì điểm nối chung luôn luôn có mức logic là 0 bất chấp các ngõ ra khác. Bạn có thể xem thêm về khái niệm Wired-AND để biết rõ hơn.
            Port2 không phải là data bus mà chỉ là byte cao của bus địa chỉ. Mà address bus thì chỉ có từ VXL xuất ra, không có hướng nhập do đó không cần phải là 3-state.
            Làm cái gì nữa đây?

            Comment


            • #7
              Nếu mình muốn trạng thái ban đầu của các port là mức 0 thì dùng điện trở 47k treo xuống có được không.?

              Comment


              • #8
                Nguyên văn bởi quoc_thaibk Xem bài viết
                Cực thu hở ở P0 chỉ có ý nghĩa đối vớ việc xuất ra.Còn nhận dữ liệu thì không vấn đề.
                Đối với ngõ xuất thì việc kéo xuống 0 thì đuợc thực hiện.Còn đối với việc kích 1
                ví dụ P0_7=1;//lệnh này chỉ có tác dụng tắt MOSFET kéo xuống đất và để hở ngõ nhập nên logic ngõ ra lúc này nếu có thêm 1 con trở kéo lên nguồn thì mới là 1.
                Còn tại sao để hở thì theo ý kiến của mình là để linh động về dòng điện cho logic mức 1 -->ví dụ nếu như mắc trở kéo lên nhỏ thì mức 1 thực của cậu khi có tải sẽ không bị sụt xuống quá mức logic 1.

                Về lý thuyết là như thế, nhưng hiện nay tất cả các P0 đều là 3 trạng thái cũng được 30 năm rồi. Dùng như thường, không cần phân biệt P0 P2. Mình tuyền ném pullup P0 đi nếu chỉ giao tiếp RAM, ROM... và thậm chí dùng 60 ôm nếu dùng công suất, chả sao.

                Bản thân con trở kéo lên nguồn lắp ngoài chỉ có tác dụng làm khỏe port. Ví dụ, dùng con 8k thì được 8 con bipolar tiêu chuẩn, dùng con 60 ôm thì nhân lên, được cả trăm đầu ra, thế thôi.

                Bản chất là P0 hiện nay có internal pullup 20k rồi, nếu chỉ ram, rom, thì hiện nay các ram, rom đầu ra đều là trường, rất khỏe, tiêu ít năng lượng. Nếu dùng bipolar tiền công suất như driver motor thì mới phải thận trọng, cho nó con 220 ôm đi, khỏi nghĩ. Ban đầu người ta đặt P0 hở cũng là để tăng dòng, và vì vậy, họ không thiệt hại gì nhiều khi cho internal pullup 20k, vậy nên ta cũng chả thiệt hại nhiều khi .... không nghĩ ngợi.


                Việc bỏ external pullup P0 xuất phát từ việc chuyển P0 và các P khác từ bipolar sang field, cũng được 30 năm rồi. Do chênh lệch điện trở khi đóng mở field lớn (hàng vạn lần), nên người ta mới làm internal pullup 20k được và từ đó người dùng thuận tiện hơn. Trước đây, dòng rò khi đóng P0 xuông 0 logic khá lớn ( phần trăm), nên mới tùy ứng dụng là dùng external pullup.

                Comment


                • #9
                  Nguyên văn bởi huyphuc1981 Xem bài viết
                  Bản chất là P0 hiện nay có internal pullup 20k rồi, nếu chỉ ram, rom, thì hiện nay các ram, rom đầu ra đều là trường, rất khỏe, tiêu ít năng lượng. Nếu dùng bipolar tiền công suất như driver motor thì mới phải thận trọng, cho nó con 220 ôm đi, khỏi nghĩ. Ban đầu người ta đặt P0 hở cũng là để tăng dòng, và vì vậy, họ không thiệt hại gì nhiều khi cho internal pullup 20k, vậy nên ta cũng chả thiệt hại nhiều khi .... không nghĩ ngợi.


                  Việc bỏ external pullup P0 xuất phát từ việc chuyển P0 và các P khác từ bipolar sang field, cũng được 30 năm rồi. Do chênh lệch điện trở khi đóng mở field lớn (hàng vạn lần), nên người ta mới làm internal pullup 20k được và từ đó người dùng thuận tiện hơn. Trước đây, dòng rò khi đóng P0 xuông 0 logic khá lớn ( phần trăm), nên mới tùy ứng dụng là dùng external pullup.

                  vế này của bác nói có vẻ mâu thuẫn quá?
                  P0 bỏ external pullup ==> p0 internal pullup ở con nào vậy?
                  " bỏ external pullup P0 ...cũng được 30 năm rồi "


                  Y/M: chuyenchangcodon_064

                  Comment


                  • #10
                    anh titeo ơi có thể giai thích rõ hơn cho em tại sao tich cực ở mức 0 thì p0 vẫn chạy được con tích cực mức 1 thì không chạy được không

                    Comment


                    • #11
                      Thì bên trong P0 nó là 8 con NPN hở Collector ( 8 bít ra là 8 cái collector ) nên nó chỉ tích cực được mức 0 ( tương ứng với chiều dòng điện đi vào từ C => E) còn không thể xuất dòng ra được.

                      Comment


                      • #12
                        vừa mới đọc xong con DS18B20 thấy rằng con này nối vào port 0 là thích hợp nhất hjhjhj

                        Comment


                        • #13
                          mấy anh cao thủ cho e hỏi cái này tí. e xuất cả 4 port để điều khiển led dùng con tip122 để kịch dòng thì nên dùng trở thanh va trở chân b tip 122 bao nhiêu la an toàn đê ko bi tuột áp.?
                          e sd con 892051 va c51 thì con c51 khi điều khiển cùng số lượng led trở thanh và trở chân b giống nhau cùng xài tip 122 nhưng c51 thi led sang đìêu con 2051 thi sáng mờ như sục áp.
                          Mong mấy anh giải thích dùm e

                          Comment


                          • #14
                            port 0 của ic 8051 (haui 2009-2913)

                            Nguyên văn bởi nnvkct Xem bài viết
                            Bạn nào biết tại sao port 0 người ta lại thiết kế chức năng cực thu hở không?
                            Trong khi đó 3 port khác còn lại lại không có chức năng này.

                            Bạn nào biết chỉ giúp mình với. Mình xin chân thành cảm ơn.
                            http://nptel.ac.in/courses/Webcourse...re6/lec6_1.htm

                            Port-0 Pin Structure
                            Port -0 has 8 pins (P0.0-P0.7).
                            The structure of a Port-0 pin is shown in fig 6.2.

                            Fig 6.2: Port-0 Structure
                            Port-0 can be configured as a normal bidirectional I/O port or it can be used for address/data interfacing for accessing external memory. When control is '1', the port is used for address/data interfacing. When the control is '0', the port can be used as a normal bidirectional I/O port.

                            Let us assume that control is '0'. When the port is used as an input port, '1' is written to the latch. In this situation both the output MOSFETs are 'off'. Hence the output pin floats. This high impedance pin can be pulled up or low by an external source. When the port is used as an output port, a '1' written to the latch again turns 'off' both the output MOSFETs and causes the output pin to float. An external pull-up is required to output a '1'. But when '0' is written to the latch, the pin is pulled down by the lower MOSFET. Hence the output becomes zero.

                            When the control is '1', address/data bus controls the output driver MOSFETs. If the address/data bus (internal) is '0', the upper MOSFET is 'off' and the lower MOSFET is 'on'. The output becomes '0'. If the address/data bus is '1', the upper transistor is 'on' and the lower transistor is 'off'. Hence the output is '1'. Hence for normal address/data interfacing (for external memory access) no pull-up resistors are required.

                            Port-0 latch is written to with 1's when used for external memory access.Click image for larger version

Name:	Drawing2.gif
Views:	1
Size:	7.4 KB
ID:	1397279 you must translate to vietnamese !
                            Last edited by nxh211290; 10-08-2014, 03:04.

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            Đang tải...
                            X