Thông báo

Collapse
No announcement yet.

Bộ nhớ chương trình, bộ nhớ dữ liệu, ngăn xếp, cơ chế ngắt và SFR của 8051

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

  • #31
    các bác cho em hỏi cơ chế gọi ngắt trong keil C như thế nào đó?????
    thanks!!
    em còn gà mong các đại huynh chỉ giúp !

    Comment


    • #32
      Các bác cho em hỏi, khi VXL (AT89C51) bị treo do bị nhiễu có cách nào hoặc mạch nào để nó tự reset không?

      Comment


      • #33
        Nguyên văn bởi phucvan2002 Xem bài viết
        Các bác cho em hỏi, khi VXL (AT89C51) bị treo do bị nhiễu có cách nào hoặc mạch nào để nó tự reset không?
        Dùng watchdog đi bạn, watchdog nội thì AT89S8252 hoặc 89C55WD, hoặc mấy chú của Philips mới có.
        Watchdog ngoài thì vào đây:
        http://dientuvietnam.net/forums/showthread.php?t=2510

        Comment


        • #34
          có ai biet về ds1307 lấy real time như thế nào kông giúp em với,em chả biết tí gi ve nó cả

          Comment


          • #35
            Nguyên văn bởi phucvan2002 Xem bài viết
            Các bác cho em hỏi, khi VXL (AT89C51) bị treo do bị nhiễu có cách nào hoặc mạch nào để nó tự reset không?
            con 89c51 bên trong không trang bị whatdogtime nên nếu bạn muốn reset lại nó khi nó bị treo thì có thể tự thiết kế một mạch whatdog bên ngoài bằng một mạch định thời 555 chẳng hạn, sau một thời gian nào đấy do bạn tự đặt thì bộ giao động này gửi tới chân reset và reset lại vi điều khiển, chỉ ngăn chặn được xung này bằng phần mềm điều khiển do con 89c51 tạo ra, bạn có thể dùng ngắt để xoá whatdog ngoài này thông qua các mạhc AND, OR, NOT , khi con 89c51 bị treo thì nó không thể gửi ra xung xoá whatdog và thể là sau một thời gian bạn cài đặt cho whatdog là nó tự động reset vi điều khiển . Trong lập trình các VDK có whatdog rồi thì phải xoá whatdog thường xuyên hoặc cấm nó từ đầu nếu không muốn bị reset VDK .
            |

            Comment


            • #36
              Nguyên văn bởi nguyentienxi Xem bài viết
              có ai biet về ds1307 lấy real time như thế nào kông giúp em với,em chả biết tí gi ve nó cả
              tìm hiểu về chuẩn giao tiếp I2C trên picvietnam.com !
              |

              Comment


              • #37
                Nguyên văn bởi chunhatonlin Xem bài viết
                con 89c51 bên trong không trang bị whatdogtime nên nếu bạn muốn reset lại nó khi nó bị treo thì có thể tự thiết kế một mạch whatdog bên ngoài bằng một mạch định thời 555 chẳng hạn, sau một thời gian nào đấy do bạn tự đặt thì bộ giao động này gửi tới chân reset và reset lại vi điều khiển, chỉ ngăn chặn được xung này bằng phần mềm điều khiển do con 89c51 tạo ra, bạn có thể dùng ngắt để xoá whatdog ngoài này thông qua các mạhc AND, OR, NOT , khi con 89c51 bị treo thì nó không thể gửi ra xung xoá whatdog và thể là sau một thời gian bạn cài đặt cho whatdog là nó tự động reset vi điều khiển . Trong lập trình các VDK có whatdog rồi thì phải xoá whatdog thường xuyên hoặc cấm nó từ đầu nếu không muốn bị reset VDK .
                Bạn cho mạch cụ thể đi. Trừu tượng quá!

                Comment


                • #38
                  Nguyên văn bởi chunhatonlin Xem bài viết
                  con 89c51 bên trong không trang bị whatdogtime nên nếu bạn muốn reset lại nó khi nó bị treo thì có thể tự thiết kế một mạch whatdog bên ngoài bằng một mạch định thời 555 chẳng hạn, sau một thời gian nào đấy do bạn tự đặt thì bộ giao động này gửi tới chân reset và reset lại vi điều khiển, chỉ ngăn chặn được xung này bằng phần mềm điều khiển do con 89c51 tạo ra, bạn có thể dùng ngắt để xoá whatdog ngoài này thông qua các mạhc AND, OR, NOT , khi con 89c51 bị treo thì nó không thể gửi ra xung xoá whatdog và thể là sau một thời gian bạn cài đặt cho whatdog là nó tự động reset vi điều khiển . Trong lập trình các VDK có whatdog rồi thì phải xoá whatdog thường xuyên hoặc cấm nó từ đầu nếu không muốn bị reset VDK .
                  Dùng con AT89S51 đi. Cần gì phải phức tạp thế.
                  AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
                  Xem thêm tại Online Store ---> Click here
                  Mob: 0982.083.106

                  Comment


                  • #39
                    xin các bác giải thích giúp em vấn đề này nhé: khi mở rộng bộ nhớ ngoài(Rom hay Ram gì tuỳ) khi này thì chân EA phải nối mass, khi ta viết chương trình chính, chương trình này sẽ nạp vào trong IC89, nhưng mà khi gắn IC89 vào mạch để chạy thì chân EA đang nối mass như vậy thì làm sao chương trình của chúng ta chạy được,(vì theo như trong sách nói là EA nối lên 5v thì VĐK sẽ truy suất bộ nhớ trong), chẳng lẻ lúc này VĐK có thể làm việc cùng lúc bộ nhớ nội và bộ nhớ ngoại hay là gì đó mà ..... em nhờ các bác giải thích hộ nhé. cám ơn các bác nhiều.

                    Comment


                    • #40
                      Nguyên văn bởi phuceltn Xem bài viết
                      xin các bác giải thích giúp em vấn đề này nhé: khi mở rộng bộ nhớ ngoài(Rom hay Ram gì tuỳ) khi này thì chân EA phải nối mass, khi ta viết chương trình chính, chương trình này sẽ nạp vào trong IC89, nhưng mà khi gắn IC89 vào mạch để chạy thì chân EA đang nối mass như vậy thì làm sao chương trình của chúng ta chạy được,(vì theo như trong sách nói là EA nối lên 5v thì VĐK sẽ truy suất bộ nhớ trong), chẳng lẻ lúc này VĐK có thể làm việc cùng lúc bộ nhớ nội và bộ nhớ ngoại hay là gì đó mà ..... em nhờ các bác giải thích hộ nhé. cám ơn các bác nhiều.
                      Cậu đọc kỹ lại đi nhé. Chỉ có dùng ROM ngoài thì EA mới nối đất. Còn dùng RAM ngoài thì chẳng liên quan gì đến EA cả.
                      Khi EA nối đất thì chương trình chính được nạp vào ROM chứ không phải VXL nhé.
                      AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
                      Xem thêm tại Online Store ---> Click here
                      Mob: 0982.083.106

                      Comment


                      • #41
                        cám ơn bác nhiều nhé em sẽ xem lại, có gì nhờ bác giải thích hộ nhé

                        Comment


                        • #42
                          Nhờ các bác xem hộ em cấu trúc đoạn chương trình sau đây nhé:em ko viết hết toàn bộ chương trình vì em chỉ muốn hỏi về cấu trúc chương trình thôi(nếu các bác thấy cần thiết thì em sẽ viết hết chương trình lên sau nhé)
                          xxxxxxxxxxxxxxxxxxxxxxxxxxx
                          ORG 500H ;Khai báo vùng nhớ lưu mã 7d
                          ma7d: DB 0c0h,0f9h,0a4h,0b0h,099h,092h

                          ORG 0000H ; Bat dau chuong trinh chinh
                          sjmp main
                          main: ................ ;
                          .................;một số lệnh gì đó ko quan trọng
                          mov dptr,#500h
                          mov A,11h
                          MOVC A,@A+dptr
                          ..................
                          ..................
                          end
                          xxxxxxxxxxxxxxxxxxxxxxxxx

                          em chỉ muốn hỏi là có phải chương trình này được viết có sử dụng bộ nhớ Rom ngoài phải ko (vì em thấy có dptr và lệnh MOVC A,@A+dptr). Nếu đúng như vậy thì địa chỉ khai báo 500h làm sao ta giải mã địa chỉ ra được như vậy?.
                          à còn nửa là cách sử dụng kiểu khai báo lệnh ''DB'' như vậy có đúng ko các bác, sao trong sách tống văn on em ko thấy nói lệnh này. Đoạn chương trình này là chương trình đếm sản phẩm và hiển thị led 7d, của một bạn trên mạng chỉ em làm nhưng mà làm hoài mà ko chạy được(phần cứng của em ko có bộ nhớ ngoài) nên em mới có vài nghi ngờ chỉ còn biết nhờ các bác.

                          {hỏi một câu dốt trong chốc lác còn hơn không hỏi sẻ dốt nát cã đời kekekek}

                          Comment


                          • #43
                            Nguyên văn bởi VNarmy Xem bài viết
                            Cậu đọc kỹ lại đi nhé. Chỉ có dùng ROM ngoài thì EA mới nối đất. Còn dùng RAM ngoài thì chẳng liên quan gì đến EA cả.
                            Khi EA nối đất thì chương trình chính được nạp vào ROM chứ không phải VXL nhé.
                            cám ơn bác VNarmy,em đã đọc lại rồi thật đúng là như bác nói, như vậy là ta phải cần có một mạch nạp Rom phải ko bác, chương trình ta sẽ viết và biên dịch bình thường nhưng mà lúc này sẻ nạp vào con rom ngoài.

                            Comment


                            • #44
                              Nguyên văn bởi phuceltn Xem bài viết
                              Nhờ các bác xem hộ em cấu trúc đoạn chương trình sau đây nhé:em ko viết hết toàn bộ chương trình vì em chỉ muốn hỏi về cấu trúc chương trình thôi(nếu các bác thấy cần thiết thì em sẽ viết hết chương trình lên sau nhé)
                              xxxxxxxxxxxxxxxxxxxxxxxxxxx
                              ORG 500H ;Khai báo vùng nhớ lưu mã 7d
                              ma7d: DB 0c0h,0f9h,0a4h,0b0h,099h,092h

                              ORG 0000H ; Bat dau chuong trinh chinh
                              sjmp main
                              main: ................ ;
                              .................;một số lệnh gì đó ko quan trọng
                              mov dptr,#500h
                              mov A,11h
                              MOVC A,@A+dptr
                              ..................
                              ..................
                              end
                              xxxxxxxxxxxxxxxxxxxxxxxxx

                              em chỉ muốn hỏi là có phải chương trình này được viết có sử dụng bộ nhớ Rom ngoài phải ko (vì em thấy có dptr và lệnh MOVC A,@A+dptr). Nếu đúng như vậy thì địa chỉ khai báo 500h làm sao ta giải mã địa chỉ ra được như vậy?.
                              à còn nửa là cách sử dụng kiểu khai báo lệnh ''DB'' như vậy có đúng ko các bác, sao trong sách tống văn on em ko thấy nói lệnh này. Đoạn chương trình này là chương trình đếm sản phẩm và hiển thị led 7d, của một bạn trên mạng chỉ em làm nhưng mà làm hoài mà ko chạy được(phần cứng của em ko có bộ nhớ ngoài) nên em mới có vài nghi ngờ chỉ còn biết nhờ các bác.

                              {hỏi một câu dốt trong chốc lác còn hơn không hỏi sẻ dốt nát cã đời kekekek}

                              AT89S51 có ROM nội dung lượng 4K tương đương với 12 bit địa chỉ. Như vậy địa chỉ 500h vẫn có thể nằm trong ROM nội.
                              Còn về khai báo DB thì cậu cứ dịch thử. Nếu sai chương trình dịch sẽ ra thông báo lỗi.
                              AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
                              Xem thêm tại Online Store ---> Click here
                              Mob: 0982.083.106

                              Comment


                              • #45
                                có cách nào ghi tạm mấy giá trị vào ROM nội của 8951 trong khi chương trình đang chạy mà không phải dùng ROM ngoài không các bác ?

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X