YOMEDIA
ADSENSE
Lập trình ngắt
387
lượt xem 144
download
lượt xem 144
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Có5 nguyên nhân tạo ngắt: 2 ngắt ngoài, 2 ngắt bộ định thời, 1 ngắt do port nối tiếp •Khi reset, tất cảcác ngắt đều bịvô hiệu hóa •Khi xảy ra 2 hay nhiều ngắt đồng thời, hay 1 ngắt mới xuất hiện trong khi 1 ngắt đang thực thi
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Lập trình ngắt
- NỘI DUNG 1. Giới thiệu 7. Các mode định địa chỉ 2. Sơ đồ khối và chân 8. Lập trình IO 3. Tổ chức bộ nhớ 9. Tạo trễ 4. Các thanh ghi chức 10.Lập trình năng đặc biệt Timer/Counter 5. Dao động và hoạt động 11.Giao tiếp nối tiếp reset 12.Lập trình ngắt 6. Tập lệnh 13.Lập trình hợp ngữ 1
- 12. Lập trình ngắt Interrupt Programming
- 12-1. Giới thiệu time Main (a) Thực thi chương trình không có ngắt ISR ISR ISR Thực thi ở mức ngắt Main Main Main Main Thực thi ở mức nền time (a) Thực thi chương trình có ngắt 3
- 12-2. Tổ chức ngắt • Có 5 nguyên nhân tạo ngắt: 2 ngắt ngoài, 2 ngắt bộ định thời, 1 ngắt do port nối tiếp • Khi reset, tất cả các ngắt đều bị vô hiệu hóa • Khi xảy ra 2 hay nhiều ngắt đồng thời, hay 1 ngắt mới xuất hiện trong khi 1 ngắt đang thực thi ta có 2 sơ đồ xử lý ngắt: sơ đồ chuỗi vòng (cố định) và sơ đồ 2 mức ưu tiên (lập trình bởi người dùng) 4
- 5
- 12-3. Xử lý ngắt Ngắt Cờ Thanh ghi SFR & vị trí bit Do bên ngoài (ngắt ngoài 1) IE1 TCON.3 Do bên ngoài (ngắt ngoài 0) IE0 TCON.1 Do bộ định thời 1 TF1 TCON.7 Do bộ định thời 0 TF0 TCON.5 Do port nối tiếp TI SCON.1 Do port nối tiếp RI SCON.0 Do bộ định thời 2 TF2 T2CON.7 (8052) Do bộ định thời 2 EXF2 T2CON.6 (8052) 6
- 12-3-1. Các vector ngắt Ngắt do Cờ Địa chỉ vector Reset hệ thống RST 0000H Ngắt ngoài 0 IE0 0003H Bộ định thời 0 TF0 000BH Ngắt ngoài 1 IE1 0013H Bộ định thời 1 TF1 001BH Port nối tiếp RI hoặc TI 0023H Bộ định thời 2 TF2 hoặc EXF2 002BH 7
- 12-4. Thiết kế chương trình sử dụng ngắt Khuôn mẫu chương trình có sử dụng ngắt: ORG 0000H ; Điểm nhập sau khi reset 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 . . 8
- 12-4-1. ISR kích thước nhỏ ORG 0000H ; Điểm nhập sau khi reset LJMP MAIN ORG 000BH ; điểm nhập của ngắt do Timer 0 T0ISR: . ; bắt đầu ISR cho Timer 0 . RETI ; trở về chương trình chính MAIN: . ; chương trình chính bắt đầu . 9
- 12-4-2. ISR kích thước lớn ORG 0000H ; Điểm nhập sau khi reset LJMP MAIN ORG 000BH ; điểm nhập của ngắt do Timer 0 LJMP T0ISR ORG 0030H MAIN: . ; chương trình chính bắt đầu . T0ISR: . ; bắt đầu ISR cho Timer 0 . RETI ; trở về chương trình chính 10
- VD1: Tạo sóng vuông sử dụng các ngắt do bộ định thời: viết chương trình sử dụng timer 0 và các ngắt để tạo 1 sóng vuông tần số 10KHz trên chân P1.0 ORG 0000H LJMP MAIN ORG 000BH T0ISR: CPL P1.0 RETI ORG 0030H MAIN: MOV TMOD, #02H ; mode 2 của timer 0 MOV TH0, #-50 ; trì hoãn 50us SETB TR0 ; bật timer MOV IE, #82H ; cho phép ngắt do timer 0 SJMP $ ; không làm gì END 11
- • Lưu ý: Cờ tràn bộ định thời TF0 không cần được xóa bởi phần mềm do khi các ngắt được cho phép, cờ này tự động được xóa bởi phần cứng khi CPU trỏ tới ISR • Các cờ gây ngắt TF0, TF1, IE0, IE1 tự động được xóa bởi phần cứng khi CPU trỏ tới ISR • Nhưng các cờ gây ngắt RI, TI không được xóa bởi phần cứng khi CPU trỏ tới ISR VD2: Tạo sóng vuông sử dụng các ngắt do bộ định thời: viết chương trình sử dụng timer 0, timer 1 và các ngắt để tạo 2 sóng vuông tần số 10KHz và 5KHz trên chân P1.0, P1.1 ? 12
- VD3: Viết chương trình sử dụng các ngắt để tạo đồng thời 2 sóng vuông tần số 7KHz và 0.5KHz trên chân P1.7, P1.6 ? 8051 71us P1.7 1000us P1.6 13
- ORG 0000H LJMP MAIN ORG 000BH ; địa chỉ vector timer 0 LJMP T0ISR ORG 001BH ; địa chỉ vector timer 1 LJMP T1ISR ORG 0030H MAIN: MOV TMOD, #12H ; timer 1 : mode 1 ; timer 0 : mode 2 MOV TH0, #-71 ; trì hoãn 71us 7KHz SETB TR0 ; bật timer 0 SETB TF1 ; buộc ngắt do timer 1 MOV IE, #8AH ; cho phép ngắt do timers SJMP $ ; không làm gì 14
- T0ISR:CPL P1.7 RETI T1ISR:CLR TR1 MOV TH1, #HIGH (-1000) MOV TL1, #LOW (-1000) SETB TR1 CPL P1.6 RETI END 15
- 12-5. Các ngắt do port nối tiếp • Các ngắt này xuất hiện khi cờ ngắt phát TI hoặc cờ ngắt thu RI được set bằng 1 • Cờ gây ra ngắt ở port nối tiếp không được xóa bởi phần cứng khi CPU trỏ tới ISR Viết chương trình sử dụng các ngắt để liên tục phát đi tập mã ASCII (không bao gồm các mã điều khiển) đến 1 thiết bị đầu cuối nối với 8051 qua port nối tiếp? ORG 0 LJMP MAIN ORG 0023H LJMP SPISR ORG 0030H 16
- MAIN: MOV TMOD, #20H ; timer 1 – mode 2 MOV TH1, #-26 ; giá trị nạp lại: 1200 baud SETB TR1 MOV SCON, #42H ; mode 1, set TI =1 để buộc ; có ngắt đầu tiên; gửi ký tự thứ nhất MOV A, #20H MOV IE, #90H ; cho phép ngắt do port nt SJMP $ SPISR: CJNE A, #7FH, SKIP; nếu kết thúc tập mã ASCII MOV A, #20H SKIP: MOV SBUF, A ; gửi ký tự đến port nt INC A CLR TI RETI END 17
- 12-6. Các ngắt ngoài • Xảy ra khi có mức thấp hoặc có cạnh âm trên chân /INT0 hoặc /INT1 • Thực tế, các cờ gây ra các ngắt này là các bit IE0, IE1 của TCON • Việc chọn các ngắt loại tác động mức hay cạnh được lập trình thông qua các bit IT0 và IT1 của TCON • Các cờ gây ngắt IE0, IE1 tự động được xóa khi CPU trỏ tới ISR tương ứng 18
- VD1: Điều khiển lò nung: Sử dụng các ngắt để thiết kế bộ điều khiển lò nung sao cho nhiệt độ được duy trì ở 19oC 21oC VD2: Hệ thống báo động: Sử dụng các ngắt để thiết kế 1 hệ thống báo động tạo ra âm hiệu 400Hz trong 1 sec (dùng 1 loa nối với chân P1.7) mỗi khi bộ cảm biến đặt ở cửa (được nối với chân /INT0) tạo ra 1 chuyển trạng thái từ mức cao xuống mức thấp 19
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn