Thiết kế chương trình sử dụng các ngắt

Một phần của tài liệu Tài liệu Chương 2: Tập lệnh Giáo trình vi xử lý ppt (Trang 46 - 48)

B ảng 2.4: Tóm tắc các lệnh trong vi xử lý

2.6.4. Thiết kế chương trình sử dụng các ngắt

Các lỗi thường xảy ra trong thiết kế hệ thống thường liên quan đến các ngắt. Vì chúng ta đang sử dụng các ngắt các ví dụ sẽ hoàn chỉnh và được thực thi độc lập. Mỗi 1 chương trình bắt đầu ởđịa chỉ 0000H với giả thiết là chương trình bắt đầu được thực thi sau khi hệ thống reset. Ý tưởng cuối cùng là các chương trình này phát triển cho các ứng dụng chính thức, chúng được thường trú tong ROM hoặc EPROM.

Khuôn mẫu:

LJMP MAIN

…. ; các điểm nhập của ISR

ORG 0030H ; điểm nhập của chương trình chính MAIN: ; chương trình chính bắt đầu

Lệnh đầu tiên nhảy đến địa chỉ 0030H ngay trên các vecto ngắt nơi các ISR bắt đầu, như được trình bày bảng vecto ngắt

Nếu chỉ có 1 nguyên nhân ngăt được dùng ví dụ ngắt do bộ định thời 0 thì khuôn mẫu trình bày dưới đây:

ORG 0000H ; reset LJMP MAIN

ORG 000BH ; điểm nhập của ngắt do bộđịnh thời 0 TOISR: ; bắt đầu ISR cho bộđịnh thời 0

RETI ; trở về chương trình chính MAIN: ; chương trình chính

Nếu có nhiều ngắt được sử dụng ta phải cẩn thận để bảo đảm các ISR được bắt đầu đúng vị trí và không tràn sang ISR kế. Vì chỉ có 1 ngắt được sử dụng trong ví dụ trên, chương trình chính có thể bắt đầu ngay sau lênh RETI.

Các trình phc v ngt kích thước ln

Nếu 1 trình phục vụ ngắt dài hơn 8 byte được cần đến, ta phải di chuyển chương trình này đến 1 nơi khác trong bộ nhớ chương trình hoặc ta có thể cho lấn qua điểm nhập của ISR kế. Điển hình ISR bắt đầu với 1 lệnh nhảy đến 1 vùng khác của bộ nhớ chương trình, ở đó ISR được trãi rộng nếu cần. Nếu chỉ khảo sát bộđịnh thời không, khuôn mẫu sau đây có thể được sử dụng:

ORG 0000H ; reset LJMP MAIN

ORG 000BH ; điểm nhập của ngắt do bộđịnh thời 0 LJMP T0ISR

ORG 0030H ; phía trên các vecto ngắt MAIN: ; chương trình chính

RETI ; trở về chương trình chính

Ví d 6.1: to sóng vuông s dng các ngt do b định thi. viết chương trình to ra sóng vuông 10kHz trên P1.0 s dng định thi 0.

Các ngắt do bộ định thời xuất hiện khi các thanh ghi định thời (TLx/THx) tràn và set cờ tràn TFx = 1.

ORG 0 ; điểm nhập reset

LJMP MAIN ; nhảy qua khỏi các vecto ngắt

ORG 000BH ; vecto ngắt của bộđịnh thời 0 T0ISR: CPL P1.0 ; lấy bù RETI ORG 0030H ; điểm nhập của chương trình chính MAIN : MOV TMOD, #02H ; chếđộ 2 của bộđịnh thời 0 MOV TH0, #-50 ; trì hoãn 50μs SETB TR0 ; bộđịnh thời hoạt động

MOV IE, #82H ; cho phép ngắt do bộđịnh thời 0

SJMP $ ; không làm gì

Một phần của tài liệu Tài liệu Chương 2: Tập lệnh Giáo trình vi xử lý ppt (Trang 46 - 48)

Tải bản đầy đủ (PDF)

(48 trang)