Giáo trình Vi điều khiển (Nghề Điện tử dân dụng Trình độ Cao đẳng)

93 6 0
Giáo trình Vi điều khiển (Nghề Điện tử dân dụng  Trình độ Cao đẳng)

Đ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

TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU Vi điều khiển mô đun sở của nghề Điện tử dân dụng biên soạn dựa theo chương trình khung đã xây dựng ban hành năm 2021 của trường Cao đẳng nghề Cần Thơ dành cho nghề Điện tử dân dụng hệ Cao đẳng Giáo trình biên soạn làm tài liệu học tập, giảng dạy nên giáo trình đã xây dựng mức độ đơn giản dễ hiểu, học có thí dụ tập tương ứng để áp dụng làm sáng tỏ phần lý thuyết Khi biên soạn, nhóm biên soạn đã dựa kinh nghiệm thực tế giảng dạy, tham khảo đồng nghiệp, tham khảo giáo trình có cập nhật kiến thức có liên quan để phù hợp với nội dung chương trình đào tạo phù hợp với mục tiêu đào tạo, nội dung biên soạn gắn với nhu cầu thực tế Nội dung giáo trình biên soạn với lượng thời gian đào tạo 60 giờ gồm có: Bài MĐ 18-01: Họ vi xử lý INTEL 80x86 Bài MĐ 18-02: Cấu trúc họ vi điều khiển 8051 Bài MĐ 18-03: Tập lệnh 8051 Bài MĐ 18-04: Bộ định thời Bài MĐ 18-05: Cổng nối tiếp Bài MĐ 18-06: Ngắt Giáo trình tài liệu giảng dạy tham khảo tốt cho nghề điện tử công nghiệp, điện tử, điện công nghiệp điện dân dụng Mặc dù đã cố gắng tổ chức biên soạn để đáp ứng mục tiêu đào tạo khơng tránh thiếu sót Rất mong nhận đóng góp ý kiến của thầy, cơ, bạn đọc để nhóm biên soạn điều chỉnh hoàn thiện Cần Thơ, ngày tháng năm 2021 Tham gia biên soạn Chủ biên: Đỗ Hữu Hậu MỤC LỤC Trang TUYÊN BỐ BẢN QUYỀN LỜI GIỚI THIỆU MỤC LỤC BÀI 1: HỌ VI XỬ LÝ INTEL 80x86 Cấu trúc bên hoạt động vi xử lý 8086 .6 Các chế độ định địa vi xư lý 8086 10 Tập lệnh vi xử lý 8086 13 Các chế độ làm việc vi xử lý 17 Lập trình hợp ngữ cho vi xử lý 8086/8088 .18 Thực hành 20 BÀI 2: CẤU TRÚC HỌ VI ĐIỀU KHIỂN 8051 .23 Tổng quan 23 Sơ đồ chân vi điều khiển 8051 24 Cấu trúc Port I/O .27 Tổ chức nhớ 28 Thực hành 33 BÀI 3: TẬP LỆNH 8051 .34 Các cách định địa 34 Các nhóm lệnh 37 Thực hành 53 BÀI 4: BỘ ĐỊNH THỜI 55 Thanh ghi SFR timer 56 Các chế độ làm việc 57 Thực hành 64 BÀI 05: CỔNG NỐI TIẾP (SERIAL PORT) 66 Thanh ghi điều khiển 66 Chế độ làm việc 69 Khởi tạo truy xuất ghi PORT nối tiếp 73 Tốc độ baud 75 Thực hành 79 BÀI 06: NGẮT 80 Tổ chức ngắt 8051 80 Xử lý ngắt 85 Thiết kế chương trình dùng ngắt 87 Thực hành 91 TÀI LIỆU THAM KHẢO .93 GIÁO TRÌNH MÔ ĐUN Tên mô đun: VI ĐIỀU KHIỂN Mã mô đun: MĐ 18 Vị trí, tính chất, ý nghĩa vai trị mơ đun: - Vị trí của mơ đun: Mơ đun bố trí dạy sau học xong mơ đun linh kiện điện tử, đo lường điện – điện tử, kỹ thuật số học trước mô đun Máy thu hình cơng nghệ cao, PLC - Tính chất của mô đun: Là mô đun chuyên môn nghề - Ý nghĩa của mô đun: giúp người học nắm bắt phương pháp lập trình điều khiển ứng dụng họ vi xử lý vi điều khiển - Vai trị của mơ đun: Lập trình điều khiển ứng dụng sử dụng họ 8051 tảng để học mô đun vi điều khiển nâng cao Mục tiêu mô đun: - Về kiến thức: + Trình bày hệ đếm mã hóa máy tính, tương tác máy tính vi xử lý, vi xử lý intel ứng dụng + Trình bày cấu trúc của họ vi xử lý vi điều khiển + Giải thích nguyên lý làm việc hệ điều khiển ứng dụng vi xử lý vi điều khiển - Về kỹ năng: + Lập trình hợp ngữ số tập cách thành thạo + Xử lý số dạng kết nối máy tính với vi xử lý thiết bị ngoại vi + Phát triển hệ điều khiển sở khối trung tâm vi xử lý + Vận hành thiết bị dây chuyền sản xuất dùng vi điều khiển + Xác định nguyên nhân gây hư hỏng xảy thực tế + Lập trình cho hệ vi điều khiển 89C51với Assembly + Nạp chương trình vào vi điều khiển - Năng lực tự chủ trách nhiệm: + Có sáng kiến, tìm tịi, khám phá q trình học tập cơng việc + Có khả tự định hướng, chọn lựa phương pháp tiếp cận thích nghi với học + Có lực đánh giá kết học tập nghiên cứu của + Tự học tập, tích lũy kiến thức, kinh nghiệm để nâng cao trình độ chuyên môn Nội dung mô đun: Thời gian (giờ) Thực Số hành, thí Tên mơ đun Tổng Lý Kiểm TT nghiệm, số thuyết tra thảo luận, tập Bài 1: Họ vi xử lý INTEL 80x86 16 8 Cấu trúc bên hoạt động của 1 vi xử lý 8086 Các chế độ định địa của vi xư 1 lý 8086 Tập lệnh của vi xử lý 8086 1 Các chế độ làm việc của vi xử lý 4 4 Lập trình hợp ngữ cho vi xử lý 8086/8088 Thực hành Bài 2: Cấu trúc họ vi điều khiển 8051 Tổng quan Sơ đồ chân Cấu trúc Port I/O Tổ chức nhớ Thực hành Kiểm tra Bài 3: Tập lệnh 8051 Các cách định địa Các nhóm lệnh Thực hành Bài 4: Bộ định thời 1.Thanh ghi SFR của timer Các chế độ làm việc Thực hành Kiểm tra Bài 05: Cổng nối tiếp Thanh ghi điều khiển Chế độ làm việc Khởi tạo truy suất ghi PORT nối tiếp Tốc độ BAUD Thực hành Bài 06: Ngắt Tổ chức ngắt của 8051 Xử lý ngắt Thiết kế chương trình dùng ngắ Thực hành Kiểm tra Cộng 0.5 0.5 0.5 0.5 1 16 8 2 1 0.5 0.5 0.5 0.5 1 1 2 8 3 1 1 1 60 1 4 3 30 27 BÀI 1: HỌ VI XỬ LÝ INTEL 80x86 Mã bài: MĐ 18-01 Giới thiệu: Bộ vi xử lý 80x86 của Intel Đây vi xử lý tiếng thời của hãng Intel sử dụng nhiều lĩnh vực khác Các chương trình viết cho 80x86 chạy trên hệ tiên tiến sau Các họ vi xử lý của hãng có khác xét cho có nhiều điểm chủ yếu giống nhau, đã nắm vững vấn đề kỹ thuật của 8086 ta có sở để nắm bắt vi xử lý khác họ của Intel họ khác Mục tiêu: - Trình bày cấu trúc hệ vi xử lý 80x86 - Trình bày tập lệnh của hệ vi xử lý 80x86 - Viết số chương trình đơn giản dạng hợp ngữ cho hệ vi xử lý 80x86 - Rèn luyện tính tư duy, tác phong cơng nghiệp Nội dung chính: Cấu trúc bên hoạt động của vi xử lý 8086 1.1 Các khối chức CPU Chức bên vi xử lý mặt logic chia làm hai khối xử lý Khối thứ khối giao diện bus (BIU) khối thứ hai khối thực lệnh (EU) BIU: Cung cấp chức liên quan đến việc nhận lệnh xếp hàng lệnh, lưu trữ toán hạng định vị địa Khối cung cấp chức điều khiển BUS sở Trong hầu hết trường hợp thời gian thực lệnh lấy lệnh thực lệnh trùng Chính điều làm tăng khả hoạt động của vi xử lý thông qua việc cải thiện Bus Trong khối thực lệnh bận rộn với lệnh thời BIU đã bắt đầu việc lấy lệnh từ nhớ phần cuối của chúng đặt RAM nội tốc độ cao gọi hàng đợi Độ dài của hàng đợi với vi xử lý 8086 6byte Kỹ thuật hàng đợi lệnh cho phép BIU sử dụng nhớ hiệu BIU lấy mã lệnh nhớ đưa vào hàng đợi Theo cách BIU cung cấp lệnh cách liên tục mà không độc chiếm BIU Điều làm giảm đáng kể thời gian chết Bus Hàng đợi lệnh làm việc đệm lệnh FIFO (First In First Out, vào trước trước) Nếu có vào/ra liên tục của dòng mã lệnh đệm có nghĩa có phối hợp hoạt động hiệu qủa hai khối EU BIU theo chế xử lý xen kẽ liên tục dòng mã lệnh để làm tăng tốc độ xử lý tổng thể Kỹ thuật xen kẽ liên tục dòng mã lệnh khơng cịn tác dụng tăng tốc độ xử lý của CPU đệm lệnh có chứa mã lệnh của lệnh CALL (gọi chương trình con) JMP (nhảy), lúc gặp lệnh nội dung cũ của đệm lệnh bị xố thay vào nội dung nạp lệnh lệnh nhảy gọi định Việc tiêu tốn nhiều thời gian so với trường hợp đệm có mã lệnh của lệnh tuần tự EU: Nhận lệnh lấy trước từ hàng đợi lệnh cung cấp toán hạng, địa cho BIU để khối đọc lệnh liệu Trong thân EU giải mã lệnh, thực hiện, lại chuyển kết tới BIU để lưu trữ Thao tác thực trước tiên của EU việc giải mã lệnh khoảng thời gian lãng phí CPU mà dường chẳng có hoạt động mặt điện diễn Bus Nhưng thực tế, khoảng thời gian khoảng thời gian BIU khai thác để lấy trước câu lệnh đã mô tả Các lệnh chứa hàng đợi lệnh lệnh cất ô nhớ liên tiếp lệnh thực Nếu EU thực lệnh chuyển điều khiển đến nơi khác BIU xố hàng đợi, lấy lệnh từ địa mới, chuyển cho EU lại bắt đầu lấy tiếp lệnh để đưa vào hàng đợi Khối EU tạo thành từ ghi chung của vi xử lý 8086/8088 Như đã biết, tất ghi đường truyền của liệu nội có độ rộng 16 bit khơng có giao tiếp trực tiếp EU mơi trường bên ngồi mà nhận lệnh từ “hàng đợi” BIU cung cấp (EU không nối với Bus hệ thống mà lấy lệnh từ hàng đợi) Khi lệnh yêu cầu truy nhập tới nhớ I/O, khối EU lệnh cho khối BIU truyền/nhận liệu Tất liệu EU điều khiển địa 16 bit Nhưng thơng qua việc di chuyển vị trí nhớ BIU thực (định vị lại địa chỉ) khối EU truy cập tới tồn bộ nhớ MB ALU: Đây tập của EU, thực tế giống phần có cấu trúc độc lập, chịu trách nhiệm thực thao tác số học thao tác logic Các tốn hạng liệu tức thì, liệu từ ghi liệu lưu trữ nhớ Trong kết lại định vị ghi nhớ cờ trạng thái cập nhật dựa kết của thao tác 1.2 Các ghi CPU Các ghi chia làm nhóm lần lượt có tên là: Các ghi đoạn: CS, DS, SS, ES Các ghi đa năng: AX, BX, CX, DX Các ghi trỏ số: IP, BP, SP, SI, DI Thanh ghi cờ FR (Flag) Thanh ghi đoạn Khối BIU đưa BUS địa 20 bit địa Như 8086 có khả phân biệt 220 = 1048576 =1M ô nhớ hay 1MB Trong không gian 1MB nhớ cần chia thành vùng khác dành riêng để: Chứa mã chương trình Chứa liệu kết trung gian của chương trình Tạo vùng nhớ đặc biệt gọi ngăn xếp (stack) dùng vào việc quản lý thông số của vi xử lý gọi chương trình trở từ chương trình Trong thực tế vi xử lý 8086/8088 có ghi 16 bit liên quan đến địa đầu của vùng (đoạn) kể chúng gọi ghi đoạn (Segment register) Đó ghi: CS (Code Segment): Thang ghi đoạn mã, chứa địa bắt đầu của đoạn chương trình (đoạn mã) mang lệnh thực thông thường vùng nhớ chứa liệu dạng hàng thay đổi vùng ROM/EPROM DS (Data Segment): Thanh ghi đoạn liệu, chứa địa bắt đầu của đoạn liệu, bao gồm tham số, biến, mảng số liệu… SS (Stack Segment): Thanh ghi đoạn ngăn xếp, chứa địa bắt đầu của mảng stack Đây mảng của RAM, nơi mà liệu tồn ghi lưu trữ suốt trình ngắt ES (Extra Segment): Thanh ghi đoạn liệu phụ, chứa địa bắt đầu của vùng nhớ bổ sung Dung lượng lớn của đoạn nhớ 64 Kbyte Việc thay đổi giá trị ghi đoạn tương ứng dịch chuyển linh hoạt phạm vi khơng gian Mbyte Vì đoạn nằm cách thơng tin cần lưu trữ chúng đòi hỏi dung lượng đủ 64 Kbyte nằm trùm lên có đoạn khơng cần dùng hết dung lượng 64 Kbyte Nội dung của ghi đoạn cho phép ta xác định địa ô nhớ nằm đầu đoạn Địa gọi địa sở, địa của ô nhớ khác nằm đoạn tính cách cộng thêm vào địa sở giá trị gọi địa lệch hay độ lệch (offset) Độ lệch xác định ghi 16 bit khác đóng vai trị ghi lệch (offset register) Mọi trao đổi thông tin hệ thống vi xử lý dùng địa vật lý, địa tạo ghi đoạn ghi lệch gọi địa logic ký hiệu sau: Địa logic = Thanh ghi đoạn: Thanh ghi lệch Địa logic tồn dạng giá trị ghi cụ thể bên CPU cần thiết truy nhập nhớ phải đổi địa vật lý để đưa lên bus địa Việc chuyển đổi tạo địa thực Địa vật lý của nhớ tính theo cơng thức sau: 20 bit địa vật lý = Thanh ghi đoạn x 16 + Thanh ghi lệch Ví dụ: Cặp CS:IP địa của lệnh thực đoạn mã Nếu thời điểm ta có CS = F000H IP = FFF0H CS:IP ~ F000Hx16 + FFF0H = F0000H + FFF0H = FFFF0H Địa FFFF0H địa khởi động của 8086/8088 Dấu ~ để tương ứng Từ nói đến địa của nhớ ta sử dụng địa logic lẫn địa vật lý bao giờ có tồn tương ứng hai loại địa Ta cần ý giá trị địa vật lý có nhiều cách tạo từ nhiều giá trị ghi đoạn ghi lệch Ví dụ: địa vật lý của 32412H tạo từ giá trị Thanh ghi đoạn Thanh ghi lệch 3000H 2412H 3200H 0412H 3240H 0012H Các ghi đa Trong khối EU có ghi đa AX, BX, CX, DX Điều đặc biệt cần chứa liệu bit ghi tách làm ghi bit cao thấp làm việc độc lập nhau, ghi AH AL, BH BL, CH CL, DH DL Mỗi ghi dùng cách vạn để chứa loại liệu khác nhau, có cơng việc đặc biệt định thao tác với vài ghi ghi thường gán cho tên đặc biệt có ý nghĩa - AX (Accumulator, Acc): Thanh chứa, kết của thao tác thường chứa đây, kết bit ghi AL gọi Acc - BX (Base): Thanh ghi sở, thường chứa địa sở của bảng nhớ - CX (Count): Thanh ghi đếm, thường dùng để chứa số lần lặp của lệnh lặp LOOP, CL thường dùng chứa só lần dịch quay lệnh dịch quay - DX (Data): Thanh ghi liệu DX AX tham gia vào thao tác của phép nhân chia 16 bit, DX dùng để chứa địa của cổng lệnh vào/ra liệu trực tiếp (IN/OUT) Các ghi trỏ số 8086 có ghi trỏ ghi số 16 bit, ghi (trừ IP) dùng ghi đa năng, ứng dụng của ghi chúng ngầm định ghi lệch cho đoạn tương ứng - IP (Instruction Pointer): Con trỏ lệnh, IP trỏ vào lệnh thực nằm đoạn mã CS Địa đầy đủ của lệnh ứng với CS:IP xác định theo cách đã nói - BP (Base Pointer): Con trỏ sở, BP trỏ vào liệu nằm đoạn ngăn xếp SS Địa đầy đủ của phần tử đoạn ngăn xếp ứng với SS:BP xác định theo cách đã nói - SP (Stack Pointer): Con trỏ ngăn xếp, trỏ vào đỉnh thời của ngăn xếp nằm đoạn ngăn xếp SS Địa đầy đủ của đỉnh ngăn xếp ứng với SS:SP xác định theo cách đã nói - SI (Source Index): Chỉ số nguồn, SI vào liệu đoạn liệu DS mà địa đầy đủ tương ứng với DS:SI xác định theo cách đã nói - DI (Destination Index): Chỉ số đích, DI vào liệu đoạn liệu DS mà địa đầy đủ tương ứng với DS:DI xác định theo cách đã nói Thanh ghi cờ FR (Flag Register) Đây ghi đặc biệt CPU bit để phản ánh trạng thái định kết qủa phép toán ALU thực hoạt động EU Dựa vào cờ mà người lập trình đưa lệnh thích hợp cho vi xử lý (các lệnh nhảy có điều kiện) Thanh ghi cờ có 16 bit sử dụng bit làm bit cờ X X X X O D I T S Z X A X P X C x: Không định nghĩa Các cờ cụ thể: Các cờ trạng thái C CF (Carry Flag): Cờ nhớ CF = có nhớ mượn từ MSB F PF (Parity Flag): Cờ chẵn lẻ, phản ánh tính chẵn lẻ của tổng số bit có kết CF = tổng số bit kết chẵn A AF (Auxiliary carry Flag): cờ nhớ phụ, có ý nghĩa ta làm việc với số BCD, AF = có nhớ mượn từ số BCD thấp (4 bit thấp) sang số BCD cao (4bit cao) Z ZF (Zero Flag): Cờ rỗng, ZF = kết qủa S SF (Sign Flag): Cờ dấu, SF = kết âm O OF (Overflow Flag): Cờ tràn, OF = kết số bù hai vượt giá trị biểu diễn của Các cờ điều khiển (có thể lập xoá lệnh riêng) T TF (Trap Flag): Cờ bẫy, TF = CPU làm việc chế độ chạy lệnh (chế độ dùng cần tìm lỗi chương trình) I IF (Interrupt enable Flag): Cờ cho phép ngắt, IF = CPU cho phép yêu cầu ngắt tác động D DF (Direction Flag): Cờ hướng, DF = CPU làm việc với chuỗi ký tự theo ký tự từ phải sang trái (vì D cờ lùi) 1.3.Tổ chức nhớ của vi xử lý 8086 Vi xử lý 8086 có 20 đường địa địa hố 220 ô nhớ liệu bit kéo dài từ địa 00000h đến FFFFFh Bộ nhớ logic chia thành đoạn lệnh (CS), đoạn liệu (DS), đoạn ngăn xếp (SS), đoạn thêm (ES) với 64 Kbyte cho đoạn Tổ chữ nhớ của 8086 biểu diễn hình 2.1.4 Bộ nhớ của 8086 đánh địa theo đơn vị byte (8 bit), có nhiều thao tác sử dụng số 16 bit Trong nhớ số 16 bit lưu thành hai byte kề Byte thấp lưu địa thấp Với kiểu ngược so với kiểu lưu trữ thông thường Chẳng hạn với số 3D7Fh lưu nhớ thành 7F3Dh Đây ý quan trọng làm việc với số 16 bit nhớ Một số vị trí nhớ dùng cho thao tác đặc biệt Các vị trí có địa từ FFFF0h – FFFFFh dự tính cho thao tác nhảy đến chương trình khởi tạo hệ thống Khi RESET CPU thực lệnh đầu tiên địa FFFF0h mà thường chứa lệnh nhảy Các vị trí từ 00000h – 003FFh dự tính cho thao tác xử lý ngắt Trong phần chứa địa chương trình xử lý ngắt nên gọi bảng vector ngắt Các chế độ định địa vi xư lý 8086 Trước vào chế độ địa của Vi xử lý 8086 ta nói qua cách mã hoá lệnh vi xử lý 8082 Lệnh của vi xử lý ghi ký tự dạng gợi nhớ để người sử dụng dễ nhận biết Đối với thân vi xử lý lệnh cho mã hố dạng số (cịn gọi mã máy) dạng biểu diễn thơng tin mà máy hiểu Vì lệnh cho vi xử lý cho dạng mã nên sau nhận lệnh, vi xử lý phải thực giải mã lệnh sau thực lệnh Một lệnh có độ dài vài byte tuỳ theo vi xử lý Đối với vi xử lý 8086 lệnh có độ dài từ đến byte Ta dùng lệnh MOV để giải thích cách ghi lệnh nói chung của 8082 Byte Byte Byte 0 Opcode Byte DispL D W MOD REG DispH R/M Hình 1.1: Biểu diễn dạng thức byte dùng để mã hoá lệnh MOV Từ ta thấy để mã hoá lệnh MOV cần byte Trong bit đầu dùng để chứa mã lệnh, bit 10005 ghi đoạn điều lại khác Bit W dùng để byte (W=0) từ (W=1) chuyền Trong thao tác chuyển liệu, tốn hạng ln bắt buộc phải ghi Bộ vi xử lý sử dụng bit (REG) để mã hoá ghi CPU sau: Bảng 1.1 Giá trị mã hóa ghi Thanh ghi W=1 W=0 AX AL BX BL CX CL DX DL Mã Thanh ghi đoạn Mã 000 011 001 010 CS DS ES SS 01 11 00 10 10 Giá trị nạp tạo tốc độ nội chứa ghi BRL xác định theo cơng thức sau: Trong SMOD1 nằm ghi PCON SPD nằm ghi BDRCON Thực hành 5.1 Các bước lập trình để truyền dữ liệu nối tiếp Bước Nạp ghi TMOD giá trị 20H: báo sử dụng Timer1 chế độ để thiết lập chế độ baud Bước Nạp ghi TH1 giá trị phù hợp để thiết lập chế độ baud truyền liệu nối tiếp Bước Nạp ghi SCON giá trị 50H báo chế độ nối tiếp để đóng khung bit liệu, bit Start bit Stop Bước Bật TR1=1 để khởi động Timer1 Bước Xoá bit cờ truyền liệu: TI=0 Bước Byte ký tự cần phải truyền ghi vào SBUF Bước Bit cờ truyền TI kiểm tra vòng lặp để đợi đến lúc liệu truyền xong (cờ TI=1) Bước Để truyền ký tự quay trở bước 5.2 Sinh viên thực hành Viết chương trình để truyền liệu nối tiếp ký tự “D” với tốc độ 4800 baud liên tục lên máy tính Những trọng tâm cần ý - Chế độ làm việc - Các ghi điều khiển Bài tập mở rộng nâng cao Bài Viết chương trình để 8051 truyền dịng chữ “DienTuMayTinh.Com” liên tục với tốc độ 9600 baud (8 bit liệu, bit Stop) lên máy tính Bài 2: Viết chương trình điều khiển LED chớp tắt Bài 3: Viết chương trình điều khiển động bước? Yêu cầu đánh giá kết học tập: Nội dung: + Về kiến thức: Trình bày cấu tạo chế độ làm việc của cổng truyền thông nối nội dung đã học + Về kỹ năng: - Thực cổng truyền thông nối tiếp yêu cầu kỹ thuật - Thực thu phát liệu nối tiếp 8051 đạt yêu cầu kỹ thuật - Thực viết chương trình theo yêu cầu cho trứoc + Năng lực tự chủ trách nhiệm: Đánh giá phong cách, thái độ học tập Phương pháp: + Về kiến thức: Được đánh giá hình thức kiểm tra viết, trắc nghiệm + Về kỹ năng: Đánh giá kỹ thực hành sinh viên, nhóm học viên thực cơng việc theo u cầu của giáo viên Tiêu chí đánh giá theo nội dung: - Tính thẩm mỹ của mạch điện - Độ an toàn mạch điện - Thời gian thực cơng việc - Độ xác theo u cầu kỹ thuật + Năng lực tự chủ trách nhiệm: Tỉ mỉ, cẩn thận, xác 79 BÀI 06: NGẮT Mã bài: MĐ 18-06 Giới thiệu: Lập trình cho vi điều khiển cách gia lệnh cho vi điều khiển thực danh sách lệnh xếp theo trình tự để hoàn thành nhiệm vụ đề Việc dừng chương trình thực thi để phục vụ cho chương trình khác xảy kiện Chương trình xử lý kiện ngắt gọi chương trình phục vụ ngắt (ISR- Interrupt Service Routine) Mục tiêu: - Trình bày tác dụng thực tế của hệ thống điều khiển tín hiệu ngắt theo nội dung đã học - Thực tổ chức ngắt chế thực chương trình phục vụ ngắt của 8051 yêu cầu kỹ thuật - Thực tổ chức ngắt đạt yêu cầu kỹ thuật Nội dung chính: Tổ chức ngắt 8051 Ngắt (interrupt) sảy của điều kiện làm cho trương trình hành bị tạm ngưng điều kiện phục vụ chương trình khác.Các ngắt đóng vai trò quan trọng việc thiết kế thựchiện ứng dụng củ Bít liệu thứ 9a vi điều khiển Các ngắt cho phép hệ thống đáp ứng kiện theo cách không đồng xử lý kiện chương trình khác thực thi Một hệ thống điều khiển ngắt cho ta ảo tưởng làm nhiều công việc đồng thời Có nhiều tác động làm ngừng chương trình gọi nguồn ngắt, vi điều khiển timer/counter đếm tràn tạo ngắt Ngắt đóng vai trị quan trọng lập trình điều khiển CPU thực nhiều lệ nhở thời điểm CPU tạm ngưng việc thực thi chương trình để thực thi chương trình khác sau quay trở thực thi tiếp chương trình bị tạm ngưng.Điều giống CPU rời khỏi chương trình gọi để thực chương trình bị gọi để sau quay chương trình gọi Chương trình xử lý ngắt gọi chương trình phục vụ ngắt ISR (interruptserviceroutine) ISR thực thi nhằm đáp ứng ngắt trường hợp tổng quát thực việc xuất nhập với thiết bị Khi ngắt xuất hiện,việc thực thi chương trình tạm thời bị dừng CPU thực rẽ nhánh đến trình phục vụ ngắt ISR CPU thực thi ISR để thực công việc kết thúc việc thực thi gặp lệnh“quay từ trình phục vụ ngắt”RETI Ta nói chương trình thực thi ởmức cịn ISR thực thi mức ngắt Khi sử dụng ngắt cho phép vi xử lý hay vi điều khiển đáp ứng nhiều kiện quan trọng giải kiện chương trình khác thực thi Trong vi điều khiển thực chương trình có liệu từ hệ thống khác gởi đến, vi điều khiển ngừng chương trình để thực chương trình phục vụ ngắt nhận liệu xong trở lại tiếp tục thực chương trình chính, có tín hiệu báo ngắt từ bên ngồi vi điều khiển ngừng thực chương trình để thực chương trình ngắt tiếp tục thực chương trình Ta sử dụng ngắt để yêu cầu vi điều khiển thực nhiều chương trình lúc có nghĩa chương trình thực xoay vịng 80 Ta minh họa q trình thực chương trình trường hợp có ngắt khơng có ngắt hình 6.1 Hình 6.1 Vi điều khiển thực chương trình trường hợp khơng có ngắt Trong đó: Ký hiệu * cho biết vi điều khiển ngừng chương trình để thực thi chương trình phục vụ ngắt ISR Còn ký hiệu ** cho biết vi điều khiển quay trở lại thực tiếp chương trình sau thực xong chương trình phục vụ ngắt ISR Hình 6.2: Vi điều khiển 89C52 có nguồn ngắt Có nguyên nhân tạo ngắt 8051: hai ngắt bên ngoài, hai ngắt định thời ngắt port nối tiếp 8052 có thêm nguyên nhân ngắt thứ 6: định thời thêm vào,bộ định thời thứ ba Khi ta thiết lập trạng thái ban đầu cho hệ thống, tất ngắt điều bị vô hiệu hóa sau chúng cho phép riêng rẻ phần mềm 1.1 Cho phép không cho phép ngắt Trước tiên phải hiểu cho phép không cho phép ngắt nào? Khi ta cho phép ngắt ngắt tác động vi điều khiển ngừng chương trình 81 để thực chương trình phục vụ ngắt, khơng cho phép dù có tác động đến ngắt vi điều khiển tiếp tục thực chương trình chính, khơng thực chương trình phục vụ ngắt Trong vi điều khiển có ghi IE (Interrupt Enable) địa 0A8H có chức cho phép/cấm ngắt Ta sử dụng ghi phép hay không cho phép nguồn ngắt cho toàn nguồn ngắt Tổ chức của ghi sau: EA ET2 ES ET1 EX1 ET0 EX0 Mỗi nguyên nhân ngắt cho phép không cho phép riêng rẽ thông qua ghi chức đặc biệt định địa bit, ghi cho phép ngắt IE (interruptenable) có địa byte 0A8H Mỗi mộtbit của ghi cho phép không cho phép nguyên nhân ngắt riêng rẽ, ghi IE đồng thời có bit tồn cục(global) cho phép không cho phép tất ngắt Hoạt động của bit ghi cho phép ngắt IE tóm tắt bảng sau: Bảng 6.1: Thanh ghi cho phép ngắt IE Bit Ký hiệu Địa bit Mô tả(0:không cho phép,1:cho phép) IE.7 EA AFH Cho phép/không cho phép ngắt tồn cục IE.6 - AEH Không sử dụng IE.5 ET2 ADH Cho phép ngắt định thời IE.4 ES ACH Cho phép ngắt port nối tiếp IE.3 ET1 ABH Cho phép ngắt định thời IE.2 EX1 AAH Cho phép ngắt từ bên ngoài(ngắt ngoài1) IE.1 ET0 A9H Cho phép ngắt định thời IE.0 EX0 A8H Cho phép ngắt từ bên ngồi(ngắt ngồi 0) Trong ghi IE có bit IE.6 chưa dùng đến, bit IE.7 bit cho phép/cấm ngắt toàn nguồn ngắt Khi bit IE.7= cấm hết tất nguồn ngắt, bit IE.7=1 cho phép tất nguồn ngắt phụ thuộc vào bit điều khiển ngắt của nguồn ngắt Ví dụ: Ngắt định thời cho phép cách dùng hai lệnh: SETB ET1 :Cho phép ngắt định thời SETB EA :set bit EA 1để cho phép ngắt tồn cục Hoặc MOV IE, #10001000B Đối với yêu cầu của ví dụ cách thực xong ta hãy so sánh cách thực ý vài điều lập trình:Các lệnh của cách khơng ảnh hưởng bit cịn lại ghi IE Cách thứ hai xóa bit lại ghi IE Ở đầu chương trình ta nên khởi gán IE với lệnh MOV BYTE, điều khiển cho phép hay cấm chương trình ta dùng lệnh SET BIT CLR BIT để tránh làm ảnh hưởng đến bit khác ghi IE 1.2 Ưu tiên ngắt Khi có nhiều nguồn ngắt tác động lúc ngắt quan trọng cần thực trước ngắt khơng quan trọng thực sau giống công việc mà ta giải ngày Ngắt thiết kế có xếp thứ tự ưu tiên từ thấp đến cao để người lập trình xếp nguồn ngắt theo yêu cầu công việc mà xử 82 lý Mỗi nguyên nhân ngắt đượclập trình riêng rẻ để có hai mức ưu tiên thông qua chức ghi đặc biệt định địa bit, ghi ưu tiên ngắt IP(interruptpriority), ghi cóđịa byte 0B8H Thanh ghi có chức thiết lập chế độ ưu tiên vi điều khiển ghi IP (Interrupt Priority) địa 0B8H Tổ chức của ghi sau: PT2 PS PT1 PX1 PT0 PX0 Hoạt động của bit ghi IP tóm tắt bảng sau: Bảng 6.2: Trạng thái bit ghi IP Than Ký hiệu Địa bit Mô tả(1:mứccao,0: mức thấp) hghiIP.7 Không sử dụng IP.6 Không sử dụng IP.5 PT2 0BDH Ưu tiên ngắt định thời IP.4 PS 0BCH Ưu tiên ngắt port nối tiếp IP.3 PT1 0BBH Ưu tiên ngắt định thời IP.2 PX1 0BAH Ưu tiên ngắt ngoài1 IP.1 PT0 0B9H Ưu tiên ngắt định thời IP.0 PX0 0B8H Ưu tiên ngắt Khi hệ thống thiết lập lại trạng thái ban đầu,thanh ghi IP bị xóa mặc định tất ngắt mức ưu tiên thấp Trong 89C51 có mức ưu tiên thấp mức ưu tiên cao Nếu vi điều khiển thực chương trình phục vụ ngắt có mức ưu tiên thấp có yêu cầu ngắt với mức ưu tiên cao xuất vi điều khiển phải ngừng thực chương trình phục vụ ngắt có mức ưu tiên thấp để thực chương trình phục vụ ngắt có ưu tiên cao Ngược lại vi điều khiển thực chương trình phục vụ ngắt có mức ưu tiên cao có yêu cầu ngắt với mức ưu tiên thấp xuất vi điều khiển tiếp tục thực thực xong chương trình phục vụ ngắt có ưu tiên cao thực chương trình phục vụ ngắt có ưu tiên thấp u cầu Chương trình mà vi điều khiển ln thực hệ thống mức thấp nhất, khơng có liên kết với u cầu ngắt nào, ln bị ngắt bất chấp ngắt mức ưu tiên cao hay thấp Nếu có yêu cầu ngắt với ưu tiên khác xuất đồng thời yêu cầu ngắt có mức ưu tiên cao phục vụ trước 1.3 Ch̃i Nếu có hai ngắt có mức ưu tiên xuất đồng thời,chuỗi vịng cố định xác định ngắt phục vụ trước Chuỗi vịng là: ngắt ngồi 0, ngắt định thời 0, ngắt 1, ngắt định thời1, ngắt port nối tiếp, ngắt định thời Các bit cờ của nguồn ngắt tóm tắt bảng sau: Bảng 6.3: Các bit cờ nguồn ngắt Interrupt Flag SFR Register and Bit Position External IE0 TCON External IE1 TCON 83 Timer TF1 TCON Timer TF0 TCON Serial Port TI SCON Serial Port RI CSON Timer TF2 T2CON 7(8052) Timer EXF2 T2CON 6(8052) Hình 6.3: Cấu trúc ngắt vi điều khiển Hình 6.3 ta thấy tác dụng của ghi IE hoạt động contact On/ Off ghi IP hoạt động contact chuyển mạch vị trí để lựa chọn Ta hãy bắt đầu từ ghi IE trước: bit cho phép ngắt toàn cục (Global Enable) phép đóng tồn contact tùy thuộc vào bit cho phép của nguồn ngắt có phép hay không chúng hoạt động giống contact: phép đóng mạch tín hiệu yêu cầu ngắt đưa vào bên để xử lý, khơng phép contact hở mạch nên tín hiệu u cầu ngắt khơng đưa vào bên không xử lý Tiếp theo ghi IP: tín hiệu sau khỏi ghi IE đưa đến ghi IP để xếp ưu tiên cho nguồn ngắt Có mức độ ưu tiên: mức ưu tiên cao mức ưu tiên thấp Nếu nguồn có ưu tiên cao contact chuyển mạch đưa tín hiệu u cầu ngắt đến vùng kiểm tra có ưu tiên cao, nguồn có ưu tiên thấp contact chuyển mạch đưa tín hiệu yêu cầu ngắt đến vùng kiểm tra có ưu tiên thấp Vùng kiểm tra ngắt ưu tiên cao thực trước kiểm tra theo thứ tự từ xuống gặp yêu cầu ngắt yêu cầu ngắt thực Sau tiếp tục thực cho vùng kiểm tra ưu tiên ngắt có mức ưu tiên thấp Trong hình cịn cho thấy yêu cầu ngắt truyền liệu nối tiếp tạo từ tổ hợp OR của cờ báo nhận RI cờ báo phát TI Khi ngắt truyền liệu xảy 84 ta muốn biết cờ nhận hay cờ phát tạo ngắt để thực cơng việc khác ta phải kiểm tra cờ RI TI để biết thực cơng việc tương ứng Ví dụ truyền liệu: có báo ngắt truyền liệu ta phải kiểm tra xem cờ RI = hay khơng? Nếu hệ thống khác gởi liệu đến ta phải chuyển hướng chương trình phục vụ ngắt sang hướng nhận liệu, chắn cờ TI=1 báo cho biết liệu đã truyền xong sẵn sàng truyền kí tự ta phải chuyển hướng chương trình phục vụ ngắt sang phát liệu Tương tự, yêu cầu ngắt của Timer2 tạo từ tổ hợp OR của cờ tràn TF2 cờ nhập EXF2 Xử lý ngắt Hình 6.4: Các tín hiệu điều khiển ngắt Ở hình có điểm ý hai tín hiệu IT0 IT1, hai bit lựa chọn nguyên nhân ngắt cho ngắt INTR0 INTR1 Nếu=1thì ngắt sườn âm,=0 ngắt sườn dương.Khi có ngắt xuất CPU chấp nhận,chương trình bị ngắt Các thao tác sau xảy ra: Hoàn tất việc thực thi lệnh hành Bộ đếm chương trình PC cất vào stack Trạng thái của ngắt hành lưu giữ lại Các ngắt chận lại mức ngắt Bộ đếm chương trình PC nạp địa vector của trình phục vụ ngắt ISR ISR thực thi ISR thực thi để đáp ứngcông việc của ngắt.Việc thực thi ISR kết thúc gặp lệnh RETI Lệnh lấy lại giá trị cũ của đếm chương trình PC từ stack phục hồi trạng thái của ngắt cũ Chú ý: chương trình phục vụ ngắt khơng làm làm sai địa của PC đã lưu ngăn xếp điều xảy trở lại chương trình CPU khơng thực tiếp cơng việc của chương trình khơng xác định CPU làm đâu Khi quyền kiểm sốt vi xử lý Trong “vi điều khiển” nhớ ngăn xếp nhớ RAM nội nên chúng sẵn sàng hoạt động cho việc lưu trữ tạm, “vi xử lý” nhớ ngăn xếp sử dụng nhớ nên bạn phải khởi tạo nhớ ngăn xếp phải vùng nhớ RAM để ghi đọc lại được, bạn khởi tạo vùng nhớ EPROM khởi tạo nơi mà nhớ khơng ghi vào làm địa – liệu lưu vào nhớ ngăn xếp dẫn đến chương trình thực sai Một điều cần phải ý 85 lập trình khơng nhảy từ chương trình sang chương trình để thực tiếp chương trình làm sau nhiều lần thực nhớ ngăn xếp bị tràn ghi đè lên liệu khác làm sai chương trình Trong trường hợp thấy chương trình thực vài lần sau sai 2.1 Các vector ngắt Bảng 6.4: Địa vector Ngắt Địa vector Reset hệ thống 0000H Ngắt 0003H Ngắt định thời 000BH Ngắt 0013H Ngắt định thời1 001BH Ngắt port nối tiếp 0023H Ngắt định thời 002BH Khi ngắt chấp nhận,giá trị nạp cho đếm chương trình PC gọi vector ngắt.Vector ngắt địa bắt đầu của trình phục vụ ngắt của nguyên nhân ngắt tương ứng Vector reset hệ thống bắt đầu địa 0000H: reset vi điều khiển ghi PC = 0000H chương trình ln bắt đầu địa Khi bạn sử dụng yêu cầu ngắt chương trình phục vụ ngắt phải viết địa tương ứng Ví dụ bạn sử dụng ngắt timer T0 chương trình ngắt bạn phải viết địa 000BH.Do khoảng vùng nhớ vector địa của nguồn ngắt có vài nhớ Ví dụ vector địa ngắt của ngắt INT0 0003H vector địa ngắt của ngắt T0 000BH cách có nhớ Nếu chương trình phục vụ ngắt của ngắt INT0 có kích thước lớn byte đụng đến vùng nhớ của ngắt T0 Cách giải tốt địa 0003H ta viết lệnh nhảy đến vùng nhớ khác rộng Còn ngắt T0 ngắt khác khơng sử dụng ta viết chương trình Chương trình ln bắt đầu địa 0000H sau reset hệ thống, chương trình có sử dụng ngắt ta phải dùng lệnh nhảy địa 0000H để nhảy đến vùng nhớ khác rộng không bị giới hạn để viết tiếp 2.2 Ngắt ngồi (ExternalInterrupt) 8051có ngắt ngồi INT0 INT1 Ngắt hiểu gắt gây kiện mức logic (mức điện áp thấp,gần 0V) sườn xuống (sự chuyển mức điện áp từ mức cao mức thấp) xảy chân ngắt tương ứng (P3.2 với ngắt P3.3với ngắt 1).Việc lựa chọn kiểu ngắt thực bit IT (InterruptType) nằm ghi TCON.Đây ghi điều khiển timer bit LSB (bit0 3) dùng cho ngắt ngồi.Khi bit ITx=1thì ngắt tương ứng chọn kiểu ngắt theo sườn xuống,ngược lại bit ITx=0 ngắt ngồi tương ứng có kiểu ngắt ngắt theo mức thấp Các bit IE bit cờ ngắt ngoài, có tác dụng trường hợp kiểu ngắt chọn ngắt theo sườn xuống Khi kiểu ngắt theo sườn xuống chọn ngắt xảy lần có sườn xuống của tín hiệu, sau tín hiệu mức thấp, có sườn lên, mức cao 86 khơng có ngắt xảy có sườn xuống Cờ ngắt IE dựng lên có sườn xuống tự động bị xóa CPU bắt đầu xử lý ngắt Khi kiểu ngắt theo mức thấp chọn ngắt xảy tín hiệu chân ngắt mức thấp Nếu sau xử lý xong ngắt mà tín hiệuvẫn mức thấp lại ngắt tiếp, xử lý xong ngắt lần thứ n, tín hiệu đã lên mức cao thơi khơng ngắt Cờ ngắt IE trường hợp khơng có ý nghĩa Thơng thường kiểu ngắt hay chọn ngắt theo sườn xuống Thiết kế chương trình dùng ngắt Các bước thực ngắt Khi kích hoạt ngắt vi điều khiển qua bước sau: Nó kết thúc lệnh thực lưu địa của lệnh (PC) vào ngăn xếp Nó lưu tình trạng của 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éctơ ngắt, nơi lưu giữ địa của trình phục vụ ngắt Bộ vi điều khiển nhận địa ISR từ bảng véc tơ ngắt nhảy tới Nó bắt đầu thực trình phục vụ ngắt lệnh cuối của 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 của đếm chương trình PC từ ngăn xếp cách kéo hai byte đỉnh của ngăn xếp vào PC Sau bắt đầu thực lệnh từ địa Lưu ý bước đến vai trò nhạy cảm của ngăn xếp, lý mà phải cẩn thận thao tác nội dung của ngăn xếp ISR Đặc biệt ISR chương trình CALL số lần đẩy vào ngăn xếp (Push)và số lần lấy từ (Pop) phải Thứ tự ưu tiên ngắt Khi có hai hay nhiều ngắt lúc xảy ra, ngắt thực hiện, mở ngắt khác yêu cầu ngắt có độ ưu tiên ưu tiên xử lý Có cấp độ ưu tiên ngắt 8051: Ngắt reset ngắt có mức ưu tiên cao nhất, reset xảy tất ngắt khác chương trình bị dừng vi điều khiển trở chế độ khởi dộng ban đầu Ngắt mức 1, có reset cấm ngắt Ngắt mức 0, ngắt mức reset cấm ngắt Việc đăt chọn mức ưu tiên ngắt thông qua ghi IP Việc xử lý ưu tiên ngắt của 8051 sau: Nếu có độ ưu tiên cao ngắt xử lý xuất thì, ngắt có ưu tiên thấp bị dừng để ngắt thực Nếu ngắt yêu cầu vào thời điểm ngắt có mức ưu tiên xử lý trước Nếu ngắt có mức ưu tiên yêu cầu vào thời điểm thứ tự chọn sau: INTR Timer INTR Timer UART Chương trình thực thi độc lập có sử dụng ngắt sau: 87 ORG 0000H; điểm nhập sau reset LJMPMAIN ; điểm nhập của ISR ORG0030H ; điểm nhập chương trình MAIN: ; chương trình bắt đầu END 3.1 Các trình phục vụ ngắt kích thước nhỏ Các trình phục vụ ngắt phải bắt đầu gần đáy của nhớ chương trình địa qui định Mặc dù có byte điểm nhập của trình phục vụ ngắt, dung lượng thường đủ để thực công việc u cầu quay trở chương trình từ trình phục vụ ngắt Điều có nghĩa trình phục vụ ngắt cho ngắt tương ứng thường khơng dài q byte Nếu có nhiều ngắt dùng ta phải cẩn thận để đảm bảo ISR bắt đầu vị trí mà khơng tràn sang ISR kế 3.2 Các trình phục vụ ngắt kích thước lớn Nếu trình phục vụ ngắt dài byte cần đến, ta phải di chuyển phương trình đến nơi khác nhớ chương trình ta cho lấn qua điểm nhập của ISR kế Điển hình ISR bắt đầu với lệnh nhảy đến vùng khác của nhớ chương trình, ISR trải rộng cần 3.3 Ngắt cổng nối tiếp MCS-51 có nguồn ngắt cổng nối tiếp: ngắt phát ngắt thu Hai nguồn ngắt xác định bit RI, TI dùng chung địa ISR nên chuyển đến ISR, cờ ngắt khơng tự động xóa phần cứng mà phải thực phần mềm: kiểm tra nguyên nhân ngắt (RI hay TI) xóa bit cờ tương ứng Ví dụ: Viết chương trình khởi động cổng nối tiếp chế độ UART bit với tốc độ truyền 4800 bps Viết ISR cho cổng nối yêu cầu: truyền tuần tự ký tự từ ‘A’ đến ‘Z’ cổng nối tiếp đồng thời lần có ký tự đến cổng nối tiếp nhận xuất ký tự nhận P0 (giả sử tần số thạch anh 6.0592 MHz) Giải Nội dung ghi SCON: 88 Chương trình thực sau: ORG 0000H LJMP MAIN ORG 0023H ; Địa ISR của cổng nối tiếp LJMP SERIAL_ISR MAIN: MOV TMOD,#20h MOV TH1,#(-6) MOV TL1,#(-6) ; Tốc độ 4800 bps SETB TR1 MOV R7,#’A’ ; Ký tự truyền đầu tiên MOV IE,#90h ; Cho phép ngắt công nối tiếp SETB TI ;Cho phép truyền SJMP $ SERIAL_ISR: JNB RI,TRANSMIT ; Nếu khơng phải ngắt nhận ký tự truyền CLR RI MOV A,SBUF ; Nhận ký tự MOV P0,A ; Xuất Port SJMP EXITE\SERIAL TRANSMIT: CLR TI MOV A,R7 MOV SBUF,A ; Truyền ký tự INC R7 ; Qua ký tự kế CJNE R7,#’Z’+1, EXITE\SERIAL ; Nếu chưa truyền’Z’ ; tiếp tục truyền, ngược lại MOV R7,#’A’ ; bắt đầu truyền từ ký tự ‘A’ EXITE\SERIAL: RETI END 3.4 Các cổng ngắt Ngắt xảy có mức thấp có cạnh âm chân /INT0 hoặc/ INT1 Việc chọn ngắt thuộc tác động cạnh hay ngắt loại tác động mức lập trình thơng qua bit IT0 IT1của ghi TCON Vì chân ngắt ngồi lấy mẫu lần chu kỳ máy ngõ vào phải đượcduy trì tối thiểu12 chu kỳ dao động để đảm bảo việc lấy mẫu Nếu ngắt thuộc tác động cạnh nguyên nhân ngắt ngồi phải trì chân u cầu mức cao tối thiểu chu kỳ sau mức thấp tối thiểu chu kỳ để đảm bảo việc chuyển trạng thái phát IE0 IE1 tự động xóa CPU trỏ tới trình phụcvụ ngắt tương ứng Nếu ngắt ngồi thuộc loại tác động mức nguyên nhân ngắt phải trì trạng thái tích cực ngắt theo yêu cầu thực tạo Sau nguyên nhân ngắt phải trạng thái thụ động trước trình phục vụ ngắt thực thi xong trước có ngắt khác tạo Thơng thường, cơng việc thực thi bên trình phục vụ ngắt làm cho nguyên nhân ngắt trả tín hiệu u cầu ngắt trở trạng thái khơng tích cực 89 3.5 Đồ thị thời gian ngắt Thực tế có ngắt dành cho người dùng 8051 nhiều nhà sản xuất đưa bảng liệu nói có sáu ngắt họ tính lệnh tái thiết lập lại RE SET Sáu ngắt của 8051 phân bố sau: RESET: Khi chân RESET kích hoạt từ 8051 nhảy địa 0000 Đây địa bật lại nguồn Gồm ngắt dành cho điịnh thời: cho timer0 cho Timer1 Địa của ngắt 000B4 001B4 bảng vector ngắt dành cho Timer0 Timer1 tương ứng Hai ngắt dành cho ngắt phần cứng bên chân 12 (P3.2) 13 (P3.3) của cổng P3 ngắt phần cứng bên INT0 INT1 tương ứng Các ngắt ngồi cịn coi EX1 EX2 vị trí nhớ bảng vector ngắt của ngắt 0003H 0013H gán cho INT0 INT1 tương ứng Truyền thơng nối tiếp có ngắt thuộc thu phát Địa của ngắt bảng vector ngắt 0023H Đồ thị thời gian ngắt Các chân P3.2 P3.3 bình thường dùng cho vào-ra bít INT0 INT1 ghi IE khơng kích hoạt Sau ngắt phần cứng ghi IE kích hoạt vi điều khiển trì trích mẫu chân INTn tín hiệu mức thấp lần chu kỳ máy Theo bảng liệu của nhà sản xuất của vi điều khiển “chân ngắt phải giữ mức thấp bắt đầu thực trình phục vụ ngắt ISR Nếu chân INTn đưa trở lại mức cao trước bắt đầu thực ISR chẳng có ngắt xảy ra” Tuy nhiên q trình kích hoạt ngắt theo mức thấp nên lại phải đưa lên mức cao trước thực lệnh RETI lại theo bảng liệu của nhà sản xuất “nếu chân INTn mức thấp sau lệnh RETI của trình phục vụ ngắt ngắt khác lại kích hoạt sau lệnh RETI thực Do vậy, để bảo đảm việc kích hoạt ngắt phần cứng chân INTn phải khẳng định thời gian tồn tín hiệu mức thấp khoảng chu trình máy khơng Hình 6.5: Thời gian tối thiểu ngắt theo mức thấp (XTAL = 11,0592MHz) Trong ngắt sườn,nguồn phải giữ mức cao tối thiểu chu trình máy để đảm bảo vi điều khiển nhìn thấy chuyển dịch từ cao xuống thấp của sườn xung 90 Các mức ưu tiên ngắt cấp lại nguồn Mức ưu tiên cao xng thấp Ngắt ngồi INT0 Ngắt định thời TF0 Ngắt INT1 Ngắt định thời TF1 Ngắt truyền thông nối tiếp (RI+TI) Thực hành 4.1 Các bước lập trình ngắt ngồi Bước Bật bit cho phép ngắt (EX0 = 1), (EX1 = 1), bật hai sử dụng ngắt Bước Cấu hình chế độ ngắt kích phát sườn kích phát mức cho ngắt ngồi 0, cách bật xóa bit IT0, IT1 Bước Bật bit cho phép ngắt toàn cục (EA = 1) Bước Viết chương trình phục vụ ngắt 4.2 Sinh viên thực hành Viết chương trình sử dụng nút nhấn để điều khiển hiển thị số có chữ số led số sau: Mặc định bắt đầu, led hiển thị số Mỗi lần nhấn nút 1, giá trị led tăng đơn vi Khi giá trị led lớn 9, led hiển thị quay trở lại số Mỗi lần nhấn nút 2, giá trị led giảm đơn vị, giá trị led nhỏ thua 0, led hiển thị số Những trọng tâm cần ý - Chế độ làm việc - Các ghi điều khiển Bài tập mở rộng nâng cao Bài 1: Chương trình điều khiển sóng vng t̀n hồn có tần số 10Hz (sử dụng ngắt Timer) chân P0.0 hiển thị mức logic chân lên LED0 (LED0 nối với P0.0) Bài 2: Viết chương trình điều khiển đèn giao thơng ngã tư? Bài 3: Hãy lệnh để a) cho phép ngắt nối tiếp ngắt Timer ngắt phần cứng ngoài1(EX1) b ) cấm (che) ngắt Timer0 sau c)trình bày cách cấm tất ngắt lệnh Bài 4: Hãy viết chương trình nhân liên tục liệu bít cổng P0 gửi đến cổng P1 lúc tạo sóng vng chu kỳ 200us chân P2.1 Hãy sử dụng Timer0 để tạo sóng vng, tần số của 8051 XTAL = 6.0592MHz Yêu cầu đánh giá kết học tập Nội dung: + Về kiến thức: Trình bày tác dụng thực tế của hệ thống điều khiển tín hiệu ngắt theo nội dung đã học + Về kỹ năng: Thực tổ chức ngắt chế thực chương trình phục vụ ngắt của 8051 yêu cầu kỹ thuật 91 Thực tổ chức ngắt đạt yêu cầu kỹ thuật Lắp ráp mạch ứng dụng phần giáo viên đề Thực viết chương trình theo yêu cầu cho trước + Năng lực tự chủ trách nhiệm: Đánh giá phong cách, thái độ học tập Phương pháp: + Về kiến thức: Được đánh giá hình thức kiểm tra viết, trắc nghiệm + Về kỹ năng: Đánh giá kỹ thực hành Mỗi sinh viên, nhóm học viên thực cơng việc theo u cầu của giáo viên.Tiêu chí đánh giá theo nội dung: - Độ xác của cơng việc - Tính thẩm mỹ - Độ an toàn - Thời gian thực cơng việc - Độ xác theo u cầu kỹ thuật + Năng lực tự chủ trách nhiệm: Tỉ mỉ, cẩn thận, xác Điều kiện dự thi kết thúc mơ đun - Điều kiện để hồn thành mơ đun để dự thi kết thúc mô đun: + Người học tham dự 70% thời gian học lý thuyết đầy đủ học tích hợp, học thực hành, thực tập + Điểm trung bình chung điểm kiểm tra đạt từ 5,0 điểm trở lên theo thang điểm 10; + Người học có giấy xác nhận khuyết tật theo quy định hiệu trưởng xem xét, định ưu tiên điều kiện dự thi sở sinh viên phải bảo đảm điều kiện điểm trung bình điểm kiểm tra + Số lần dự thi kết thúc mô đun theo quy định khoản Điều 13 Thông tư 09/2017/TT-BLĐTBXH, ngày 13 tháng năm 2017 - Điều kiện để công nhận, cấp chứng nhận đạt mô đun đào tạo: Người học công nhận cấp chứng nhận đạt mơ đun có điểm trung bình mơ đun theo thang điểm 10 đạt từ 4,0 trở lên 92 TÀI LIỆU THAM KHẢO [1] Giáo trình vi xử lý, Trần Văn Trọng Trường ĐHSPKT TP HCM [2] Kỹ thuật vi xử lý, Văn Thế Minh Trường ĐHSPKT TP HCM [3] Họ vi điều khiển - Tống văn On - Đại học Bách khoa TP.HCM - 2005 [4] Programmierrung des z80, Rodnay Zaks [5] Microprocessor and IC families - Walter H Buchbaum Sc.D [6] Mikrocompute Lehrbuch - HPI Fachbuchreihen Pflaum Verlag Munchen [7] 8051 Development Boad, Rev - Paul Stoffregen [8] Microprocessors and Interfacing, Doulas V Hall [9] Baugruppen der mikroelektronik III , Plaum Verlag Muenchen 93

Ngày đăng: 16/12/2023, 16:05

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan