Bài tập Kỹ thuật vi điều khiển

Quyển bài tập kỹ thuật Vi điều khiển này được biên soạn nhằm phục vụ cho việc giảng dạy bộ môn Vi điều khiển tại trường Đại học SPKT Hưng yên. Hệ thống các bài tập ở quyển sách này đã được tác giả biên soạn, tổng hợp sao cho phù hợp với nội dung đào tạo và giáo trình kỹ thuật Vi điều khiển. Vì vậy, khi giảng dạy môn này giáo viên cần liên hệ các bài tập cụ thể để áp dụng cho phù hợp với từng nội dung bài giảng.

doc14 trang | Chia sẻ: maiphuongtt | Lượt xem: 2511 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài tập Kỹ thuật vi điều khiển, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
MỤC LỤC Trang Lời giới thiệu 2 Phần 1. Bài tập căn bản Nhóm lệnh di chuyển dữ liệu. 3 Bài tập 1.1 ... 1.3 3 Bài tập 1.4 ... 1.8 4 Bài tập 1.9 5 Nhóm lệnh tính toán số học. 5 Bài tập 2.1 ... 2.4 5 Bài tập 2.5 ... 2.9 6 Nhóm lệnh tính toán logic. 6 Bài tập 3.1 ... 3.7 7 Bài tập 3.8 ... 3.10 8 Nhóm lệnh rẽ nhánh chương trình. 8 Bài tập 4.1 ... 4.3 8 Bài tập 4.4 ... 4.8 9 Bài tập 4.9 ... 4.12 10 Bài tập 4.13 ... 4.14 11 Nhóm lệnh điều khiển biến logic. 11 Bài tập 5.1 ... 5.4 11 Phần 2. Bài tập ứng dụng cơ bản 12 Bài tập 1 ... 5 12 Bài tập 6 ...15 13 Tài liệu tham khảo. 14 LỜI GIỚI THIỆU Quyển bài tập kỹ thuật Vi điều khiển này được biên soạn nhằm phục vụ cho việc giảng dạy bộ môn Vi điều khiển tại trường Đại học SPKT Hưng yên. Hệ thống các bài tập ở quyển sách này đã được tác giả biên soạn, tổng hợp sao cho phù hợp với nội dung đào tạo và giáo trình kỹ thuật Vi điều khiển. Vì vậy, khi giảng dạy môn này giáo viên cần liên hệ các bài tập cụ thể để áp dụng cho phù hợp với từng nội dung bài giảng. Mặc dầu đã rất cố gắng trong quá trình biên soạn nhưng do trình độ và thời gian còn bị hạn chế nên chắc chắn quyển sách này không tránh khỏi những thiếu sót, rất mong nhận được những ý kiến phê bình, đóng góp của bạn đọc. Hưng yên, tháng 10 năm 2003 Tác giả PHẦN 1: BÀI TẬP CĂN BẢN NHÓM LỆNH DI CHUYỂN DỮ LIỆU: BÀI TẬP 1.1: DỮ KIỆN YÊU CẦU - (30h) ở RAM nội = 40h. - (40h) ở RAM nội = 10h. - Chuyển nội dung tại vị trí 30h ở RAM nội vào R1 và A. - Chuyển nội dung tại vị trí 40h ở RAM nội vào B. - Chuyển nội dung 0CAh vào vị trí 40h ở RAM nội và cổng P2. - Xác định giá trị của các thanh ghi R1, A, B, và nội dung của RAM nội tai các vị trí trên (bảng Main Registers). - Xuất dữ liệu của A và B ra cổng P1 và P3. BÀI TẬP 1.2: DỮ KIỆN YÊU CẦU - (C) = 1; (P2) = 0C5h - (P1) = 35h Xác định nội dung mới của P1 sau khi thực hiện các lệnh sau: MOV P1.3, C MOV C, P2.3 MOV P1.2, C BÀI TẬP 1.3: DỮ KIỆN YÊU CẦU - (R0) = 11h; (R1) = 23h - (11h) ở RAM ngoài = 55h - Sao chép nội dung tại vị trí 11h ở RAM ngoài vào A. - Sao chép nội dung 55h vào vị trí 23h của RAM ngoài. - Xuất dữ liệu của A ra cổng P0 bằng phương pháp định địa chỉ trực tiếp. BÀI TẬP 1.4: DỮ KIỆN YÊU CẦU (SP) = 05h; (DPTR) = 1123h Lưu nội dung 23h và 11h vào vị trí 06h và 07h của ngăn xếp ở RAM nội. Xác định nội dung mới của SP. BÀI TẬP 1.5: DỮ KIỆN YÊU CẦU - (SP) = 32h - (30h), (31h) và (32h) ở RAM nội = 10h, 11h và 12h Xác định nội dung mới của DPTR và SP sau khi thực hiện các lệnh sau: POP DPH POP DPL BÀI TẬP 1.6: DỮ KIỆN YÊU CẦU - (R1) = 30h; (A) = 0FFh - (30h) ở RAM nội = 0Fh - Hoán chuyển (A) và (30h) ở RAM nội. - Xác định nội dung mới của A và (30h). - Xuất (A) và (30h) ở RAM nội ra P1 và P3. BÀI TẬP 1.7: DỮ KIỆN YÊU CẦU - (R1) = 20h; (A) = 10001100b - (20h) ở RAM nội = 11100001b - Xác định (A), (20h) ở RAM nội sau khi thực hiện lệnh: XCHD A, @R1 - Xuất (A) và (20h) ở RAM nội ra P0 và P2. BÀI TẬP 1.8: (2A), (2B), (2C), (2D) và (2E) ở RAM nội là: 00h, 12h, 34h, 56h và 78h. Hãy xác định nội dung của bảng số liệu sau đây theo từng lệnh cho trước. (2A) (2B) (2C) (2D) (2E) (ACC) MOV A, 2Eh MOV 2Eh, 2Dh MOV 2Dh, 2Ch MOV 2Ch, 2Bh MOV 2Bh, #0 BÀI TẬP 1.9: (2A), (2B), (2C), (2D) và (2E) ở RAM nội là: 00h, 12h, 34h, 56h và 78h. Hãy xác định nội dung của bảng số liệu sau đây theo từng lệnh cho trước. (2A) (2B) (2C) (2D) (2E) (ACC) CLR A XCH A, 2Bh XCH A, 2Ch XCH A, 2Dh XCH A, 2Eh NHÓM LỆNH TÍNH TOÁN SỐ HỌC BÀI TẬP 2.1: DỮ KIỆN YÊU CẦU - (A) = 0C3h - (R1) = 0AAh Xác định nội dung của A, AC, CF, OV sau khi thực hiện lệnh: ADD A, R1 BÀI TẬP 2.2: DỮ KIỆN YÊU CẦU - (A) = 0C3h - (R1) = 0AAh Xác định nội dung của A, AC, CF, OV sau khi thực hiện lệnh: ADDC A, R1 BÀI TẬP 2.3: DỮ KIỆN YÊU CẦU (A) = 0C9h, (R2) = 54h Xác định nội dung của A, AC, CF, OV sau khi thực hiện lệnh: SUBB A, R2 BÀI TẬP 2.4: DỮ KIỆN YÊU CẦU (R0) = 7Eh. (7Eh) và (7Fh) ở RAM nội = 0FFh và 40h Xác định lại: (R0); (7Eh) và (7Fh) ở RAM nội sau khi thực hiện các lệnh: INC @R0 INC R0 INC @R0 BÀI TẬP 2.5: DỮ KIỆN YÊU CẦU (R0) = 7Fh. (7Eh) và (7Fh) ở RAM nội = 00h và 40h Xác định lại: (R0); (7Eh) và (7Fh) ở RAM nội sau khi thực hiện các lệnh: DEC @R0 DEC R0 DEC @R0 BÀI TẬP 2.6: DỮ KIỆN YÊU CẦU (DPTR) = 12FEh Xác định lại (DPTR) sau khi thực hiện các lệnh: INC DPTR INC DPTR INC DPTR BÀI TẬP 2.7: DỮ KIỆN YÊU CẦU (A) = 50h, (B) = 0A0h Xác định kết quả và (A), (B), (CF), (OV) sau khi thực hiện lệnh: MUL AB BÀI TẬP 2.8: DỮ KIỆN YÊU CẦU (A) = 0FBh, (B) = 12h Xác định kết quả và (A), (B), (CF), (OV) sau khi thực hiện lệnh: DIV AB BÀI TẬP 2.9: DỮ KIỆN YÊU CẦU (A) = 56h, (R2) = 67h, (CF) = 1 Xác định (A) sau khi thực hiện các lệnh: ADDC A,R2 DA A NHÓM LỆNH TÍNH TOÁN LOGIC BÀI TẬP 3.1: DỮ KIỆN YÊU CẦU (A) = 0C3H, (R0) = 55h Sau khi thực hiện lệnh: ANL A, R0 (A)= ? BÀI TẬP 3.2: DỮ KIỆN YÊU CẦU P1.0=1, ACC.7=1 và OV=0 Hãy thiết lập cờ nhớ bằng lệnh ANL BÀI TẬP 3.3: DỮ KIỆN YÊU CẦU (A) = 0C3H, (R0) = 55h Sau khi thực hiện lệnh: ORL A, R0 (A) = ? BÀI TẬP 3.4: DỮ KIỆN YÊU CẦU P1.0=1, ACC.7=1 và OV=0 Hãy thiết lập cờ nhớ bằng lệnh ORL BÀI TẬP 3.5: DỮ KIỆN YÊU CẦU (A) = 0C3H, (R0) = 0AAh Sau khi thực hiện lệnh: XRL A, R0 (A) = ? BÀI TẬP 3.6: DỮ KIỆN YÊU CẦU (A) = 0C5h. Sau khi thực hiện lệnh: RL A (A) = ? BÀI TẬP 3.7: DỮ KIỆN YÊU CẦU (A) = 0C5h, (C) = 0. Sau khi thực hiện lệnh: RLC A (A) =?, (C) =? BÀI TẬP 3.8: DỮ KIỆN YÊU CẦU (A) = 0C5h. Sau khi thực hiện lệnh: RR A (A) =? BÀI TẬP 3.9: DỮ KIỆN YÊU CẦU (A) = 0C5h, (C) = 0. Sau khi thực hiện lệnh: RRC A (A) =?, (C) =? BÀI TẬP 3.10: DỮ KIỆN YÊU CẦU (A) = 0C5h Sau khi thực hiện lệnh: SWAP A (A) =? 4. NHÓM LỆNH RẼ NHÁNH CHƯƠNG TRÌNH BÀI TẬP 4.1: DỮ KIỆN YÊU CẦU (SP) = 07h. Nhãn CT_CON được đặt tại vị trí 0345h trong bộ nhớ chương trình. Sau khi thực hiện lệnh ACALL CT_CON tại vị trí 0123h thì : (SP), (08h), (09h) và (PC) = ? BÀI TẬP 4.2: DỮ KIỆN YÊU CẦU (SP) = 07h. Nhãn CT_CON được đặt tại vị trí 1234h trong bộ nhớ chương trình. Sau khi thực hiện lệnh LCALL CT_CON tại vị trí 0123h thì: (SP), (08h), (09h) và (PC) =? BÀI TẬP 4.3: DỮ KIỆN YÊU CẦU (SP) = 0Bh. (0Ah) và (0Bh) trong RAM nội = 23h và 01h. -Xác định (SP) sau khi thực hiện lệnh RET - XĐ địa chỉ tiếp theo của chương trình. BÀI TẬP 4.4: DỮ KIỆN YÊU CẦU (SP) = 0Bh. (0Ah) và (0Bh) trong RAM nội = 23h và 01h. Một ngắt được phát hiện trong khi lệnh ở địa chỉ 0123h đang thực thi. -Xác định (SP) sau khi thực hiện lệnh RETI - XĐ địa chỉ tiếp theo của chương trình. BÀI TẬP 4.5: DỮ KIỆN YÊU CẦU (P1) = 0CAh. (A) = 56h. Xác định địa chỉ rẽ nhánh của chương trình, khi thực hiện các lệnh: JB P1.2, Label1 JB ACC.2, Lable2 BÀI TẬP 4.6: DỮ KIỆN YÊU CẦU (P1) = 0CAh. (A) = 56h. Xác định địa chỉ rẽ nhánh của chương trình, khi thực hiện các lệnh: JNB P1.3, Label1 JNB ACC.3, Lable2 BÀI TẬP 4.7: DỮ KIỆN YÊU CẦU (A) = 56h Xác định địa chỉ rẽ nhánh của chương trình và nội dung mới của A, khi thực hiện các lệnh: JBC ACC.3, Label1 JBC ACC.2, Lable2 BÀI TẬP 4.8: DỮ KIỆN YÊU CẦU (C) = 0 Xác định địa chỉ rẽ nhánh của chương trình và nội dung mới của C, khi thực hiện các lệnh: JC Label1 CPL C JC Lable2 BÀI TẬP 4.9: DỮ KIỆN YÊU CẦU (C) = 1. Xác định địa chỉ rẽ nhánh của chương trình và nội dung mới của C, khi thực hiện các lệnh: JNC Label1 CPL C JNC Lable2 BÀI TẬP 4.10: DỮ KIỆN YÊU CẦU (A) = 01h. Xác định địa chỉ rẽ nhánh của chương trình và nội dung mới của A, khi thực hiện các lệnh: JZ Label1 DEC A JZ Lable2 BÀI TẬP 4.11: DỮ KIỆN YÊU CẦU (A) = 00h. Xác định địa chỉ rẽ nhánh của chương trình và nội dung mới của A, khi thực hiện các lệnh: JNZ Label1 INC A JNZ Lable2 BÀI TẬP 4.12: DỮ KIỆN YÊU CẦU (40h), (50h) và (60h) ở RAM nội = 01h, 70h và 15h. Xác định địa chỉ rẽ nhánh của chương trình và nội dung mới tại các vị trí 40h, 50h và 60h ở RAM nội, khi thực hiện các lệnh: DJNZ 40h, Label1 DJNZ 50h, Label2 DJNZ 60h, Label3 BÀI TẬP 4.13: DỮ KIỆN YÊU CẦU Sử dụng các lệnh: MOV CPL DJNZ Viết chương trình tạo ra 4 xung xuất hiện ở bit 7 của cổng P1. Mỗi một xung chiếm 3 chu kỳ máy BÀI TẬP 4.14: DỮ KIỆN YÊU CẦU Sử dụng các lệnh SETB, CLR và NOP Viết chương trình tạo ra một xung có mức thấp trên bit 7 của cổng P2 chính xác 5 chu kỳ. NHÓM LỆNH ĐIỀU KHIỂN BIẾN LOGIC BÀI TẬP 5.1: DỮ KIỆN YÊU CẦU (P1) = 5Dh. Thực hiện lệnh xoá bit để có (P1) = 59h. BÀI TẬP 5.2: DỮ KIỆN YÊU CẦU (C) = 0, (P1) = 34h. Sử dụng lệnh thiết lập bit để có: (P1) = 35h, và (C) = 1. BÀI TẬP 5.3: DỮ KIỆN YÊU CẦU Cổng P1 vừa được ghi nội dung 5Bh. Sử dụng lệnh lấy bù bit để có: (P1) = 5Dh BÀI TẬP 5.4: DỮ KIỆN YÊU CẦU Sau khi thực hiện xong lệnh: CPL A (A) = 0A3h Xác định nội dung ban đầu của A. PHẦN 2: BÀI TẬP ỨNG DỤNG CƠ BẢN BÀI TẬP 1 : Kiểm tra cổng vào/ ra của Vi xử lý On-chip 8 bit. Yêu cầu: Viết chương trình xuất dữ liệu ra cổng P1 theo bảng số liệu sau: P1 11111110 11111100 11111000 11110000 11100000 11000000 10000000 00000000 11111111 Lưu ý: thực hiện hàm Wait với thời gian chính xác 1 s. BÀI TẬP 2 : Viết chương trình đìêu khiển hệ thống quảng cáo điện tử chạy tự động với nhiều chế độ hiển thị khác nhau. BÀI TẬP 3 : Viết chương trình đìêu khiển hệ thống quảng cáo điện tử hiển thị bán tự động với nhiều chế độ khác nhau (cho phép người sử dụng lựa chọn các chế độ hiển thị khác nhau). BÀI TẬP 4 : Viết chương trình đìêu khiển hiển thị LED 7 thanh (đếm tiến từ 0 đến F). Quá trình hiển thị được lặp đi lặp lại nhiều lần. BÀI TẬP 5 : Viết chương trình đìêu khiển LED 7 thanh hiển thị theo sơ đồ khối sau: Đếm tiến Đếm lùi Start BÀI TẬP 6 : Viết chương trình đìêu khiển LED 7 thanh hiển thị theo các yêu cầu sau: - Nếu INT0=0 thì hiển thị số 0, - Nếu INT0=1 thì hiển thị số 1. BÀI TẬP 7 : Viết chương trình đìêu khiển LED 7 thanh hiển thị theo các yêu cầu sau: - Nếu INT0=0 thì hiển thị số 0, INT0=1 thì hiển thị số 1. - Nếu INT1=0 thì hiển thị, INT1=1 thì không hiển thị. BÀI TẬP 8 : Viết chương trình đìêu khiển LED 7 thanh hiển thị theo các yêu cầu sau: - Nếu INT1=0 thì hiển thị, INT1=1 thì không hiển thị. - Nếu INT0=0 thì hiển thị số 0 nhấp nháy, INT0=1 thì hiển thị số 1 nhấp nháy. BÀI TẬP 9 : Viết chương trình đìêu khiển LED 7 thanh hiển thị theo các yêu cầu sau: - Nếu INT1=0 thì hiển thị, INT1=1 thì không hiển thị. - Nếu INT0=0 thì đếm lùi, INT0=1 thì đếm tiến. - Chỉ thay đổi khi thực hiện xong việc gọi bảng số liệu. BÀI TẬP 10 : Viết chương trình đìêu khiển LED 7 thanh hiển thị theo các yêu cầu sau: - Nếu INT1=0 thì hiển thị, INT1=1 thì dừng. - Nếu INT0=0 thì đếm lùi, INT0=1 thì đếm tiến. - Chỉ thay đổi khi thực hiện xong việc gọi bảng số liệu. BÀI TẬP 11: Viết chương trình nạp giá trị hằng số (1) vào RAM ngoài tại vùng nhớ được định địa chỉ từ 1000h đến 10FFh . BÀI TẬP 12: Viết chương trình tạo tín hiệu âm thanh với tần số 500 Hz tại bit 0 của cổng P1. BÀI TẬP 13: Viết chương trình tạo tín hiệu âm thanh với tần số 500 Hz tại bit 0 của cổng P1, có giới hạn về mặt thời gian: âm thanh kéo dài 5 s sau đó tắt. BÀI TẬP 14: Viết chương trình để VXL thực hiện chức năng biến đổi A/D BÀI TẬP 15: Viết chương trình để VXL thực hiện chức năng biến đổi D/A TÀI LIỆU THAM KHẢO: The 8051 Microcontroller - I. Scott Mackenzie. The MCS*51 Microcontroller Family User’s Manuel - INTEL - 1994. The AT89 Family of Microcontrollers - ATMEL - 2003. Microcomputer Components – SAB80C515 8 bit Single-chip Microcontroller Family - SIEMENS - 1995. Mikrocomputertechnik – Prof.Dr.Ing. G.Schnell – Fachhochschule Frankfurt am Main - 2001. Kỹ thuật Vi xử lý - Văn Thế Minh - NXB GD - 1997. Kỹ thuật VXL & lập trình ASSEMBLY cho hệ VXL - Đỗ Xuân Tiến – NXB KH&KT - 2001. Họ VĐK 8051 - Tống Văn On & Hoàng Đức Hải - NXB LĐXH - 2001
Tài liệu liên quan