Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 222 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
222
Dung lượng
3,87 MB
Nội dung
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP KHOA ĐIỆN TỬ BỘ MÔN KỸ THUẬT MÁY TÍNH BÀI GIẢNG PHÁT CHO SINH VIÊN (LƯU HÀNH NỘI BỘ) Theo chương trình 150 TC thay 180 TC tương đương Sử dụng cho năm học 2011 – 2012 Tên giảng: Vi xử lý – Vi điều khiển Số tín chỉ: 03 BÀI GIẢNG PHÁT CHO SINH VIÊN (LƯU HÀNH NỘI BỘ) Theo chương trình 150 TC thay 180 TC tương đương Sử dụng cho năm học 2011 – 2012 Tên giảng: Vi xử lý – Vi điều khiển Số tín chỉ: 03 Trưởng môn Ths Nguyễn Tuấn Linh Thái Nguyên, ngày 01 tháng 07 năm 2011 Trưởng khoa Điện Tử PGS TS Nguyễn Hữu Công MỤC LỤC CHƯƠNG TỔNG QUAN VỀ VI XỬ LÝ – VI ĐIỀU KHIỂN 1.1 GIỚI THIỆU CHUNG VỀ VI XỬ LÝ – VI ĐIỀU KHIỂN 10 1.1.1 Tổng quan 10 1.1.2 Lịch sử phát triển xử lý 11 1.1.3 Vi xử lý vi điều khiển .12 1.1.4 Ứng dụng Vi xử lý – vi điều khiển 13 1.2 Cấu trúc chung hệ vi xử lý 15 1.2.1 Khối xử lý trung tâm (CPU) 16 1.2.2 Hệ thống bus 17 1.3 Định dạng liệu biểu diễn thông tin hệ vi xử lý – vi điều khiển 18 1.3.1 Các hệ đếm 18 1.3.2 Mã ký tự - Alphanumeric CODE (ASCII, EBCDIC) 20 1.3.3 Các phép toán số học hệ đếm nhị phân 22 CHƯƠNG HỌ VI XỬ LÝ INTEL 80x86 23 2.1 Cấu trúc phần cứng vi xử lý 8086 24 2.1.1 Tổng quan 24 2.1.2 Cấu trúc bên hoạt động .24 2.1.3 Mô tả chức chân .31 2.2 Chế độ địa .31 2.2.1 Khái niệm chế độ địa .31 2.2.2 Các chế độ địa 34 2.3 Tập lệnh Assembly 37 2.3.1 Giới thiệu chung 37 2.3.2 Các nhóm lệnh .38 2.4 Lập trình hợp ngữ (Assembly) cho vi xử lý 80x86 54 2.4.1 Giới thiệu chung hợp ngữ 54 2.4.2 Các bước lập trình 55 2.4.3 Cấu trúc chung chương trình hợp ngữ 57 2.4.4 Các cấu trúc điều khiển 69 2.4.5 Ngắt Assembly .72 2.4.6 Các ví dụ 74 2.5 Ghép nối nhớ thiết bi ngoại vi 80 2.5.1 Ghép nối nhớ 80 2.5.2 Giải mã địa .81 2.5.3 Ghép nối thiết bị ngoại vi 84 2.5.4 Các kiểu giao tiếp vào / .84 2.5.5 Giải mã địa cho thiết bị vào / .84 2.5.6 Các mạch cổng đơn giản .85 Vi mạch chốt 74LS373: .85 2.6 Câu hỏi tập 86 CHƯƠNG HỌ VI ĐIỀU KHIỂN 8051 89 3.1 Giới thiệu chung 90 3.1.1 Ứng dụng vi điều khiển 91 3.1.2 Hoạt động vi điều khiển 91 3.1.3 Cấu trúc chung vi điều khiển 92 3.2 Kiến trúc vi điều khiển 8051 .97 3.2.1 Chuẩn 8051 97 3.2.2 Chân vi điều khiển 8051 99 3.2.3 Cổng vào/ra 100 3.2.4 Tổ chức nhớ 8051 104 3.2.5 Các ghi chức đặc biệt (SFRs - Special Function Registers) 109 3.2.6 Bộ đếm định thời 113 3.2.7 Truyền thông không đồng (UART) 113 3.2.8 Ngắt vi điều khiển 8051 114 3.3 Lập trình hợp ngữ cho 8051 114 3.3.1 Các chế độ địa 114 3.3.2 Tập lệnh 8051 116 3.3.3 Cấu trúc chung chương trình hợp ngữ cho 8051 123 3.4 Bộ đếm định thời 126 3.5 Truyền thông nối tiếp 133 3.6 Xử lý ngắt 140 3.7 Câu hỏi tập cuối chương 147 CHƯƠNG ỨNG DỤNG 151 4.1 Nhấp nháy dãy LED đơn 152 4.2 Timer 155 4.3 Sử dụng Timer T2 157 4.4 Dùng ngắt 158 4.5 Lập trình ngắt theo sườn xuống 159 4.6 Sử dụng LED 160 4.6.1 Hiển thị số LED 160 4.6.2 Hiển thị nhiều LED 161 4.7 Thông báo văn hình LCD 164 4.8 Nhận liệu qua UART 169 4.9 Truyền liệu qua UART 170 4.10 Chương trình phục vụ truyền thông nối tiếp 172 4.11 Truyền thông UART cho 8051 phần mềm 172 4.12 Ghép nối 8051 với ADC0804, chuyển đổi ADC 8-bit 175 4.13 Ghép nối vi điều khiển với bàn phím 177 4.14 Ghép nối vi điều khiển với step motor 179 CHƯƠNG CÁC HỆ VI ĐIỀU KHIỂN TIÊN TIẾN 191 5.1 Atmel AVR 192 5.1.1 Lịch sử họ AVR 192 5.1.2 Tổng quan thiết bị 192 5.1.3 Kiến trúc thiết bị 193 5.1.4 Program Memory (Flash) 193 5.1.5 EEPROM 193 5.1.6 Chương trình thực thi 194 5.1.7 Tập lệnh 194 5.1.8 Tốc độ MCU 195 5.1.9 Những đặc tính 195 5.2 Vi điều khiển PIC 197 5.3 ARM 200 Tài liệu tham khảo 205 PHỤ LỤC A: Tập lệnh 8051 206 PHỤ LỤC B: Chi tiết ghi chức 8051 210 PHỤ LỤC C: Ngắt 216 Danh mục hình ảnh 218 Danh mục mã nguồn 220 Danh mục bảng 220 Chỉ mục 221 ĐẠI HỌC THÁI NGUYÊN CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC Độc lập - Tự - Hạnh phúc KỸ THUẬT CÔNG NGHIỆP CHƯƠNG TRÌNH GIÁO DỤC ĐẠI HỌC NGÀNH ĐÀO TẠO: ĐIỆN – ĐIỆN TỬ, SPKT ĐIỆN – TIN, CƠ ĐIỆN TỬ CHUYÊN NGÀNH: KHỐI NGÀNH ĐIỆN – ĐIỆN TỬ ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN: VI XỬ LÝ – VI ĐIỀU KHIỂN (Học phần bắt buộc) Tên học phần: Vi xử lý – vi điều khiển Số tín chỉ: 03; 3(3; 1,5; 6)/12 Trình độ cho sinh viên năm thứ: (Điện, Điện tử, SPKT Điện, SPKT Tin) (Cơ điện tử) Phân bổ thời gian - Lên lớp lý thuyết: (tiết/tuần) x 12 (tuần) = 36 tiết - Thảo luận: 1,5 (tiết/tuần) x 12 (tuần) = 18 tiết Các học phần học trước Kỹ thuật điện tử số Học phần thay thế, học phần tương đương Vi xử lý – vi điều khiển (trong chương trình 180 TC 260 ĐVHT) Mục tiêu học phần Sau học xong học phần sinh viên phải nắm cấu trúc phần cứng vi xử lý – vi điều khiển tiêu biểu: x86, 8051; Tổ chức nhớ, tập lệnh, chế độ địa lập trình cho chúng; Biết cách ghép nối với nhớ thiết bị ngoại vi; Biết khai thác khả ngắt định thời Có khả thiết kế xây dựng modul (bao gồm phần cứng phần mềm) sử dụng vi điều khiển cho toán cụ thể Mô tả vắn tắt nội dung học phần Tổng quan hệ đếm biểu diễn thông tin hệ vi xử lý – vi điều khiển Vi xử lý: Tổng quan kiến trúc hệ vi xử lý; tổ chức phần cứng CPU họ Intel 80x86, chế độ đánh địa chỉ, tập lệnh, lập trình hợp ngữ (assembly) cho 80x86 với toán đơn giản; số vi mạch phụ trợ hệ vi xử lý Vi điều khiển: Cấu trúc hệ vi điều khiển onchip MCS 8051; lập trình hợp ngữ cho vi điều khiển; hoạt động định thời, ngắt truyền thông nối tiếp; giới thiệu số họ vi xử lý thông dụng khác Giới thiệu số toán ứng dụng tiêu biểu Nhiệm vụ sinh viên Dự lớp ≥ 80 % tổng số thời lượng học phần Chuẩn bị thảo luận Bài tập, Bài tập lớn (dài): Không 10 Tài liệu học tập - Sách, giáo trình chính: [1] Bài giảng “Vi xử lý – vi điều khiển” - Sách tham khảo: [1] Văn Thế Minh, Kỹ thuật vi xử lý, NXB KHKT, 1997 [2] Tống Văn On, Họ vi điều khiển 8051, NXB KH&KT, 2005 [3] Nguyễn Tăng Cường, Phan Quốc Thắng, Cấu trúc lập trình họ vi điều khiển 8051, NXB KH&KT, 2004 [4] Michael Hordeski, Personal Computer Interfaces, Mc Graw Hill, 1995 [5] http://picat.dieukhien.net 11 Tiêu chuẩn đánh giá sinh viên thang điểm 11.1 Các học phần lý thuyết • Tiêu chuẩn đánh giá Chuyên cần; Thảo luận, tập; Bài tập lớn (dài); Kiểm tra học phần; Thi kết thúc học phần; Khác • Thang điểm - Điểm đánh giá phận chấm theo thang điểm 10 với trọng số sau: + Kiểm tra học phần: 20 % + Điểm thi kết thúc học phần: 80 % 12 Nội dung chi tiết học phần lịch trình giảng dạy Người biên soạn: ThS Nguyễn Tuấn Anh ThS Nguyễn Tuấn Linh ThS Nguyễn Văn Huy Th.S Tăng Cẩm Nhung Th.S Phùng Thị Thu Hiền ThS Nguyễn Tiến Duy Tuần thứ Nội dung Chương I: Tổng quan vi xử lý – vi điều khiển 1.1 Giới thiệu chung vi xử lý – vi điều khiển 1.1.1 Tổng quan 1.1.2 Lịch sử phát triển xử lý 1.1.3 Vi xử lý vi điều khiển 1.2 Cấu trúc chung hệ vi xử lý 1.2.1 Khối xử lý trung tâm (CPU) 1.2.2 Bộ nhớ (Memory) 1.2.3 Khối phối ghép vào/ra (I/O) 1.2.4 Hệ thống bus 1.3 Định dạng liệu biểu diễn thông tin hệ vi xử lý – vi điều khiển 1.3.1 Các hệ đếm 1.3.2 Biểu diễn số ký tự 1.3.3 Các phép toán số học hệ đếm nhị phân Chương II: Họ vi xử lý Intel 80x86 2.1 Cấu trúc phần cứng vi xử lý 8086 2.1.1 Tổng quan 2.1.2 Cấu trúc bên hoạt động 2.1.3 Các chế độ địa 2.2 Tập lệnh 2.2.1 Giới thiệu chung 2.2.2 Các nhóm lệnh 2.3 Biểu đồ thời gian ghi/đọc 2.4 Lập trình hợp ngữ (Assembly) cho vi xử lý 80x86 2.4.1 Giới thiệu chung hợp ngữ 2.4.2 Cấu trúc chương trình hợp ngữ Tài liệu học tập, tham khảo Hình thức học [1] - [4] Giảng [1] - [4] Giảng [1] - [4] Giảng [1] - [4] Giảng 10 11 12 2.4.3 Các cấu trúc điều khiển 2.4.4 Các bước lập trình 2.4.5 Các tập ví dụ Thảo luận Chương III: Hệ vi điều khiển onchip MCS 8051 3.1 Giới thiệu chung vi điều khiển 3.1.1 Giới thiệu chung 3.1.2 Khái niệm vi điều khiển 3.1.3 Cấu trúc chung vi điều khiển 3.2 Kiến trúc vi điều khiển 8051 Kiến trúc vi điều khiển 8051 (tiếp) Kiểm tra kỳ 3.3 Tập lệnh 8051 lập trình hợp ngữ cho 8051 3.3.1 Tập lệnh 8051 3.3.2 Thành phần ngôn ngữ assembly 3.4 Kiến trúc vi điều khiển 8051 Thảo luận [1] - [4] Giảng [1] - [4] Giảng [1] - [4] Giảng [1] - [4] Giảng Thảo luận Giảng Thảo luận Giảng Thảo luận [1] - [4] [1] - [4] 14 Kiến trúc vi điều khiển 8051 (tiếp) Chương IV: Ứng dụng Thảo luận Chương V: Các hệ VĐK tiên tiến 15 Thảo luận [1] - [4] 13 [1] - [4] [1] - [4] Bài giảng Vi xử lý - Vi điều khiển Chương Tổng quan vi xử lý – vi điều khiển CHƯƠNG TỔNG QUAN VỀ VI XỬ LÝ – VI ĐIỀU KHIỂN Mục tiêu: Giúp sinh viên hiểu lịch sử đời hệ vi xử lý – vi điều khiển; khái niệm, cấu tạo nguyên lý hệ vi xử lý – vi điều khiển; ôn lại kiến thức hệ thống số đếm Tóm tắt chương: Chương chia làm phần: Giới thiệu chung vi xử lý – vi điều khiển Tổng quan Lịch sử phát triển xử lý Vi xử lý vi điều khiển Cấu trúc chung hệ vi xử lý Khối xử lý trung tâm (CPU) Bộ nhớ (Memory) Khối phối ghép vào/ra (I/O) Hệ thống bus Định dạng liệu biểu diễn thông tin hệ vi xử lý – vi điều khiển Các hệ đếm Biểu diễn số ký tự Các phép toán số học hệ đếm nhị phân Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp Bài giảng Vi xử lý - Vi điều khiển Chương Tổng quan vi xử lý – vi điều khiển 1.1 GIỚI THIỆU CHUNG VỀ VI XỬ LÝ – VI ĐIỀU KHIỂN 1.1.1 Tổng quan Vi xử lý (viết tắt µP hay uP), gọi vi xử lý, linh kiện điện tử chế tạo từ tranzito thu nhỏ tích hợp lên vi mạch tích hợp đơn Khối xử lý trung tâm (CPU) vi xử lý nhiều người biết đến nhiều thành phần khác máy tính có vi xử lý riêng nó, ví dụ card hình (video card) có vi xử lý Hình 1-1.Bộ vi xử lý Intel 80486DX2 Trước xuất vi xử lý, CPU xây dựng từ mạch tích hợp cỡ nhỏ riêng biệt, mạch tích hợp chứa khoảng vào chục tranzito Do đó, CPU bảng mạch gồm hàng ngàn hay hàng triệu vi mạch tích hợp Ngày nay, công nghệ tích hợp phát triển, CPU tích hợp lên vài vi mạch tích hợp cỡ lớn, vi mạch tích hợp cỡ lớn chứa hàng ngàn hàng triệu tranzito Nhờ công suất tiêu thụ giá thành vi xử lý giảm đáng kể Vi điều khiển máy tính tích hợp chíp, thường sử dụng để điều khiển thiết bị điện tử Vi điều khiển, thực chất, hệ thống bao gồm vi xử lý có hiệu suất đủ dùng giá thành thấp (khác với vi xử lý đa dùng máy tính) kết hợp với khối ngoại vi nhớ, mô đun vào/ra, mô đun biến đổi số sang tương tự tương tự sang số, Ở máy tính mô đun thường xây dựng chíp mạch Vi điều khiển thường dùng để xây dựng hệ thống nhúng Nó xuất nhiều dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại, đầu đọc DVD, thiết bị đa phương tiện, dây chuyền tự động, v.v Hầu hết vi điều khiển ngày xây dựng dựa kiến trúc Harvard, kiến trúc định nghĩa bốn thành phần cần thiết hệ thống nhúng Những thành phần lõi CPU, nhớ chương trình (thông thường ROM nhớ Flash), nhớ liệu (RAM), vài định thời cổng vào/ra để giao tiếp với thiết bị ngoại vi môi trường bên - tất khối thiết kế vi mạch tích hợp Vi điều khiển khác với vi xử lý đa chỗ hoạt động với vài vi mạch hỗ trợ bên 10 Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp Bài giảng Vi xử lý - Vi điều khiển Cú pháp STT Mã lệnh Toán hạng 12 MOV Bit,C 13 JC 14 JNC Bit, 15 JB Bit, 16 JNB Bit, 17 JBC Bit, Các lệnh điều khiển chương trình Cú pháp STT Mã lệnh Toán hạng ACALL LCALL RET RETI AJMP LJMP SJMP JMP @A+DPTR 10 JZ JNZ 11 CJNE A,direct, 12 CJNE A,#data, 13 208 Rn,#data, Phụ lục Mô tả Bit = C nhảy đến nhãn C = nhảy đến nhãn bit= nhảy đến nhãn bit= nhảy đến nhãn bit= nhảy đến nhãn bit = sau xóa bit Mô tả gọi chương trình (nằm phạm vi 2k mem) gọi chương trình (trong pham vi 64k mem) trở từ chương trình trở từ chương trình phục vụ ngắt nhảy đến nhãn (trong phạm vi 2k mem) nhảy đến nhãn (trong phạm vi 64 mem) nhảy đến nhãn nhảy đến địa = A+DPTR nhảy đến nhãn A = nhảy đến nhãn A #0 So sánh nhảy đến nhãn A # direct So sánh nhảy đến nhãn A#data So sánh nhảy đến Số byte Số chu kỳ 2 2 3 3 Số byte Số chu kỳ 3 2 2 2 2 2 2 3 Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp Bài giảng Vi xử lý - Vi điều khiển Cú pháp STT Mã lệnh Toán hạng 14 @Ri,#data, 15 DJNZ Rn, 16 DJNZ direct, 17 NOP Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp Mô tả nhãn Rn#data So sánh nhảy đến nhãn byte có địa = Ri có nội dung khác với data Giảm Rn nhảy đến nhãn chưa giảm Giảm direct nhảy đến nhãn chưa giảm Không làm Phụ lục Số Số chu byte kỳ 2 1 209 Bài giảng Vi xử lý - Vi điều khiển Phụ lục PHỤ LỤC B: Chi tiết ghi chức 8051 Bản tóm tắt chức ghi Thanh ghi IE: IE: Interrupt Enable, cho phép ngắt: ghi cho phép/cấm ngắt hoạt động EA ET2 ES ET1 EX1 ET0 EX0 Thanh ghi TCON: TCON Register - TCON (S:88h) TCON: Timer/Counter Control Register: ghi điều khiển đếm/bộ định thời TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Thanh ghi TMOD: TMOD Register - TMOD (S: 89h) TMOD: Timer/Counter and Modes: ghi đặt chế độ cho Timer/Counter GATE1 C/T1# M11 M01 GATE0 C/T0# M10 M00 Thanh ghi T2CON: T2CON Register - T2CON (S:C8h) Thanh ghi điều khiển Timer/Counter TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2# CP/RL2# Thanh ghi T2MOD: T2MOD Register - T2MOD (S:C9h) Thanh ghi điều khiển Timer/Counter - - - - - - T2OE Thanh ghi SCON SCON: Serial Controller: ghi cấu hình truyền thông nối tiếp FE/SM0 SM1 SM2 REN TB8 Thanh ghi PCON: PCON Register PCON - Power Control Register (87h): Thanh ghi điều khiển nguồn SMOD1 SMOD0 POF GF1 GF0 210 RB8 DCEN TI PD RI IDL Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp Bài giảng Vi xử lý - Vi điều khiển Diễn giải ý nghĩa ghi: Thanh ghi phục vụ lập trình ngắt: Thanh ghi IE: Interrupt Enable: Cho phép ngắt: EA -ET2 ES Phụ lục ET1 EX1 ET0 EX0 Nếu lập bít =1 cho phép ngắt, đặt cấm ngắt ¾ EA: Enable All : cho phép ngắt tất cả, phải đặt bít 1, ngắt khác phép hoạt động Muốn ngắt hoạt động cho phép ngắt theo bit ¾ ET2: Enable Timer 2: cho phép Timer hoạt động ¾ ES: Enable Serial: Cho phép ngắt nối tiếp ¾ ET1: Enable Timer 1: cho phép Timer hoạt động ¾ EX1: Enable eXternal: cho phép ngắt ¾ ET0: Enable Timer 0: cho phép Timer hoạt động ¾ EX0: Enable eXternal: cho phép ngắt Thanh ghi TCON: TCON Register - TCON (S:88h) Timer/Counter Control Register TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Bit thứ Ký hiệu Ý nghĩa Cờ tràn Timer TF1 Được xóa phần cứng vi xử lý nhảy đến chương trình ngắt Lập phần cứng Timer / Counter tràn Bit điều khiển chạy Timer TR1 Xóa để cấm chạy timer/counter Lập để chạy timer/counter Cờ tràn Timer TF0 Xóa phần cứng chạy chương trình ngắt Lập phần cứng ghi timer/counter tràn Bit điều khiển chạy Timer TR0 Xóa để cấm chạy timer/counter Lập để chạy timer/counter Cờ cạnh ngắt IE1 Xóa phần cứng ngắt vi xử lý, đặt ngắt cạnh (sườn) Lập phần cứng ngắt phát chân INT1 Bit điều khiển loại ngắt IT1 Xóa: Ngắt theo mức thấp cho ngắt (INT1) Lập : Ngắt theo cạnh xuống (sườn xuống) cho ngắt (INT1) Cờ cạnh ngắt IE0 Xóa phần cứng ngắt vi xử lý, đặt ngắt cạnh (sườn) Lập phần cứng ngắt phát chân INT0 Bit điều khiển loại ngắt 0 IT0 Xóa: Ngắt theo mức thấp cho ngắt (INT0) Lập : Ngắt theo cạnh xuống (sườn xuống) cho ngắt (INT0) Giá trị sau reset = 0000 0000b Mode: chế độ Timer : Bộ định thời, Counter: Bộ đếm Thanh ghi TMOD: TMOD Register - TMOD (S: 89h) Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp 211 Bài giảng Vi xử lý - Vi điều khiển Phụ lục TMOD - Timer/Counter and Modes GATE1 C/T1# M11 Bit thứ Ký hiệu GATE1 C/T1# M11 M01 M01 GATE0 C/T0# M10 M00 Ý nghĩa Bit điều khiển cổng Timer Xóa phép timer bit TR1 lập Lập phép timer chân INT1# mức bit TR1 lập Bit lựa chọn Counter/Timer Xóa: Timer hoạt động: Bộ định thời, đếm tăng theo xung nhịp hệ thống Lập: Counter hoạt động: Bộ đếm, đếm tăng theo sườn xuống chân T1 Các bit chọn chế độ cho Timer M11 M01 Chế độ hoạt động 0 Mode 8-bit Timer/Counter (TH1) với 5-bit(TL1) Mode 16-bit Timer/Counter Mode 8-bit Timer/Counter (TL1) tự nạp lại giá trị từ TH1 Timer/Counter tràn 1 Mode Timer dừng Bit điều khiển cổng Timer GATE0 Xóa phép timer bit TR0 lập Lập phép timer chân INT0# mức bit TR0 lập Bit lựa chọn Counter/Timer C/T0# Xóa: Timer hoạt động: Bộ định thời, đếm tăng theo xung nhịp hệ thống Lập: Counter hoạt động: Bộ đếm, đếm tăng theo sườn xuống chân T0 Các bit chọn chế độ cho Timer M10 M00 Chế độ hoạt động M10 0 Mode 8-bit Timer/Counter (TH0) với 5-bit(TL0) Mode 16-bit Timer/Counter Mode 8-bit Timer/Counter (TL0) tự nạp lại giá trị từ TH0 Timer/Counter tràn M00 1 Mode TL0 Timer/Counter bit TH0 Timer 8bit sử dụng Timer bit TR0 TF0 Giá trị sau reset = 0000 0000b Khi Timer Mode 3, Timer bật tắt cách chuyển khỏi vào Mode 3, dùng để tạo tốc độ Baud (đọc bơ-u-d) cho cổng truyền thông nối tiếp, thực tế, số ứng dụng không dùng ngắt 212 Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp Bài giảng Vi xử lý - Vi điều khiển Phụ lục Thanh ghi T2CON: T2CON Register - T2CON (S:C8h) Thanh ghi điều khiển Timer TF2 Bit thứ Ký hiệu TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2# EXF2 RCLK TCLK EXEN2 TR2 C/T2# CP/RL2# Ý nghĩa Cờ tràn Timer TF2 không lập RCLK=1 TCLK=1 Phải xóa phần mềm Lập phần cứng Timer tràn Cờ ngắt Timer Lập có cạnh xuống chân T2EX, EXEN2=1 Nếu ngắt Timer hoạt động, mức bit này, chương trình gọi ngắt Phải xóa phần mềm Bit clock nhận Xóa để sử dụng cờ tràn Timer làm xung clock nhận cho truyền thông nối tiếp Mode Lập để sử dụng cờ tràn Timer làm xung clock nhận cho truyền thông nối tiếp Mode Bit clock truyền Xóa để sử dụng cờ tràn Timer làm xung clock phát cho truyền thông nối tiếp Mode Lập để sử dụng cờ tràn Timer làm xung clock phát cho truyền thông nối tiếp Mode Bit cho phép ngắt Timer Xóa để bỏ qua kiện chân T2EX cho hoạt động Timer Lập xảy ngắt chân T2EX có sườn xuống, Timer không sử dụngcho truyền thông nối tiếp Bit điều khiển chạy Timer Xóa : cấm Timer chạy Lập: chạy Timer Bit lựa chọn Timer/Counter Xóa: Timer (nguồn xung hệ thống: Fosc) Lập: Counter (đầu vào từ chân T2) Bit capture/Reload Timer Nếu RCLK=1 TCLK=1, CP/RL2# bị bỏ qua Timer chạy chế độ tự nạp lại tràn CP/RL2# Xóa: để tự nạp lại Timer tràn có sườn xuống chân T2EX EXEN2=1 Lập để bắt giữ (capture) có cạnh xuống chân T2EX EXEN2=1 Giá trị sau reset = 0000 0000b Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp 213 Bài giảng Vi xử lý - Vi điều khiển Phụ lục Thanh ghi T2MOD: T2MOD Register - T2MOD (S:C9h) Thanh ghi chọn chế độ cho Timer Bit thứ Ký hiệu - - - - - T2OE DCEN Ý nghĩa - Dự trữ Dự trữ Dự trữ Dự trữ Dự trữ Dự trữ Bit cho phép xuất Timer T2OE Xóa để lập trình P1.0/T2 đầu vào clock cổng I/O Lập để lập trình P1.0/T2 đầu clock Bit cho phép đếm lùi DCEN Xóa: cấm Timer đếm tăng/giảm Lập: cho phép Timer đếm tăng/giảm Giá trị sau reset = xxxx xx00b Thanh ghi SCON FE/SM0 SM1 SM2 REN TB8 RB8 TI RI Bit thứ Ký hiệu FE SM0 SM1 SM2 REN TB8 214 Ý nghĩa FE: Framing Error bit: bit báo truyền thông lỗi (SMOD0=1) Xóa để reset trạng thái lỗi, không xóa bit STOP Lập phần cứng phát lỗi bit STOP không SMOD0 phải lập phép truy cập đến bit FE Chế độ truyền thông nối tiếp SM0 SM1 Mode Ý nghĩa Tốc độ Baud 0 Thanh ghi dịch FCPU PERIPH/6 1 8-bit UART Có thể thay đổi 9-bit UART FCPU PERIPH/32 /16 1 39-bit UART Có thể thay đổi Bit Mode cổng nối tiếp / Bit cho phép truyền thông đa vi xử lý Xóa để cấm chức truyền thông đa vi xử lý Lập phép chế độ truyền thông đa vi xử lý Mode 3, chí Mode Bit phải xóa dùng Mode Bit cho phép nhận ( Reception Enable bit) Xóa: cấm nhận nối tiếp Lập: cho phép nhận nối tiếp Phát bit / bit thứ để truyền thông Mode Xóa: truyền bit logic bit thứ Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp Bài giảng Vi xử lý - Vi điều khiển Phụ lục Lập: truyền bit logic bit thứ Nhận bit / nhận bit thứ mode Xóa phần cứng bit thứ nhận logic RB8 Lập phần cứng bit thứ nhận logic Trong mode1, SM2=0, RB8 bit STOP nhận Trong mode RB8 không sử dụng Cờ ngắt truyền Xóa để chấp nhận ngắt TI Lập phần cứng thời gian cuối bit thứ mode bắt đầu bit STOP mode khác Cờ ngắt nhận Xóa để chấp nhận ngắt RI Lập phần cứng thời gian cuối bit thứ mode Xem hình để biết thêm mode khác Giá trị sau reset = 0000 0000b Thanh ghi PCON: PCON Register PCON - Power Control Register (87h) SMOD1 SMOD0 - POF GF1 GF0 PD Bit thứ Ký hiệu Ý nghĩa SMOD1 Chế độ cổng nối tiếp, bit cho USART Lập để lựa chọn tốc độ Baud gấp đôi mode 1,2 IDL Chế độ cổng nối tiếp, bit cho USART SMOD0 Xóa để lựa chọn bit SM0 ghi SCON Lập để lựa chọn bit FE ghi SCON Dự trữ ⎯ Cờ tắt nguồn: Power Off Flag Xóa để nhận biết kiểu reset lần POF Lập phần cứng VCC tăng từ lên điện áp bình thường đặt phần mềm GF1 Cờ mục đích chung, lập, xóa tùy lập trình viên GF0 Cờ mục đích chung, lập, xóa tùy lập trình viên Bit chế độ nguồn giảm PD Xóa phần cứng xảy reset Lập để vào chế độ nguồn giảm Bit chế độ IDL Xóa phần cứng xảy ngắt reset IDL Lập để vào chế độ nghỉ (IDLE) Giá trị sau reset = 00X1 0000b Không thể định địa bit Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp 215 Bài giảng Vi xử lý - Vi điều khiển Phụ lục PHỤ LỤC C: Ngắt INT 21h / AH=1 - read character from standard input, with echo, result is stored in AL if there is no character in the keyboard buffer, the function waits until any key is pressed example: mov ah, int 21h INT 21h / AH=2 - write character to standard output entry: DL = character to write, after execution AL = DL example: mov ah, mov dl, 'a' int 21h INT 21h / AH=5 - output character to printer entry: DL = character to print, after execution AL = DL example: mov ah, mov dl, 'a' int 21h INT 21h / AH=6 - direct console input or output parameters for output: DL = 254 (ascii code) parameters for input: DL = 255 for output returns: AL = DL for input returns: ZF set if no character available and AL = 00h, ZF clear if character available AL = character read; buffer is cleared example: mov ah, mov dl, 'a' ; output character int 21h mov ah, mov dl, 255 int 21h ; get character from keyboard buffer (if any) or set ZF=1 216 Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp Bài giảng Vi xử lý - Vi điều khiển Phụ lục INT 21h / AH=7 - character input without echo to AL if there is no character in the keyboard buffer, the function waits until any key is pressed example: mov ah, int 21h INT 21h / AH=9 - output of a string at DS:DX String must be terminated by '$' example: org 100h mov dx, offset msg mov ah, int 21h ret msg db "hello world $" INT 21h / AH=0Ah - input of a string to DS:DX fist byte is buffer size, second byte is number of chars actually read this function does not add '$' in the end of string to print using INT 21h / AH=9 you must set dollar character at the end of it and start printing from address DS:DX + example: org 100h mov dx, offset buffer mov ah, 0ah int 21h jmp print buffer db 10,?, 10 dup(' ') print: xor bx, bx mov bl, buffer[1] mov buffer[bx+2], '$' mov dx, offset buffer + mov ah, int 21h ret the function does not allow to enter more characters than the specified buffer size see also int21.asm in c:\emu8086\examples Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp 217 Danh mục hình ảnh Hình 1-2 Lịch sử phát triển VXL 11 Hình 1-3 Sơ đồ khối máy tính cổ điển 15 Hình 1-4 Sơ đồ khối hệ vi xử lý 16 Hình 1-5 Khối xử lý trung tâm 17 Hình 1-6.LED cách mã hóa 18 Hình 1-7 Bảng mã ASCII 20 Hình 1-8 Bảng mã ASCII có ký tự phần mở rộng 21 Hình 2-1.Tổng quan phần cứng xử lý 24 Hình 2-2.Sự hoạt động CPU 25 Hình 2-3.Sơ đồ khối bên 8086 26 Hình 2-4 Sơ đồ chân 8086/8088 31 Hình 2-5 Emu8086 - Môi trường soạn thảo 56 Hình 2-6 Emu8086 - Giá trị cờ hình hiển thị 56 Hình 2-7 Emu8086 - Màn hình Debug chương trình 57 Hình 2-8 Giao tiếp bus 81 Hình 2-9 Quan hệ giải mã địa nhớ 81 Hình 2-10 Mắc nối tầng nhiều 74LS138 82 Hình 2-11 Ghép nối VXL với nhớ 82 Hình 2-12 Định thời ghi nhớ 83 Hình 2-13 Định thời đọc nhớ 83 Hình 2-14 Giải mã cho cổng 84 Hình 2-15 Vi mạch 74LS245 85 Hình 2-16 Vi mạch chốt 74LS373 85 Hình 3-1 Cấu trúc chung họ VĐK 92 Hình 3-2 Giao tiếp nhớ 93 Hình 3-3 Vào với thiết bị ngoại vi 95 Hình 3-4 ghép nối dao động 95 Hình 3-5 Bộ định thời/đếm 96 Hình 3-6 Truyền nhận nối tiếp 96 Hình 3-7.Kiến trúc vi điều khiển 8051 97 Hình 3-8 Sơ đồ chân VĐK AT89C51 99 Hình 3-9 Cổng vào/ra 100 Hình 3-10 Xuất mức 101 Hình 3-11 Trở treo nội chân 101 Hình 3-12 xuất mức 101 Hình 3-13 – Sơ đồ kết nối thạch anh 104 Hình 3-14 Các vùng nhớ AT89C51 104 Hình 3-15 Thực thi nhớ chương trình 108 Hình 3-16 - Ghép nối RS232 với 8051 113 Hình 3-17 Các ghi Timer 126 Hình 3-18 Các ghi Timer 127 Hình 3-19 Timer TMOD 127 Hình 3-20 Timer – Mode 130 Hình 3-21 Timer – Mode 130 Hình 3-22 Timer – Mode 130 Hình 3-23 Timer – Mode 131 Hình 3-24 Truyền thông 133 Hình 3-25 Ghép nối RS232 với 8051 135 Hình 3-26 Truyền thông nối tiếp – Mode 136 Hình 3-27 Giản đồ thời gian truyền nối tiếp – Mode 137 218 Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp Hình 3-28 Giản đồ thời gian nhận nối tiếp – Mode 137 Hình 3-29 Truyền nhận nối tiếp – Mode 137 Hình 3-30 Giản đồ thời gian truyền nối tiếp – Mode 137 Hình 3-31 Giản đồ thời gian nhận nối tiếp – Mode 138 Hình 3-32 Giản đồ thời gian truyền nối tiếp – Mode 138 Hình 3-33 Giản đồ thời gian nhận nối tiếp – Mode 138 Hình 3-34 Các tín hiệu điều khiển ngắt 142 Hình 3-35 Bảng vector ngắt ví dụ 143 Hình 4-1 Mạch nhấp nháy LED đơn 152 Hình 4-2 Mạch nhấp nháy LED đơn mô 152 Hình 4-3 Thuật toán: Nhấp nháy P1 154 Hình 4-4 Thuật toán: Nhấp nháy P1-Macro 154 Hình 4-5 Thuật toán: Nhấp nháy P1.0 155 Hình 4-6 Thuật toán: TIMER0 155 Hình 4-7 Thuật toán: Ngắt Timer Timer1 156 Hình 4-8 Sử dụng Timer 157 Hình 4-9 Lập trình ngắt 158 Hình 4-10 Lập trình ngắt – bật loa 159 Hình 4-11 Hiển thị LED 160 Hình 4-12.Sơ đồ chân LED 162 Hình 4-13 Sơ đồ hiển thị LCD thực 164 Hình 4-14 Sơ đồ hiển thị LCD mô 164 Hình 4-15 Ghép nối VĐK với máy tính 169 Hình 4-16 Nhận liệu nối tiếp – mô 170 Hình 4-17 Truyền liệu nối tiếp – mô 171 Hình 4-18 Sơ đồ chân ADC0804 175 Hình 4-19 Giản đồ thời gian đọc ADC 175 Hình 4-20 Mạch nguyên lý mô chuyển đổi ADC0804 176 Hình 4-21.Cách ghép nối bàn phím mô phỏng- phím đơn ghép lại 177 Hình 4-22.Cách ghép nối bàn phím mô – dùng module bàn phím 177 Hình 4-23 Cấu tạo động bước 179 Hình 4-24 Sơ đồ khối tổng thể toàn hệ thống 184 Hình 4-25 Sơ đồ tương tác hệ thống cảnh báo áp suất 185 Hình 4-26 186 Hình 4-27 186 Hình 4-28 Mạch cảm biến 186 Hình 4-29 Khuếch đại lọc nhiễu 186 Hình 4-30 Bàn phím 186 Hình 4-31 187 Hình 4-32 187 Hình 4-33 Hiển thị LCD 187 Hình 4-34 Bàn phím 187 Hình 4-35 Khối điều khiển trung tâm 188 Hình 4-36 Sơ đồ Callgraph 188 Hình 5-1 - Atmel AVR ATmega8 PDIP 192 Hình 5-2 – Các dòng PIC 197 Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp 219 Danh mục mã nguồn Mã nguồn 4-1 Delay 153 Mã nguồn 4-2 DelayX 153 Mã nguồn 4-3 Nhấp nháy cổng P1 154 Mã nguồn 4-4 Nhấp nháy cổng P1và đảo trạng thái P2.0 154 Mã nguồn 4-5 Nhấp nháy P1.0 155 Mã nguồn 4-6 Timer0 tạo xung PWM 155 Mã nguồn 4-7 Timer0 Timer1 tạo xung PWM dùng ngắt 156 Mã nguồn 4-8 Sử dụng Timer 158 Mã nguồn 4-9 Lập trình ngắt 159 Mã nguồn 4-10 Lập trình ngắt – bật loa 160 Mã nguồn 4-11 Hiển thị LED -1 161 Mã nguồn 4-12 Hiển thị LED - 163 Mã nguồn 4-13 Hiển thị nhiều LED 163 Mã nguồn 4-14 Hiển thị LCD 169 Mã nguồn 4-15 Nhận liệu nối tiếp 170 Mã nguồn 4-16 Truyền liệu nối tiếp 171 Mã nguồn 4-17 Các CTC Truyền-Nhận liệu nối tiếp 172 Mã nguồn 4-18 CTC truyền thông nối tiếp phần mềm 175 Mã nguồn 4-19 Chuyển đổi ADC (VĐK-ADC0804) 176 Mã nguồn 4-20 Đọc ma trận phím 179 Mã nguồn 4-21 Điều khiển động bước 180 Mã nguồn 4-22 Chương trình đo nhiệt độ 183 Mã nguồn 4-23 Lập trình cho VĐK tiên tiến 189 Danh mục bảng Bảng 1-1 Giá trị tương ứng hệ số 19 Bảng 2-1 Các ghi 28 Bảng 2-2.Phối hợp MOD R/M để tạo chế độ địa 33 Bảng 2-3 Các chế độ địa 36 Bảng 2-4 Bản đồ nhớ, địa ngắt 8086 60 Bảng 3-1 Chức chân Port 103 Bảng 3-2 Các ghi chức đặc biệt 105 Bảng 3-3 Địa RAM nội 8051 106 Bảng 3-4 ký hiệu sử dụng mô tả lệnh 117 Bảng 3-5 Các lệnh vận chuyển liệu 120 Bảng 3-6 Các lệnh thao tác bit đọc cổng 120 Bảng 3-7 Lệnh đọc cổng 121 Bảng 3-8 Đọc chốt cổng 121 Bảng 3-9 Nhảy vô điều kiện 122 Bảng 3-10 Các toán tử 124 Bảng 3-11 Chế độ hoạt động Timer/Counter 127 Bảng 3-12 Một số giá trị thường dùng truyền thông nối tiếp 139 220 Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp Chỉ mục 74LS245 85 74LS373 85 ACALL 123 Accumulator 109 ADC 39 ADD 40 ALU 24 AND 42 ASCII 21 AT89C51 99 BCD 18 biến 63 BIU 25 Bộ đếm 113 định thời 113 bus 17 Bus địa 17 Bus điều khiển 17 Bus liệu 17 Các bước lập trình 55 Các hệ đếm 18 CALL 52, 122 Cấu trúc 24 cấu trúc điều khiển 69 chế độ địa 31, 34 CHẾ ĐỘ ĐỊA CHỈ CHUỖI 36 CHẾ ĐỘ ĐỊA CHỈ CỔNG 37 CHẾ ĐỘ ĐỊA CHỈ GIÁN TIẾP 35 CHẾ ĐỘ ĐỊA CHỈ THANH GHI 34 CHẾ ĐỘ ĐỊA CHỈ TRỰC TIẾP 35 CHẾ ĐỘ ĐỊA CHỈ TỨC THÌ 34 CHẾ ĐỘ ĐỊA CHỈ TƯƠNG ĐỐI 35 Chương trình 65 CMP 46 cờ 29 Cổng vào/ra 100 CPU 16, 94 CU 24 DB 123 DEC 40 Delay 153 Địa chỉ số 115 Địa gián tiếp 115 Địa theo ghi 114 Địa trực tiếp 115 Địa tức thời 114 Địa vật lý 29 DIV 40 DPTR 111 EEPROM 93 Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp EQU 124 EU 25, 26 FOR 70 Giải mã địa 84 Gray Code 19 63 Hợp ngữ 54 I/O Ports 94 IF – THEN 69 IN 38 INC 40 INT 53 IRET 53 JA/JNBE 47 JAE/JNB/JNC 47 JB/JC/JNAE 48 JBE/JNA 48 JE/JZ 49 JMP 49 JNE/JNZ 50 Khối xử lý trung tâm 16, 17 Khung chương trình 62 kiến trúc vi xử lý 15 Kiến trúc vi điều khiển 8051 97 LCALL 123 Lệnh bó 67 LJMP 122 LOOP 51 LOOPE/LOOPZ 51 Macro 67 máy móc dân dụng 14 máy tính cổ điển 15 MODEL 58 Một số hàm mẫu 153 MOV 38 MUL 41 NEG 41 Ngắt 72 Ngắt 8051 114 Nhà thông minh 14 NOP 53 NOT 42 OR 42 OUT 38 PC:Program Counter 94 PCON 112 phần cứng xử lý 24 POP 39 PROC 65 PSW 110 221 PUSH 39 quảng cáo 14 RAM 93 RCL 43 RCR 43 Registers 24 REPEAT 71 RET 54 ROL 44 ROM 92 ROR 44 rs232 113 SAL 45 sản phẩm công nghiệp 14 sản phẩm giải trí 14 SBUF 111 SFR 94, 109 SHL 45 SHR 45 SJMP 122 Sơ đồ chân 8086/8088 31 Sơ đồ khối hệ vi xử lý 16 222 STACK 60 STC 54 SUB 41 Tập lệnh Assembly 37 Tên 124 ghi 27 ghi số 28 ghi đoạn 28 thiết bị tự động 13 thiết bị y tế 14 Timer Mode 129 Timer Register 111 TMOD 127 Tổ chức nhớ 8051 104 Toán tử 64 từ khóa 125 UART 113 ứng dụng vi điều khiển 13 Ứng dụng vi điều khiển 91 WHILE 70 XOR 46 Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp