1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Lập trình ngắt ngoài

28 585 7

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 329,21 KB

Nội dung

Dẫn nhập• Như đã đề cập trong phần 10 bài toán 10.1, việc sử dụng lệnh “JNB TF0,target” để giám sát cờ TF0 là sự hoang phí thời gian vô cùng lớn Bài toán: Đảo bit P3.0 mỗi khi Timer 0 t

Trang 1

1 Giới thiệu

2 Sơ đồ khối và chân

3 Tổ chức bộ nhớ

4 Các thanh ghi chức năng đặc biệt (SFR)

5 Dao động và hoạt động reset

Trang 2

Dẫn nhập

• Như đã đề cập trong phần 10 (bài toán 10.1), việc sử dụng

lệnh “JNB TF0,target” để giám sát cờ TF0 là sự hoang phí thời gian vô cùng lớn

( Bài toán: Đảo bit P3.0 mỗi khi Timer 0 tràn:

• Các ngắt cho phép chúng ta quên cái việc kiểm tra tệ hại đó

• VĐK tự nó kiểm tra và khi điều kiện thỏa mãn, nó nhảy tới CTC, thực thi nhiệm vu, sau đó trở về chương trình chính

• CTC cho bài toán trên chỉ đơn giản như sau:

CPL P3.0

Trang 4

12-2 Tổ chức ngắt

• Có 5 nguyên nhân tạo ngắt đối với họ 51:

– 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)

Trang 5

Thanh ghi cho phép ngắt IE

Bit Ký hiệu Địa chỉ bit Mô tả

IE.2 EX1 AAH Cho phép ngắt từ bên ngoài ( ngắt ngoài 1)

Trang 6

Thanh ghi ưu tiên ngắt IP

Trang 7

12-3 Xử lý ngắt

Khi có 1 ngắt xuất hiện và được CPU chấp nhận Æ có các

thao tác sau:

• Hoàn tất việc thực thi lệnh hiện hành

• PC được cất vào stack

• (Trạng thái của ngắt hiện hành được lưu giữ lại)

• Các ngắt được chận lại ở mức ngắt

• PC được nạp địa chỉ vector ngắt của ISR

• Thực thi ISR

Trang 8

Ngắt Cờ gây ngắt 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)

Các cờ gây ngắt

Trang 9

Port nối tiếp RI hoặc TI 0023H

Bộ định thời 2 TF2 hoặc EXF2 002BH

Trang 10

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 resetLJMP MAIN

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

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

Trang 11

MAIN: ; chương trình chính bắt đầu

Trang 13

ORG 0030H ;bắt dầu chương trình chính

_

T0ISR: ; bắt đầu ISR cho Timer 0

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

• Chú ý: Vì các vector ngắt đặt ở đáy chương trình nên lệnh đầu tiên bao giờ cũng là lệnh nhảy dài qua khỏi vùng nhớ chứa các vector ngắt để tới chương trình chính

Trang 14

( 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

Bài toán 12.1 Tạo sóng vuông

Trang 15

ORG 0000HLJMP MAIN

ORG 000BH

RETI

ORG 0030HMAIN: MOV TMOD, #02H ; mode 2 của timer 0

MOV TH0, #-50 ; trì hoãn 50usSETB TR0 ; bật timer MOV IE, #82H ; cho phép ngắt do timer 0SJMP $ ; không làm gì

Trang 16

• 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

Chú ý

Trang 17

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 ?

Trang 18

ORG 0000HLJMP MAIN

ORG 000BH ; địa chỉ vector timer 0LJMP T0ISR

ORG 001BH ; địa chỉ vector timer 1LJMP T1ISR

ORG 0030HMAIN: MOV TMOD, #12H ; timer 1 : mode 1

; timer 0 : mode 2MOV TH0, #-71 ; trì hoãn 71us Æ 7KHzSETB TR0 ; bật timer 0

SETB TF1 ; buộc ngắt do timer 1MOV IE, #8AH ; cho phép ngắt do timers

Trang 19

CPL P1.7RETI

T1ISR:

CLR TR1MOV TH1, #HIGH (-1000)MOV TL1, #LOW (-1000)SETB TR1

CPL P1.6RETI

Trang 20

• ( 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 ?

Bài toán 12.3 Hai sóng vuông

Trang 21

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

Trang 22

Bài toán 12.4 Phát ASCII qua port nối tiếp

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 0LJMP MAINORG 0023HLJMP SPISRORG 0030H

Trang 23

MAIN: MOV TMOD, #20H ; timer 1 – mode 2

MOV TH1, #-26 ; 1200 baudSETB TR1

MOV SCON, #42H ; mode 1, set TI =1 để buộc

; có ngắt đầu tiên; gửi ký tự thứ nhấtMOV A, #20H

MOV IE, #90H ; cho phép ngắt do port ntSJMP $

SPISR: CJNE A, #7FH, SKIP; nếu kết thúc tập mã ASCII

MOV A, #20HSKIP: MOV SBUF, A ; gửi ký tự đến port nt

Trang 24

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

• 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

Trang 26

Bài toán 12.6 Điều khiển lò nung

Đ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

Trang 27

Bài toán 12.7 Báo động

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 giây (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

Trang 28

12-7 Vấn đề bảo vệ thanh ghi

ISR thường phải thiết kế sao cho có thể bảo vệ được những

thanh ghi sau:

Ngày đăng: 27/05/2014, 23:09

TỪ KHÓA LIÊN QUAN

w