Thông báo

Collapse
No announcement yet.

Cac Ban Gup Toi Su Dung Ngat Cua 89s52

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

  • Cac Ban Gup Toi Su Dung Ngat Cua 89s52

    chao tat ca cac ban tren dien dan dientuvietnam.net!
    toi la thuong hien theo hoc lop dien tu o DH can tho
    hien toi dang lam 1 de tai la: mach bao gio hoc tu dong su dung VDK 89S52. toi da viet chuong trinh va gap phai mot so kho khan toi hien chua giai quyet duoc toi viet bai nay nho anh em tren dien dan hay gup toi toi xin cam on tat ca moi nguoi.
    van de cua toi la:
    toi da dung tat ca cac ngat cuaVDK nhung khong hieu vi sao toi chi su dung duoc ngat ngoai 0, ngat timer0, ngat timer2,ngat timer1 va ngat port noi chua kiem tra con ngat ngoai 1 thi khong dung duoc toi da khai bao la sung cac ngat ma khong hieu sao khi toi nhan vao nut duoc noi den chan P3.3 thi khong co tac dung, toi da kiem tra pham cung roi no khong co van de gi het ma chi tai pham mem thoi day la File chuong tring toi da viet cac ban xem va hay gup toi voi

  • #2
    Xem qua đoạn chương trình của bạn, tôi thấy phần Init khởi tạo hoàn toàn đúng.Bạn sử dụng ngắt theo sườn xuống (falling edge).
    Tuy nhiên tôi không thấy bạn xóa các cờ ngắt trong các thủ tục ngắt. Trình compiler assembler không tự xóa các cờ này , do vậy bạn cần xóa ngay trước thủ tục reti
    (VD : clr TF0,...)

    Về phần cứng , phím bấm cần treo trở lên VCC để đảm bảo khi ấn phím sẽ có chuyển mức 1->0 .

    Comment


    • #3
      Nguyên văn bởi trungkt
      Xem qua đoạn chương trình của bạn, tôi thấy phần Init khởi tạo hoàn toàn đúng.Bạn sử dụng ngắt theo sườn xuống (falling edge).
      Tuy nhiên tôi không thấy bạn xóa các cờ ngắt trong các thủ tục ngắt. Trình compiler assembler không tự xóa các cờ này , do vậy bạn cần xóa ngay trước thủ tục reti
      (VD : clr TF0,...)

      Về phần cứng , phím bấm cần treo trở lên VCC để đảm bảo khi ấn phím sẽ có chuyển mức 1->0 .
      Bác xem lại, bọn 89 tự xóa cờ ngắt khi có chương trình phục vụ ngắt (trừ ngắt Serial). Hay chẳng lẽ em nhầm

      Comment


      • #4
        Có thể là do khi bạn nhấn phím ở P3.3 nhưng ngắt ngoài 1 không được gọi vì chương trình đang phục vụ các ngắt có ưu tiên cao hơn, bạn thử thêm câu lệnh:
        MOV IP,#00000100b ngay trong phần main cấu hình các ngắt
        thanh ghi ưu tiên ngắt IP: - - PT2 PS PT1 PX1 PT0 PX0
        (T: timer, S:seria, X: External)
        Dù sao đây cũng là suy đoán của mình...chúc bạn thành công
        Thân
        Last edited by nhansky; 21-12-2005, 07:42.

        Comment


        • #5
          Nguyên văn bởi phamthaihoa
          Bác xem lại, bọn 89 tự xóa cờ ngắt khi có chương trình phục vụ ngắt (trừ ngắt Serial). Hay chẳng lẽ em nhầm
          Oh Sorry !!! Mình đã xem lại tài liệu , chỉ có ngắt serial là cần xóa trước khi thoát khỏi ngắt. Từ trước tới nay mình có thói quen xóa các ngắt cho nên mình đã nhầm . Thành thật xin lỗi mọi người !!!!!

          Comment


          • #6
            to thanh that cam on cac ban da doc bai viet cua toi! toi da nap chuong trinh va cho chay thu ngat ngoai0 hoat dong tot khong co van de gi con viec thuet lap yeu tien cho cac ngat toi chi yeu tien cho ngat timer2 vi no duoc su dung de dem thoi gian thuc toi da thu nhan p3.3 that lau nhung van khong thay ngat ngoai1 xuat hien rat mong duoc su gup do cua cac ban

            Comment


            • #7
              Theo mình nghĩ thì ngắt timer sẽ được gọi liên tục sau một khoảng thời gian được định trước bởi TH,TL. Còn ngắt ngoài chỉ được gọi khi có cạnh xuống (hay mức thấp) tại pin P3.2/P3.3. Sở dĩ ngắt ngoài 0 hoạt động được vì theo default thì nó có mức ưu tiên cao nhất nên nó có thể gọi ngắt ngay cả khi ngắt timer đang được thực hiện. Chính vì ngắt ngoài chỉ được gọi khi nào bạn muốn thay đổi ngày, giờ...(nhấn SW), nghĩa là nó ko xảy ra thường xuyên bằng ngắt timer do dó bạn nên ưu tiên cho nó. Bạn test thử đi nhé.
              Thân

              Comment


              • #8
                cam on ban nhansky de toi ve thu lai xem sao

                Comment


                • #9
                  Chao cac ban!
                  toi da viet lai chuong trinh va cho chay thu dung la do toi goi Timer0 lien tuc
                  len khi toi nhan P3.3 thi chuong trinh co le dang phuc vu cac ngat Timer0 hoac Timer1
                  boi vay len khong the co ngat ngoai1 xuat hien khi toi nhan vao p3.3 toi da sua lai cau lenh: MOV IP,#20H thanh MOV IP,#24h ngat ngoai 1 da xuat hien
                  nhung khong hieu sao toi lai khong the nao thoat ra khoi ben ngoai ca hai ngat ngoai 0 va ngat ngoai 1 duoc toi da kiem tra chuong rat ky nhung khong xac dinh duoc minh sai o dau toi chay mo phong thi chuong trinh chay binh thuong khong co van de gi toi up chuong trinh ma toi da sua len cac ban xem gup toi xem toi sai o dau ma toi tim hoai hong thay
                  Toi xin thanh that cam on cac ban nhieu

                  Comment


                  • #10
                    Anh này khoái viết kiểu để RETI lưng chừng, nên đặt dòng RETI ở cuối cùng, mọi nhãn của một ngắt nên cho nằm bên trong hết.

                    Comment


                    • #11
                      Các anh ơi cho em hỏi : Làm cách nào để gọi chế độ Idle và chế độ Pown-down?
                      Có thể viết code dc ko ạ!
                      Cho cả code bằng ASM và C dc ko ạ!
                      Thien thu van co: Yeu la kho!!!
                      Van co thien thu: Kho van yeu!!!!!!!!!!!!!!!!!!!!!!

                      Comment


                      • #12
                        Hai chế độ tiết kiệm năng lượng này được cấu hình trong thanh ghi PCON.
                        Bit PCON.1 = PD (Power Down)
                        Bit PCON.0 = IDL (Idle)

                        Khi một trong hai bit đó được set thì chip sẽ chuyển sang trạng thái ngủ tương ứng.
                        Do PCON không phải là thanh ghi đánh địa chỉ bit được nên cần một lệnh mov (lệnh gán trong C) là thực hiện được:
                        ...
                        mov PCON,#0b00000001 ; Chuyển sang chế độ Idle
                        ...

                        Tuy nhiên để tránh làm thay đổi nội dung của các bit khác trong thanh ghi này, người ta thường dùng thao tác sau để set một bit nào đó trong thanh ghi này lên giá trị 1:
                        ...
                        mov a,PCON
                        orl a,0b00000001
                        mov PCON,a
                        ....

                        Thân mến,
                        blackmoon.

                        Comment


                        • #13
                          Nguyên văn bởi thuong75 Xem bài viết
                          chao tat ca cac ban tren dien dan dientuvietnam.net!
                          toi la thuong hien theo hoc lop dien tu o DH can tho
                          hien toi dang lam 1 de tai la: mach bao gio hoc tu dong su dung VDK 89S52. toi da viet chuong trinh va gap phai mot so kho khan toi hien chua giai quyet duoc toi viet bai nay nho anh em tren dien dan hay gup toi toi xin cam on tat ca moi nguoi.
                          van de cua toi la:
                          toi da dung tat ca cac ngat cuaVDK nhung khong hieu vi sao toi chi su dung duoc ngat ngoai 0, ngat timer0, ngat timer2,ngat timer1 va ngat port noi chua kiem tra con ngat ngoai 1 thi khong dung duoc toi da khai bao la sung cac ngat ma khong hieu sao khi toi nhan vao nut duoc noi den chan P3.3 thi khong co tac dung, toi da kiem tra pham cung roi no khong co van de gi het ma chi tai pham mem thoi day la File chuong tring toi da viet cac ban xem va hay gup toi voi
                          Xin lỗi các bác vì em đã khai quật cái Topic từ thời xa xưa này nhưng vì e sinh sau đẻ muộn nên thấy việc bất bình mà kô ra tay thì thấy áy náy trong lòng,mặc dù e biết giờ này bác Thưong75 chắc đã ra trường và có thề vợ con cũng đùm đề rồi,nhưng e tin là nỗi bứt rứt bởi thắc mắc của bác ấy chưa được giải vẫn còn vất vưởng đâu đây,chắc là trong 1 cái xó xỉnh nào đó của cái 4rum này chăng?Thôi thì cũng mong cho bác ấy gặp đc nhiều điều tốt đẹp trong sự nghiệp.Có được cái duyên để lên 4rum này cùng học hỏi và cùng...vò đầu gãi tai với a e âu cũng là phúc phận của những số phận nổi trôi.Ơ mà sao hôm nay e nói nhiều thế nhỉ,chắc tại ngoài kia trời mưa to quá-->buồn
                          Còn đây là ý kiến của e: Theo e nghĩ thì bác ấy dùng cái thằng Proteus để mô phỏng các ngắt rồi,theo kinh nghiêm của e thì mặc dù Proteus đã ra tới phiên bản 7.5 rồi nhưng cái lỗi dùng nhiều Timer 1 lúc vẫn còn đeo đuổi từ những phiên bản đầu tiên.Nôm na là khi ta dùng nhiều Timer hay nhiều Interup thì nó chỉ chạy đúng 1 hoặc 2 timer hoặc 2 ngắt là cùng,còn lại thì nó im lìm.E dính cái này vài lần,sửa Code muốn điên cái đầu,tới lúc liều mạng làm mạch chạy thử thì cứ phà phà.


                          email:
                          Giá mà mạch điện tử không có nhiễu (noise) thì mình bây giờ đã là ... đại gia

                          Comment

                          Về tác giả

                          Collapse

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

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

                          Collapse

                          Đang tải...
                          X