Thông báo

Collapse
No announcement yet.

dùng ngắt trở về địa chỉ 0000h??

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

  • #16
    Theo tui, các bạn đừng dùng khởi tạo stack mặc nhiên là mov sp, #07 vì như vậy là bạn chỉ còn đúng 8 thanh ghi bank0 dùng cho chương trình của bạn, phần còn lại là stack!

    on_reset:
    mov sp, #50H ; khởi tạo stack pointer

    Bạn nên dùng đoạn code trên để khởi tạo stack, đương nhiên có thể gia giảm số 50H nhưng đại khái nó phải cao cao 1 tí.
    Và bài toán của thanhnguyen0 thì chỉ cần 1 lệnh jmp 0000 hoặc jmp on_reset là xong.
    Không cần tính toán thêm gì nữa cả. Vì vào chương trình chính bạn đã tạo lại SP rồi.
    Không biết các bạn thấy chưa ổn chỗ nào?
    Imagine all the people
    Living life in peace...

    Comment


    • #17
      Nguyên văn bởi toymaker Xem bài viết
      Chương trình chính KHÔNG được có reti (Chả có luật nào bắt buộc phải có reti cả, vì bạn muốn reset CPU chứ đâu cần trở về chương trình chính ở điểm xử lý ngắt !)
      chào anh
      !!
      không bit ý câu nói trên của anh như thế nào. (nếu sử dụng ngắt) đã phục vụ xong trình phục vụ ngắt mà không có lệnh RETI thì sẽ tràn stack thì sao ạ??
      xin anh giải thích thêm!!
      kíh mong được học hỏi thêm ở anh
      =====================
      còn

      Comment


      • #18
        Stack thì không sợ tràn đâu, nó chỉ tràn khi có quá nhiều lệnh call lồng nhau, và/hoặc quá nhiều lệnh push mà thôi.
        Vấn đề là ở chỗ nếu thiếu 1 lệnh reti thì cơ cấu xử lý ngắt sẽ treo ở ngắt đó.
        Việc nhảy về 0000 sẽ đưa CPU trở lại chương trình chính từ đầu nhưng có lẽ sẽ không còn chấp nhận ngắt nữa.
        Vì vậy an toàn nhất để reset trong ngắt là cách mà bạn pvkhai nêu ra ở đầu luồng, và bạn chipmickey đã cho đoạn code push gia trị 0000 vào stack trước khi reti.
        Tui thì giải bài toán theo cách khác với thanhnguyen0 là không dùng ngắt để reset.
        Trong chuơng trình chính tui kiểm tra cờ ngắt của ngắt đó (đương nhiên là phải khai báo cấm ngắt đó ở đầu chương trình chính).
        Nếu cờ ngắt tắt thì tiếp tục chương trình bình thường.
        Nếu cờ ngắt bật thì xóa cờ ngắt rồi nhảy về 0000, xem như đã reset CPU.
        Imagine all the people
        Living life in peace...

        Comment


        • #19
          em đọc các cách của các bác mà chẳng hiểu j cả.cuôi cùng là các bác có thể giải thích giùm em là:
          khi thực hiện xong ngắt mà muốn nó trở về một địa chỉ đặt sẵn thì làm thế nào(nhớ rõ là không phải quay về địa chỉ trước khi xảy ra ngắt mà pc đã lưu vào trong stack,mà nó sẽ nhảy về địa chỉ do mình đặt ra)
          đùa chứ tớ hơi ngu...thông cảm nha..heee...

          Comment


          • #20
            đùa chứ tớ hơi ngu...thông cảm nha..heee...

            Comment


            • #21
              em đọc các cách của các bác mà chẳng hiểu j cả.cuôi cùng là các bác có thể giải thích giùm em là:
              khi thực hiện xong ngắt mà muốn nó trở về một địa chỉ đặt sẵn thì làm thế nào(nhớ rõ là không phải quay về địa chỉ trước khi xảy ra ngắt mà pc đã lưu vào trong stack,mà nó sẽ nhảy về địa chỉ do mình đặt ra)
              đùa chứ tớ hơi ngu...thông cảm nha..heee...

              Comment


              • #22
                Nguyên văn bởi toan258 Xem bài viết
                em đọc các cách của các bác mà chẳng hiểu j cả.cuôi cùng là các bác có thể giải thích giùm em là:
                khi thực hiện xong ngắt mà muốn nó trở về một địa chỉ đặt sẵn thì làm thế nào(nhớ rõ là không phải quay về địa chỉ trước khi xảy ra ngắt mà pc đã lưu vào trong stack,mà nó sẽ nhảy về địa chỉ do mình đặt ra)
                thoát ngắt thì nó trở về chương trình chính ,chỗ mà từ đó bạn ngắt ,nếu muốn trở về địa chỉ bạn đặt thì thêm cái lệnh cho nó nhảy ,e nghĩ thế >.<

                Comment


                • #23
                  Khởi tạo lại stack pointer rồi ở ngắt nhảy về đầu là được.Hoặc đầu chương trình đã khởi tạo stack.Ở ngắt chỉ việc nhảy.
                  , , ,

                  Comment


                  • #24
                    Nguyên văn bởi rptdnmqs Xem bài viết
                    Khởi tạo lại stack pointer rồi ở ngắt nhảy về đầu là được.Hoặc đầu chương trình đã khởi tạo stack.Ở ngắt chỉ việc nhảy.
                    bác nói rõ hơn đi được không khó hiểu quá.nếu mà nhảy thế thì có thoát dc ngắt không khi không qua lệnh kết thúc ngắt là reti
                    đùa chứ tớ hơi ngu...thông cảm nha..heee...

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    • bqviet
                      Trả lời cho Đấu tắt điện cho máy tính bảng
                      bởi bqviet
                      Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                      06-12-2025, 17:17
                    • nguyendinhvan
                      Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
                      bởi nguyendinhvan
                      Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
                      05-12-2025, 19:59
                    • afrendly
                      Trả lời cho Đấu tắt điện cho máy tính bảng
                      bởi afrendly
                      Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
                      04-12-2025, 01:27
                    • nick22
                      Trả lời cho Máy điện châm ?
                      bởi nick22
                      Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
                      01-12-2025, 13:23
                    Đang tải...
                    X