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

Một phần của tài liệu Giáo trình Thực hành vi xử lý - ĐH Sư Phạm Kỹ Thuật Nam Định (Trang 127 - 132)

Bài 5: Lập trình 8051 ghép nối với các bộ chỉ thị

2. Lập trình ghép nối Led 7 đoạn

2.5. Lập trình điều khiển ngắt

2.5.4. Lập trình với ngắt ngoài

a. Ngắt ngoài của vi điều khiển.

- Chỉ có hai ngắt phần cứng ngoài trong 8051 là INT0 và INT1. Chúng

được bố trí trên chân P3.2 và P3.3 và địa chỉ của chúng trong bảng véc tơ ngắt là 0003H và 0013H.

- Ngắt ngoài tác động vào vi điều khiển có thể theo hai cách.

+ Ngắt theo mức: ở chế độ ngắt theo mức thì các chân INT0 và INT1 bình thường ở mức cao và nếu một tín hiệu ở mức thấp được cấp tới chúng thì nó ghi nhãn ngắt. Sau đó bộ vi điều khiển dừng tất cả mọi công việc nó đang thực hiện và nhảy đến bảng véc tơ ngắt để phục vụ ngắt. Điều này được gọi là ngắt được kích hoạt theo mức hay ngắt theo mức và là chế độ ngắt mặc định khi cấp nguồn lại cho 8051. Tín hiệu mức thấp tại chân INT phải được lấy đi trước khi thực hiện lệnh cuối cùng của trình phục vụ ngắt RETI, nếu không một ngắt khác sẽ lại

được tạo ra.

1 chu trình máy

1.085s đến chân INT0

+ Các ngắt theo sườn: Như đã nói ở trước đây trong quá trình bật lại nguồn thì 8051 làm các chân INT0 và INT1 là các ngắt theo mức thấp. Để biến các chân này trở thành các ngắt theo sườn thì chúng ta phải viết chương trình cho các bit của thanh ghi TCON. Thanh thi TCON giữ các bit cờ IT0 và IT1 xác định chế

độ ngắt theo sườn hay ngắt theo mức của các ngắt phần cứng. Bằng việc chuyển các bit IT0 và IT1 lên cao qua các lệnh “SETB IT0” và “SETB IT1” thì các ngắt phần cứng ngoài INT0 và INT1 trở thành các ngắt theo sườn.

b. Lập trình với ngắt ngoài của vi điều khiển.

- Khi lập trình với ngắt ngoài của vi điều khiển ta phải lựa chọn ngắt ở cạnh xung hay mức xung.

- Với ngắt ở cạnh xung ( sườn xung ) thường ứng dụng để đếm xung ngoài, chọn là đầu vào tác động của phím bấm, công tắc hay cảm biến...

- Với ngắt ở mức xung thường ứng dụng để lập trình cho vi điều khiển tính thời gian, tính độ rộng hay tần số của xung...

- VÝ dô:

Lập trình cho vi điều khiển 8051 đếm xung ngoài từ 0- 25 sử dụng ngắt ngoài 0 (INT0). Hiển thị số đếm trên led 7 đoạn Anode chung. Biết Port0 kết nối với các

đoạn: a,b,c..h, Port2 làm nhiệm vụ quét led.

Giải:

- ở đây ta phải chọn ngắt ngoài 0 ngắt ở cạnh xung.

- Chân đưa xung đếm là chân P3.2 Giải:

- Vẽ sơ đồ sau trên Proteus - Lưu đồ giải thuật:

1.085s 1.085s

1MC

1MC

Bắt đầu

- Chuyển địa chỉ của bảng mã vào DPTR.

- Cho phép ngắt ngoài 0 (IE=10000001B)

- Chọn ngắt ngoài 0 ở cạnh xung ( IT0=1)

- Tách và giải mã biến đếm xung

Khai báo địa chỉ ngắt ngoài 0 (ORG 03h)

- Nạp giá trị cho biến đếm tràn =0

So sánh biến

đếm xung với 25

< 25 Tăng biến đếm xung

=25 Xoá biến đếm xung

KÕt thóc ngắt ( Reti ) Hiển thị mã 7 đoạn vừa tách

và giải mã được.

Bắt đầu

Lưu đồ giải thuật chương trình

chính Lưu đồ giải thuật chương trình phục vụ ngắt

- Chương trình:

;chuong trinh viet cho VDK 8051 dem xung ngoai su dung ngat ngoai 0 ( INT0)

;chan cap xung dem p3.2

;hien thi thoi gian tren led 7 doan

;--- org 00h

jmp main ;nhay toi chuong trinh chinh

;---

org 03h ;khai bao dia chi cua ngat ngoai 0 ngat_ngoai0:

inc r0 ;tang bien dem xung

cjne r0,#26,thoat_ngat ;so sanh bien dm xung voi 26 neu chua bang thi thoat ngat

mov r0,#0 ;dem lai tu 0 thoat_ngat:

reti

;--- main:

mov ie,#10000001b ;cho phep ngat ngoai 0

mov dptr,#bang_ma ;tro DPTR toi dia chi dau tien cua bang ma setb it0 ;chon ngat ngoai 0 ngat o canh xung

mov r0,#0 ;bien dem xung lap:

call tach_giai_ma call hien_thi jmp lap

;---

;chuong trinh con tach va giai ma bien dem xung tach_giai_ma:

mov a,r0 ;tach bien dem

mov b,#10 div ab

movc a,@a+dptr ;lay ma 7 doan hang chuc mov 30h,a ;cat hang chuc

mov a,b

movc a,@a+dptr ;lay ma 7 doan don vi mov 31h,a ;cat hang don vi ret

;---

;chuong trinh con hien thi hien_thi:

mov p0,31h

mov p2,#11111110b ;hien thi don vi call delay

mov p2,#0ffh ;chong lem

mov p0,30h

mov p2,#11111101b ;hien thi hang chuc call delay

mov p2,#0ffh ;chong lem ret

;---

;chuong trinh con tao tre de mat quan sat duoc delay:

mov r7,#50 djnz r7,$

ret

;---

;dinh nghia bang ma 7 doan bang_ma:

db 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h end

Bài tập:

Bài tập 1: Viết chương trình cho vi điều khiển 8051 đếm xung ngoài từ 0-55 sử dụng ngắt ngoài 1 (INT1). Hiển thị thời gian trên led 7 đoạn anốt chung.

Port 0 nối với các đoạn a,b,...g P2.0, P2.1 chọn led

Bài tập 2: Viết chương trình cho vi điều khiển 8051 đếm xung ngoài từ 25-0 sử dụng ngắt ngoài 0 (INT0). Hiển thị thời gian trên led 7 đoạn anốt chung.

Port 0 nối với các đoạn a,b,...g P2.0, P2.1 chọn led

Một phần của tài liệu Giáo trình Thực hành vi xử lý - ĐH Sư Phạm Kỹ Thuật Nam Định (Trang 127 - 132)

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

(207 trang)