Chuong 6 ngat của môn vi xử lý 8051 ĐHCN TPHCM

29 4 0
Chuong 6 ngat của môn vi xử lý 8051 ĐHCN TPHCM

Đ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

Chương 6 của môn vxl của trường ĐHCN TPHCM. Chúc bạn đọc đạt điểm 10đ thi ck và gk nha. Tổng có 6 slide tôi gửi lên. Cảm ơn bạn đã tải nếu có yêu cầu phí thì zalo 0857620001 để tôi gửi free nha. Have you a very good day.

Chương 6: Ngắt I Giới thiệu:  Đang thực chương trình có ngắt xảy dừng chương trình lại thực ngắt sau xong quay chương trình để làm  Ngắt kiện mà gây treo tạm thời chương trình để thực chương trình ngắt  Ngắt cho phép hệ thống đáp ứng bất đồng với kiện giải kiện chương trình khác  Chương trình giải ngắt gọi chương trình phục vụ ngắt ISR – Interrupt Service Routine 2: Tổ chức ngắt 89C51 có nguồn ngắt: ngắt ngồi, ngắt timer, ngắt port nối tiếp Các nguồn ngắt bị cấm sau Reset hệ thống cho phép phần mềm Khi xảy hay nhiều ngắt đồng thời xảy ngắt ngắt khác phục vụ, ta có sơ đồ xử lý ngắt sơ đồ chuỗi vòng sơ đồ hai mức ưu tiên Ngắt ngòai → ngắt timer → ngắt 1→ ngắt timer 1→ ngắt port nối tiếp → ngắt timer Cho phép không cho phép ngắt (IE) BIT Ký Hiệu Bit địa Mô tả IE7 IE6 IE5 IE4 IE3 IE2 IE1 IE0 EA ET2 ES ET1 EX1 ET0 EXO AFH AEH ADH ACH ABH AAH A9H A8H Cho phép cấm toàn ngắt Không xác định cho phép ngắt Timer 2(8052) Cho phép ngắt port nối tiếp Cho phép ngắt Timer Cho phép ngắt Cho phép ngắt Timer Cho phép ngắt Ưu tiên ngắt (IP) BIT Ký Hiệu Bit địa Mô tả IP7 IP6 IP5 IP4 IP3 IP2 IP1 IP0 BFH BEH BDH BCH BBH BAH B9H B8H Không định nghĩa Không định nghĩa Ưu tiên cho ngắt từ timer2 Ưu tiên cho ngắt Port nối tiếp Ưu tiên cho ngắt từ Timer1 Ưu tiên cho ngắt Ưu tiên cho ngắt từ Timer Ưu tiên cho ngắt PT2 PS PT1 PX1 PT0 PX0 Thanh ghi IP bị xóa sau reset hệ thống Ý tưởng ưu tiên cho phép IST bị ngắt ngắt khác có mức ưu tiên cao Nếu hai ngắt có độ ưu tiên xảy đồng thời hỏi vòng xác định ngắt phục vụ trước tiên Ngắt ngòai → ngắt timer → ngắt 1→ ngắt timer 1→ ngắt port nối tiếp → ngắt timer Véc tơ ngắt INTERRUPT FLAG VECTOR ADDRESS Reset hệ thống Ngắt Ngắt Timer Ngắt Ngắt Timer Ngắt Port nối tiếp Ngắt Timer RST IE0 TF0 IE1 TF1 RI OR TI TF2 OR EXF2 0000H 0003H 000BH 0013H 001BH 0023H 002BH Xử lý ngắt Các bước thực ngắt: Nó kết thúc lệnh thực lưu địa lệnh (PC) vào ngăn xếp Nó lưu tình trạng tất ngắt vào bên (nghĩa không lưu vào ngăn xếp) Nó nhảy đến vị trí cố định nhớ gọi bảng véc tơ ngắt nơi lưu giữ địa trình phục vụ ngắt Bộ vi điều khiển nhận địa ISR từ bảng véctơ ngắt nhảy tới Nó bắt đầu thực trình phục vụ ngắt lệnh cuối ISR RETI (trở từ ngắt) Khi thực lệnh RETI vi điều khiển quay trở nơi bị ngắt Trước hết nhận địa đếm chương trình PC từ ngăn xếp cách kéo hai byte đỉnh ngăn xếp vào PC Sau bắt đầu thực lệnh từ địa Thiết kế chương trình dùng ngắt Timer Đối với ISR có kích thước nhỏ ORG 0000H LJMP MAIN ORG 000BH ISR-T0 RETI ORG 001BH ISR-T1 RETI ORG 0030H MAIN END Ở mức thấp tối thiểu chu kỳ tác động mức logic (ITx = 0) Ở mức cao tối thiểu chu kỳ trước chuyển xuống mức thấp mức thấp phải tồn tối thiểu chu kỳ (ITx = 1) Quá trình điều khiển ngắt ngoài: Xác định yêu cầu ngắt cạnh âm hay mức logic Cho phép ngắt ngắt tương ứng (dùng ghi IE) Xác định mức ưu tiên (thanh ghi IP) Viết ISR cho ngắt Ví dụ: Viết chương trình cho có cạnh âm xuất P3.2 (ngắt ngồi 0) tạo xung KHz P1.0 Quá trình tạo xung dừng có cạnh âm xuất P3.3 (ngắt 1) Biết dao động chip sử dụng thạch anh có tần số 12MHz f = 1KHz → T = 1ms (1000 chu kỳ) → giá trị đếm 500 ( chọn chế độ 16 bit) Nạp giá trị ghi TMOD = 10H Thanh ghi IE = 85H ORG 0000h LJMP MAIN ORG 0003h; Địa ISR ngắt CPL P1.0 ; ĐẢO P1.0 RETI ORG 0013h; Địa ISR ngắt ngồi CLR P1.0 ; XĨA XUNG RETI ORG 0030H MAIN: MOV TMOD,#10h MOV TH1,#0FEh MOV TL1,#0CH SETB TR1 MOV IE,#85h ; Cho phép ngắt ngắt 0,1 Setb IT1 Setb IT0 SJMP $ END VD:Viết chương trình tạo xung vuông tần số f = 10KHz P1.0 dùng ngắt timer xung vuông tần số f = KHz P1.1 dừng ngắt timer biết thạch anh sử dụng 12MHz ORG 0000h LJMP main ORG 000Bh CPL P1.0 RETI ORG 001Bh CPL P1.1 RETI ORG 0030H MAIN: MOV TMOD,#12h MOV TH1,#0FEH MOV TL1,#0CH MOV TH0,#0CEH SETB TR0 SETB TR1 MOV IE,#8Ah SJMP $ END Ví dụ:  Viết ct nhận liệu liên tục port p0 sau gởi port p1 thời gian xuất p2.1 sóng vng có f = 1KHz biết fosc = 12Hz sử dụng ngắt time1 ORG 0000H LJMP MAIN ORG 000BH CPL P2.1 RETI ORG 0030H MAIN: MOV TMOD,#10H MOV TH1,#0FEH MOV TL1,#0CH MOV IE,#88H; Cho phép ngắt T1 SETB TR1 LAP:MOV A,P0 MOV P1,A SJMP LAP END Bài tâp Câu 1: Vẽ sơ đồ kết nối viết chương trình có mức logic cạnh âm xuất P3.3 (Ngắt 1) tạo xung vng 100Hz P1.0 qua trình phát xung dừng có mức logic xuất P3.2 (Ngắt 0) Biết dạo động chip sử dụng thạch anh sử dụng 24Mhz Câu 2: Vẽ sơ đồ kết nối viết chương trình nhấn P1.0 chớp tắt led P2 với thời gian delay1s (sử dụng Timer0) trình chớp tắt dừng lại nhấn P1.1 Biết dạo động chip sử dụng thạch anh sử dụng 12Mhz Câu 1: viế ct đọc liệu từ P1 xuất liên tục P2 Đồng đưa thời đưa liệu tới port nối tiếp để thực việc truyền liệu nối tiếp Biết tốc độ truyền 9600baud fosc =11,0592MHz ORG 0000H LJMP MAIN ORG 0023H LJMP SPISR ORG 0030H MAIN: MOV P1,#0FFH MOV SCON,#42H MOV TMOD,#20H MOV TH1,#(-3) SETB TR1 LAP: MOV A,P1 MOV P2,A SJMP LAP SPISR: CLR TI MOV SBUF,A RETI END Câu 2: Viết chương trình đọc liệu từ P0 xuất P1 liên tục Trong liệu nhận từ port nối tiếp gởi port P2 Biết tốc độ truyền 9600baud fosc = 11,0592MHz ORG 0000H LJMP MAIN ORG 0023H LJMP SPISR MAIN: MOV P0,#FFH MOV SCON,#52HH MOV TMOD#20H MOV TH1,#(-3) MOV IE,#90H SETB TR1 LAP: MOV A,P0 MOV P1,A SJMP LAP SPISR: CLR RI MOV A,SBUF MOV P2,A RETI END Câu 3: Viết ct sử dụng ngắt làm công việc sau: - Nhận liệu từ port nối tiếp sau gởi P0 - Nhận liệu từ P1 sau gởi port nối tiếp P2 - sử dụng Timer tạo sóng vng có f=5KHz P3.0 Biết tốc độ truyền 4800baud fosc =11,0592MHz ORG 0000H LJMP MAIN ORG 000BH CPL P3.0 RETI ORG 0023H LJMP SPISR ORG 0030H MAIN: MOV P1,#0FFH MOV SCON,#52H MOV TMOD,#22H MOV TH1,#(-6) MOV TH0,#(-92) MOV IE,#92H SETB TR1 SETB TR0 LAP: MOV A,P1 MOV P2,A SJMP LAP SPISR: JB TI,PHAT CLR RI MOV A,SBUF MOV P0,A RETI PHAT: CLR TI MOV SBUF,A RET END

Ngày đăng: 27/12/2023, 07:58