tài liệu vi sử lý bài 2 lập trình ngắt..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Trang 1Giảng viên: Phạm Văn Chiến
Bộ môn: Điện tử máy tính
Khoa: Điện tử
Điện thoại: 0915 666 066
Email: vanchiendhcn@gmail.com
Thực hành kỹ thuật vi xử lý
Trang 2Nội dung:
Bài thực hành 01: Lập trình điều khiển vào/ra
Bài thực hành 02: Lập trình ứng dụng sử dụng ngắt ngoài
Bài thực hành 03: Lập trình các ứng dụng sử dụng TimerBài thực hành 04: Lập trình ứng dụng SD cổng nối tiếp
Trang 3Bài thực hành 02:
Lập trình ứng dụng sử dụng ngắt ngoài
Trang 4Nội dung bài học:
Trang 51 Sơ đồ mạch điện
- Sơ đồ nguyên lý phần vào ra:
Mô đun CPU, chân ngắt INT0/P3.2, INT1/P3.3
Trang 6- Sơ đồ nguyên lý điều khiển led
Trình bày: Phạm Văn Chiến, vanchiendhcn@gmail.com, Khoa Điện tử
Trang 7- Sơ đồ nguyên lý các tín hiệu tạo ngắt:
Mô đunphím nhấn,
sử dụng
để kết nối với chân ngắt INT0 hoạc INT1
1 Sơ đồ mạch điện
Trang 82 Các thanh ghi điều khiển ngắt
- Nguồn ngắt
AT89S52 có 6 nguồn ngắt:
+ Ngắt ngoài đến từ chân #INT0.
+ Ngắt ngoài đến từ chân #INT1.
+ Ngắt do bộ timer 0.
+ Ngắt do bộ timer 1.
+ Ngắt do bộ timer 2.
+ Ngắt do Port nối tiếp.
Trình bày: Phạm Văn Chiến, vanchiendhcn@gmail.com, Khoa Điện tử
ĐHCNHN
8
Trang 92 Các thanh ghi điều khiển ngắt
Thanh ghi cho phép ngắt IE (Interrupt Enable)
Ví dụ: để cho phép ngắt INT0 cần thiết lập EA=1 và
EX0=1, vậy IE=0b10000001 (0x81)
Trang 102 Các thanh ghi điều khiển ngắt
- Lựa chọn sườn ngắt ngoài:
Trình bày: Phạm Văn Chiến, vanchiendhcn@gmail.com, Khoa Điện tử
ĐHCNHN
10
Ví dụ: bit IT0 = 1, Ngắt INT0 sẽ
xảy ra ngắt khi tín hiệu trên chân
INT0 chuyển từ mức 1 sang mức
0
Bit IT1 = 0, ngắt INT1 sẽ xảy ra
ngắt khi chân INT1 ở mức 0
Trang 112 Các thanh ghi điều khiển ngắt
- Thanh ghi lựa chọn ưu tiên ngắt IP:
Ví dụ: Thiết lập ngắt INT0 ở mức ưu tiên cao, các ngắt còn lại ở mức ưu tiên thấp.
PX0=1; các bit còn lại thiết lập ở mức 0.
IP=0b00000001; // 0x01
Trang 122 Các thanh ghi điều khiển ngắt
- Khi viết chương trình con phục vụ ngắt cần chú ý thiết lập số
hiệu ngắt để trình dịch nhận biết được ngắt.
Trang 133 Lập trình ứng dụng ngắt
- Khung chương trình sử dụng ngắt
Số hiệu ngắt Tên người dùng tự đặt
Trang 143 Lập trình ứng dụng ngắt
- Các bước lập trình với ngắt
Bước 1 Viết khung chương trình, định nghĩa các chân
Bước 2 Viết khung chương trình ngắt
Bước 3 Thiết lập thanh ghi ngắt
Bước 4 Viết chương trình chính
Bước 5 Viết chương trình con phục vụ ngắt
Trình bày: Phạm Văn Chiến, vanchiendhcn@gmail.com, Khoa Điện tử
ĐHCNHN
14
Trang 15Ví dụ 1 Vẽ sơ đồ mạch điện như hình dưới và lập trình
theo yêu cầu:
- Led D1 được điều khiển nháy liên tục
- Khi nhấn nút ngắt nối với INT0, led D1 ngừng nháy, led D2 sáng nhấp nháy 10 lần, sau đó D1 tiếp tục nháy
Trang 163 Lập trình ứng dụng ngắt
Bước 1 Viết khung chương trình, định nghĩa vào/ra
- Định nghĩa Led D1 nối với P1.0, led D2 nối với P1.1
- Khai báo biến j,i để tạo trễ và vòng lặp nháy led 10 lần
Trình bày: Phạm Văn Chiến, vanchiendhcn@gmail.com, Khoa Điện tử
ĐHCNHN
16
Trang 173 Lập trình ứng dụng ngắt
Bước 2 Viết chương trình con phục vụ ngắt
- Số hiệu ngắt của ngắt INT0 là: 0
- Thiết lập tên ngắt là: NgatINT0
Bước 3 Thiết lập ngắt
- IE = 0x81; // sử dụng ngắt INT0 (EA và EX0 bằng 1)
- Chọn ngắt bằng
Trang 183 Lập trình ứng dụng ngắt
Bước 4 Viết chương trình chính
- Lập trình điều khiển led D1 sáng nhấp nháy liên tục
- Sử dụng lệnh: for(j=0;j<30000;j++); để tạo trễ
Bước 5 Viết chương trình còn phục vụ ngắt
- Sử dụng vong lặp for với số lần lặp là 20 để điều khiển led D2 sang nháy 10 lần
Trang 193 Lập trình ứng dụng ngắt
Chương trình đầy đủ:
Sinh viên viết chương trình qua các bước hướng dẫn trước khi xem chương trình đầy đủ này.
Trang 21Ví dụ 2 Vẽ sơ đồ mạch điện như hình dưới và lập trình
theo yêu cầu:
- Led D1 được điều khiển nháy liên tục
- Khi nhấn nút ngắt nối với INT1, led D1 ngừng nháy, led D2 sáng nhấp nháy 20 lần, sau đó D1 tiếp tục nháy
Trang 22Ví dụ 2 Vẽ sơ đồ mạch điện như hình dưới và lập trình
theo yêu cầu:
Hướng dẫn thực hiện:
- Sinh viên thực hiện các bước tương tự ví dụ 1
- Một số điểm khác so với ngắt INT0 ở ví dụ 1:
+ Thiết lập thanh ghi IE: EX0=1 và EA=1+ Bit chọn nguyên nhân ngắt: IT1
+ Số hiệu ngắt INT1 là: 2+ Tên gợi nhớ ngắt: NgatINT1
Trình bày: Phạm Văn Chiến, vanchiendhcn@gmail.com, Khoa Điện tử
ĐHCNHN
22
Trang 23Ví dụ 3 Vẽ sơ đồ mạch điện như hình dưới và lập trình theo
yêu cầu:
- Led D1 được điều khiển nháy liên tục.
- Khi nhấn nút KEY1, led D1 ngừng nháy, led D2 sáng nhấp
Trang 24- Hướng dẫn lập trình:
Bước 1 Viết khung chương trình, định nghĩa chân
Trình bày: Phạm Văn Chiến, vanchiendhcn@gmail.com, Khoa Điện tử
ĐHCNHN
24
Bước 2 Viết chương trình con phục vụ ngắt
Trang 25Bước 3 Viết khung chương trình, định nghĩa chân
Bước 4 Viết chương trình con phục vụ ngắt
- IE: Thiết lập EX0, EX1, EA
- Thiết lập IT0, IT1
- IP: Thiết lập bit PX1, xóa bít PX0
Trang 26Bước 5 Viết chương trình chính
- Viết chương trình chính: Điều khiển led D1 sáng nháy
liên tục
- Chương trình con PV ngắt INT0: Điều khiển led2 sáng
nháy 10 lần sử dụng vòng lặp for với biến j.
- Chương trình con PV ngắt INT1: Điều khiển led3 sáng
nháy 15 lần sử dụng vòng lặp for với biến t.
Trình bày: Phạm Văn Chiến, vanchiendhcn@gmail.com, Khoa Điện tử
ĐHCNHN
26
Trang 27Chương trình đầy đủ:
Trang 29Mô phỏng:
Trường hợp 1: Khi đang thực hiện ngắt INT0(nháy led D2)
mà tác động nút nhấn KEY2(ngắt INT1) thì xảy ra hiện
tượng gì?
Trường hợp 2: Khi đang thực hiện ngắt INT1(nháy led D3)
mà tác động nút nhấn KEY1(ngắt INT0) thì xảy ra hiện
tượng gì?
Trang 30Ví dụ 4 Vẽ sơ đồ mạch điện như hình dưới và lập trình theo
Trang 32Bước 5 Viết chương trình con phục vụ ngắt
- Tăng giá trị biến sản phẩm lên 1 mỗi lần ngắt.