Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
1,08 MB
Nội dung
Chương 1: tổng quan vi xử lý CHƯƠNG 1: TỔNG QUAN VI XỬ LÝ Nội dung chương bao gồm vấn đề: Khái quát lại hệ thống số đếm thường dùng hệ thống vi xử lý, vi điều khiển Trình bày loại mã hay thường dùng thiết kế điều khiển: mã BCD, ASCII, mã LED đoạn Tóm tắt lịch sử phát triển phân loại vi xử lý vi điều khiển Giới thiệu cấu trúc vi điều khiển 1.1 CÁC HỆ THỐNG SỐ ĐẾM Đối với hệ thống vi xử lý vi điều khiển thường sử dụng ba hệ thống số đếm số thập phân, nhị phân thập lục phân 1.1.1 Hệ thập phân Số thập phân xây dựng số 10 gồm mười chữ số sở 0, 1, 2, 3, 4, 5, 6, 7, 8, Ví dụ, để nhận biết số thập phân 125 ký hiệu 12510 (chỉ số 10 cho biết số có số 10) Tổng quát, số thập phân C10 biểu diễn công thức: 𝐶10 = 𝑎𝑛 ∗ 10𝑛 + 𝑎𝑛−1 ∗ 10𝑛−1 + 𝑎𝑛−2 ∗ 10𝑛−2 + ⋯ + 𝑎0 ∗ 100 (1.1) với a0 an {0, 1, …, 9}, n Z Ví dụ 1.1: số 42510 348210 phân tích 42510 = ∗ 102 + ∗ 101 + ∗ 100 348210 = ∗ 103 + ∗ 102 + ∗ 101 + ∗ 100 1.1.2 Hệ nhị phân Số nhị phân có số có hai chữ số sở Một số nhị phân 1101 ký hiệu 11012 Tổng quát, số nhị phân C2 biểu diễn công thức: 𝐶2 = 𝑎𝑛 ∗ 2𝑛 + 𝑎𝑛−1 ∗ 2𝑛−1 + 𝑎𝑛−2 ∗ 2𝑛−2 + ⋯ + 𝑎0 ∗ 20 (1.2) với a0 an {0, 1}, n Z Ví dụ 1.2: số 11102 10011012 phân tích 11102 = ∗ 23 + ∗ 22 + ∗ 21 + ∗ 20 Chương 1: tổng quan vi xử lý 10011012 = ∗ 26 + ∗ 25 + ∗ 24 + ∗ 23 + ∗ 22 + ∗ 21 + ∗ 20 1.1.3 Hệ bát phân Số bát phân có số có tám chữ số sở 0, 1, 2, 3, 4, 5, 6, Số bát phân có giá trị 257 ký hiệu 2578 Tổng quát, số bát phân C8 biểu diễn công thức: 𝐶8 = 𝑎𝑛 ∗ 8𝑛 + 𝑎𝑛−1 ∗ 8𝑛−1 + 𝑎𝑛−2 ∗ 8𝑛−2 + ⋯ + 𝑎0 ∗ 80 (1.3) với a0 an {0, 1, …, 7}, n Z Ví dụ 1.3: số 103478 phân tích 103478 = ∗ 84 + ∗ 83 + ∗ 82 + ∗ 81 + ∗ 80 1.1.4 Hệ thập lục phân Số thập lục phân có số 16 có mười sáu chữ số sở 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Số thập lục phân có giá trị 490AF ký hiệu 490AF H Số thập lục gọi tắt số hex Tổng quát, số thập lục phân C16 biểu diễn công thức: 𝐶16 = 𝑎𝑛 ∗ 16𝑛 + 𝑎𝑛−1 ∗ 16𝑛−1 + 𝑎𝑛−2 ∗ 16𝑛−2 + ⋯ + 𝑎0 ∗ 160 (1.4) Ví dụ 1.4: số 1034716 phân tích 1034716 = ∗ 164 + ∗ 163 + ∗ 162 + ∗ 161 + ∗ 160 1.1.5 Chuyển đổi hệ thống số Chuyển đổi số nhị phân thành số thập phân Để chuyển đổi số nhị phân sang số thập phân, trước tiên phân tích số nhị phân thành tổng luỹ thừa Ví dụ 1.5: đổi số 11102 thành số thập phân 11102 = ∗ 23 + ∗ 22 + ∗ 21 + ∗ 20 = 14 Hay 11102 = 1410 Ví dụ 1.6: đổi số 110011102 thành số thập phân 110011102 = ∗ 27 + ∗ 26 + ∗ 25 + ∗ 24 + ∗ 23 + ∗ 22 +1 ∗ 21 + ∗ 20 = 128 + 64 + + + + + + = 206 Hay 110011102 = 20610 Chương 1: tổng quan vi xử lý Bảng 1.1: chuyển đổi số nhị phân sang số thập phân Nhị phân 00000000 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001 00001010 00001011 00001100 00001101 00001110 00001111 Thập phân 10 11 12 13 14 15 Nhị phân 00010000 00010001 00010010 00010011 00010100 00010101 00010110 00010111 00011000 00011001 00011010 00011011 00011100 00011101 00011110 00011111 Thập phân 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Chuyển đổi số thập phân thành số nhị phân Để chuyển đổi số thập phân thành số nhị phân, thực chia cho số lặp lại lấy phần dư Phần dư bit có trọng số thấp (LSB) phần dư cuối bit có trọng số lớn (MSB) Ví dụ 1.6: đổi số 2810 thành số nhị phân 28/2 14 dư (LSB) 14/2 dư 7/2 dư 3/2 dư 1/2 dư (MSB) Như vậy, 2810 = 111002 MSB LSB Ví dụ 1.7: đổi số 12210 thành số nhị phân 122/2 61 dư (LSB) 61/2 30 dư 30/2 15 dư 15/2 dư Chương 1: tổng quan vi xử lý 7/2 dư 3/2 dư 1/2 dư (MSB) Như vậy, 12210 = 11110102 Chuyển đổi số nhị phân thành số thập lục phân Để chuyển đổi số nhị phân thành số hex, thực xếp nhóm bit bit LSB Sau đó, quy đổi số hex tương ứng nhóm bit Nếu nhóm tách bit thứ tự cuối khơng đủ bit chèn thêm bit vào cho đủ cho bit Ví dụ 1.8: đổi số 100101112 thành số hex 10010111 = 1001 0111 = Như vậy, 100101112 = 97H Ví dụ 1.9: đổi số 11100101112 thành số hex 1110010111 = 0011 1001 0111 = Như vậy, 11100101112 = 397H Bảng 1.2: chuyển đổi số thập phân sang số hex Thập phân 10 11 12 13 14 15 Hex A B C D E F Thập phân 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Hex 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F Chương 1: tổng quan vi xử lý Chuyển đổi số hex sang số nhị phân Để chuyển đổi số hex thành số nhị phân, cách thực ta quy đổi chữ số số hex thành bit nhị phân tương ứng Ví dụ 1.10: đổi số 5F9AH thành số nhị phân 5F9A = 101 1111 1001 1010 Như vậy, 5F9AH = 1011111100110102 Chuyển đổi số hex sang số thập phân Để thực chuyển đổi số hex thành số thập phân, ta tính tổng luỹ thừa 16 Ví dụ 1.11: đổi số 2ACH thành số thập phân 2ACH = ∗ 162 + 10 ∗ 161 + 12 ∗ 160 = 512 + 160 + 12 = 684 Như vậy, 2ACH = 68410 Chuyển đổi số thập phân sang số hex Để chuyển đổi số thập phân thành số hex, thực chia cho số lặp lại 16 lấy phần dư Phần dư số có trọng số nhỏ (LSD) phần dư cuối số có trọng số lớn (MSD) Ví dụ 1.12: đổi số 23810 thành số hex 238/16 14 dư 14 # E (LSD) 14/16 0 dư 14 # E (MSD) Như vậy, 23810 = EEH Chuyển đổi số bát phân sang số thập phân Để thực chuyển đổi số bát phân sang số thập phân, ta tính tổng theo luỹ thừa Ví dụ 1.13: đổi số 8508 thành số thập phân 8508 = ∗ 82 + ∗ 81 + ∗ 80 = 512 + 40 + = 552 Như vậy, 8508 = 55210 Chuyển đổi số thập phân sang số bát phân Để chuyển đổi số thập phân thành số bát phân, thực chia cho số lặp lại lấy phần dư Phần dư LSD phần dư cuối MSD Chương 1: tổng quan vi xử lý Ví dụ 1.14: đổi số 15910 thành số bát phân 159/8 19 dư (LSD) 19/8 2 dư 2/8 0 dư (MSD) Như vậy, 15910 = 2378 Bảng 1.3: chuyển đổi số thập phân sang số bát phân Thập phân 10 11 12 13 14 15 Báp phân 10 11 12 13 14 15 16 17 Thập phân 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Bát phân 20 21 22 23 24 25 26 27 30 31 32 33 34 35 36 37 Chuyển đổi số bát phân sang số nhị phân Để chuyển số bát phân thành số nhị phân, ta đổi chữ số số bát phân thành nhóm nhị phân bit tương đương Ví dụ 1.15: đổi số 42078 thành số nhị phân 42078 = 100 010 000 111 Như vậy, 42078 = 1000100001112 Chuyển đổi số nhị phân sang số bát phân Để chuyển số nhị phân thành số bát phân, ta tách nhóm bit (theo thứ tự từ bit LSB) quy đổi thành chữ số bát phân tương đương Ví dụ 1.16: đổi số 100101112 thành số bát phân 100101112 = 010 010 111 = 2278 Chương 1: tổng quan vi xử lý 1.1.6 Số âm Bit MSB số nhị phân thường sử dụng làm bit dấu (dấu +/-) Đối với số dương bit 0, số âm bit Trong bảng 1.4 biểu diễn số dương âm 4-bit Bảng 1.4: số dương âm 4-bit Số nhị phân 0111 0110 0101 0100 0011 0010 0001 0000 Số thập phân +7 +6 +5 +4 +3 +2 +1 Số nhị phân 1111 1110 1101 1100 1011 1010 1001 1000 Số thập phân -1 -2 -3 -4 -5 -6 -7 -8 Để chuyển số dương thành số âm, ta lấy bù số nhị phân sau cộng thêm Phương pháp gọi bù số Ví dụ 1.17: đổi số -6 thành số nhị phân có dấu Đầu tiên, tìm số nhị phân tương ứng số dương (+6) Sau đó, thực bù cộng thêm 0110 # +6 1001 Thực bù + Cộng thêm 1010 # -6 Ví dụ 1.18: đổi số -25 thành số nhị phân có dấu 00011001 11100110 + 11100111 1.1.7 # +25 Thực bù Cộng thêm # -25 Các phép tính nhị phân Phép cộng nhị phân Các phép cộng nhị phân bản: 0+0=0 0+1=1 Chương 1: tổng quan vi xử lý 1+0=1 + = 10 (phát bit báo tràn) + + = 11 (phát bit báo tràn) Ví dụ 1.19: thực cộng hai số nhị phân 011 110 011 + 110 1001 (phát bit báo tràn) Ví dụ 1.20: thực cộng hai số nhị phân sau 01000011 + 00100010 01100101 Phép trừ nhị phân Để thực phép tính trừ số nhị phân, ta chuyển đổi số trừ sang số âm sau thực cộng số vừa chuyển đổi với số trừ lại với Ví dụ 1.21: thực phép tính 0110 – 0010 (theo thập phân – 2) Thực chuyển 0010 thành số âm: 0010 Số bị trừ 1101 Thực bù + Thực bù 1110 Thực cộng hai số lại: 0110 + 1110 0100 (kết = 4) Lưu ý: sử dụng bit, biểu diễn bit báo tràn Chương 1: tổng quan vi xử lý Phép nhân nhị phân Phép nhân số nhị phân tương tự thực với số thập phân Có bốn trường hợp: 0x0=0 0x1=0 1x0=0 1x1=1 Ví dụ 1.22: 0110 x 0010 0000 0110 0000 0000 1100 (kết = 12) Trong thí dụ này, bit biểu diễn kết Ví dụ 1.23: 1001 x 1010 0000 1001 0000 1001 1011010 (kết = 90) Trong thí dụ này, cần tới bit biểu diễn kết Phép chia nhị phân Phép chia nhị phân tương tự thập phân Chương 1: tổng quan vi xử lý Ví dụ 1.24: thực 1110:10 111 10 1110 10 11 10 10 10 00 Kết 1112 1.1.8 Số chấm động Trong hệ thống số trọng số số nguyên xác định công thức: 𝑃 = 𝑑 ∗ 𝐵𝐶 (1.5) với d số, B số, C số cột định mà phải qua trái Vì thế, giá trị số nguyên dương có nhiều chữ số đến n chữ số biểu diễn tổng giá trị chữ số: 𝑑𝑛 ∗ 𝐵𝑛 + 𝑑𝑛−1 ∗ 𝐵𝑛−1 + 𝑑𝑛−2 ∗ 𝐵𝑛−2 + ⋯ + 𝑑0 ∗ 𝐵0 (1.6) đó, d giá trị chữ số B số hệ thống số Sự biểu diễn mở rộng để biểu diễn giá trị số hữu tỉ 10 Chương 1: tổng quan vi xử lý Bảng 1.7: số BCD từ đến 21 Thập phân 10 1.2.2 BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0001 0000 Nhị phân 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 Thập phân 11 12 13 14 15 16 17 18 19 20 21 BCD 0001 0001 0001 0010 0001 0011 0001 0100 0001 0101 0001 0110 0001 0111 0001 1000 0001 1001 0010 0000 0010 0001 Nhị phân 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 Mã LED đoạn (mã 1248) a f b g e c dp d (a) Bề mặt LED đoạn COM D1 D2 D3 D4 D5 D6 D7 a b c d e f g a b c d e g f D8 dp dp (b) LED đoạn anode chung a b c d e g f dp D1 D2 D3 D4 D5 D6 D7 a b c d e f g D8 dp COM (c) LED đoạn cathode chung Hình 1.6: cấu trúc LED đoạn LED đoạn anode chung Đối với LED đoạn anode chung, chân chung COM phải cung cấp mức logic muốn đoạn led sáng chân tương ứng a f, dp mức logic 16 Chương 1: tổng quan vi xử lý Bảng 1.8: bảng mã LED đoạn anode chung (a: MSB, dp: LSB) Số a b c d e f g dp Mã hex 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 03h 9Fh 25h 0Dh 99h 49h 41h 1Fh 01h 09h Bảng 1.9: bảng mã LED đoạn anode chung (a: LSB, dp: MSB) Số dp g f e d c b a Mã hex 1 0 0 0 0C0h 1 1 1 0 0F9h 1 0 0 0A4h 1 0 0 0B0h 0 1 0 99h 0 0 92h 0 0 82h 1 1 0 0F8h 0 0 0 80h 0 0 0 90h LED đoạn cathode chung Đối với LED đoạn cathode chung, chân chung COM phải cung cấp mức logic muốn đoạn led sáng chân tương ứng a f, dp mức logic Bảng 1.10: bảng mã LED đoạn cathode chung (a: MSB, dp: LSB) Số a b c d e f g dp Mã hex 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0FCh 60h 0DAh 0F2h 66h 0B6h 0BEh 0E0h 0FEh 0F6h 17 Chương 1: tổng quan vi xử lý Bảng 1.11: bảng mã LED đoạn cathode chung (a: LSB, dp: MSB) Số dp g f e d c b a Mã hex 1.2.3 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 3Fh 06h 5Bh 4Fh 66h 6Dh 7Dh 07h 7Fh 6Fh Mã ASCII Mã ASCII ký tự mã hoá dựa bảng mẫu tự tiếng Anh ASCII ấn hành chuẩn vào năm 1967 cập nhật lần cuối vào năm 1986 33 mã để mã khơng để in ra, thường ký tự điều khiển Có 95 ký tự in (bắt đầu với ký tự khoảng trống) bao gồm: ký tự nhìn thấy bàn phím chuẩn, số thập phân, ký tự thường in hoa mẫu tự tiếng Anh Bảng 1.12: ký tự ASCII Thập phân 000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 18 Thập lục phân 000 001 002 003 004 005 006 007 008 009 00A 00B 00C 00D 00E 00F 010 011 012 013 014 015 016 017 018 Nhị phân 0000 0000 0000 0001 0000 0010 0000 0011 0000 0100 0000 0101 0000 0110 0000 0111 0000 1000 0000 1001 0000 1010 0000 1011 0000 1100 0000 1101 0000 1110 0000 1111 0001 0000 0001 0001 0001 0010 0001 0011 0001 0100 0001 0101 0001 0110 0001 0111 0001 1000 Giá trị Annual SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN (Ký tự Null) (Start of Header) (Start of Text) (End of Text) (End of Transmission) (Enquiry) (Acknowledgment) (Bell) (Backspace) (Horizontal Tab) (Line Feed) (Vertical Tab) (Form Feed) (Carriage Return) (Shift Out) (Shift In) (Data Link Escape) (XON)(Device Control 1) (Device Control 2) (XOFF)(Device Control 3) (Device Control 4) (-Acknowledgment) (Synchronous Idle) (End of Trans Block) (Cancel) Chương 1: tổng quan vi xử lý 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 … 090 091 092 093 094 095 096 097 019 01A 01B 01C 01D 01E 01F 020 021 022 023 024 025 026 027 028 029 02A 02B 02C 02D 02E 02F 030 031 032 033 034 035 036 037 038 039 03A 03B 03C 03D 03E 03F 040 041 042 043 … 05A 05B 05C 05D 05E 05F 060 061 0001 1001 0001 1010 0001 1011 0001 1100 0001 1101 0001 1110 0001 1111 0010 0000 0010 0001 0010 0010 0010 0011 0010 0100 0010 0101 0010 0110 0010 0111 0010 1000 0010 1001 0010 1010 0010 1011 0010 1100 0010 1101 0010 1110 0010 1111 0011 0000 0011 0001 0011 0010 0011 0011 0011 0100 0011 0101 0011 0110 0011 0111 0011 1000 0011 1001 0011 1010 0011 1011 0011 1100 0011 1101 0011 1110 0011 1111 0100 0000 0100 0001 0100 0010 0100 0011 … 0101 1010 0101 1011 0101 1100 0101 1101 0101 1110 0101 1111 0110 0000 0110 0001 EM SUB ESC FS GS RS US SP ! “ # $ % & ‘ ( ) * + , / : ; < = > ? @ A B C Z [ \ ] ^ _ ` a (End of Medium) (Substitute) (Escape) (File Separator) (Group Separator) (Request to Send) (Unit Separator) (Space) (Dấu chấm than) (Dấu nháy đôi) (Ký hiệu #) (Ký hiệu $) (Ký hiệu %) (Ký hiệu &) (Dấu nháy đơn) (Dấu ngoặc đơn mở) (Dấu ngoặc đơn đóng) (Dấu *) (Dấu +) (Dấu phẩy) (Dấu -) (Dấu chấm) (Dấu /) (Các chữ số thập phân …) (Dấu :) (Dấu ;) (Ký hiệu ) (Ký hiệu ?) (Ký hiệu AT) (Các ký tự hoa …) (Ký hiệu [) (Ký hiệu \) (Ký hiệu ]) (Ký hiệu ^) (Ký hiệu dấu nối gạch _) (Ký hiệu dấu `) (Các ký tự thường …) 19 Chương 1: tổng quan vi xử lý 098 099 … 122 123 124 125 126 127 1.2.4 062 063 … 07A 07B 07C 07D 07E 07F 0110 0010 0110 0011 … 0111 1010 0111 1011 0111 1100 0111 1101 0111 1110 0111 1111 b c z { | } ~ DEL (Ký hiệu {) (Ký hiệu |) (Ký hiệu }) (Ký hiệu ~) (Delete) Mã Unicode Một giới hạn mã ASCII bit không đủ để biểu diễn tổ hợp ký tự ngôn ngữ tiếng Nhật, Trung Quốc, Việt Nam Điều dẫn đến phát triển mã hoá phép biểu diễn tổ hợp ký tự rộng Unicode đề xuất chuẩn mã hố ký tự đa để sử dụng trình diễn văn máy tính Unicode cố gắng cung cấp giải pháp quán cho mã hố văn đa ngơn ngữ chuyển đổi tập văn mang ý nghĩa toàn cầu Chuẩn Unicode cung cấp khả để mã hoá tất ký tự sử dụng cho ngôn ngữ chữ viết giới Tương tự ASCII, Unicode định ký tự tên giá trị Unicode sử dụng dạng mã hoá mà sử dụng tiết mục chung ký tự Các dạng cho phép mã hoá cỡ hàng triệu ký tự Ba dạng mã hoá chuẩn Unicode cho phép liệu mã byte, word hay word Tức là, sử dụng 8, 16 hay 32 bit cho ký tự UTF-8 phương pháp biến đổi tất ký tự Unicode thành mã hố độ dài thay đổi byte Ở dạng này, ký tự Unicode tương đương với tổ hợp ASCII có giá trị byte ASCII UTF-16 thiết kế để cân hiệu truy xuất ký tự mang tính kinh tế lưu trữ Các ký tự cố định đơn vị mã 16 bit UTF-32 sử dụng không quan tâm đến không gian nhớ Ở dạng này, ký tự Unicode biểu diễn mã 32 bit đơn 1.3 LỊCH SỬ PHÁT TRIỂN VÀ PHÂN LOẠI CÁC BỘ VI XỬ LÝ VÀ VI ĐIỀU KHIỂN 1.3.1 Lịch sử phát triển Lịch sử phát triển vi xử lý/vi điều khiển thời gian từ năm 1971 đến 1983 chia làm bốn thời kỳ sau: 20 Chương 1: tổng quan vi xử lý - Thế ̣ (1971 – 1973) năm 1971, chế ta ̣o các vi ma ̣ch sử du ̣ng cho các máy tính cầ m tay hañ g Intel đã cho đời bô ̣ vi xử lý đầ u tiên là 4004 (4 bit dữ liê ̣u, 12 bit ̣a chỉ) Sau đó lầ n lươ ̣t các bô ̣ vi xử lý khác đời như: 4040 (4-bit), 8008 (8-bit) của Intel, PPS – (4-bit) của Rockwell International, IPM – 16 (16-bit) của National Semiconductor Đă ̣c điể m chung của các bô ̣ vi xử lý thế ̣ này là: Đô ̣ dài dữ liê ̣u xử lý thường là bit (cũng có thể dài hơn) Công nghê ̣ chế ta ̣o PMOS với đă ̣c điể m mâ ̣t đô ̣ tić h hơ ̣p không cao, tố c đô ̣ thấ p, giá thành rẻ và chỉ có khả đưa dòng tải nhỏ Tố c đô ̣ thực hiê ̣n lê ̣nh 10 – 60 sec/lê ̣nh với tầ n số xung nhip̣ từ 0.1 tới 0.8 MHz Tâ ̣p lê ̣nh đơn giản và cầ n phải có nhiề u vi ma ̣ch phu ̣ trơ ̣ mới ta ̣o nên ̣ thố ng vi xử lý hoàn chỉnh - Thế ̣ (1974 – 1977) Các bô ̣ vi xử lý điể n hình cho thế ̣ này là các bô ̣ vi xử lý bit như: 6502 của MOS Technology, 6800 và 6809 của Motorola, 8080 và 8085 của Intel, Z80 của Zilog Các bô ̣ vi xử lý này có tâ ̣p lê ̣nh phong phú rấ t nhiề u so với thế ̣ thứ nhấ t, và chúng thường có khả đinh ̣ vi ̣ 64 KB điạ chỉ bô ̣ nhớ, ngoài còn có thể đinh ̣ vi ̣ 256 điạ chỉ vào Chúng đươ ̣c ứng du ̣ng rấ t nhiề u công nghiê ̣p và nhấ t là đã đươ ̣c sử du ̣ng để chế ta ̣o các máy vi tin ́ h bit nổ i tiế ng như: Apple II, Commodore, PC XT Tấ t cả các bô ̣ vi xử lý thế ̣ này đề đươ ̣c chế ta ̣o bằ ng công nghê ̣ NMOS hoă ̣c CMOS (có mật độ tích hợp cao loại PMOS) tiế t kiê ̣m điê ̣n năng, cho phép đă ̣t đươ ̣c tố c đô ̣ xử lý mô ̣t lê ̣nh từ – sec với tầ n số xung nhip̣ – MHz - Thế ̣ (1978 –1982) Thế ̣này đươ ̣c đa ̣i diê ̣n bởi các bô ̣ vi xử lý 16 bit 8086, 80186, 80286 của Intel; 68000, 68010 của Motorola Mô ̣t điể m tiế n bô ̣ hẳ n các bô ̣ vi xử lý bit thế ̣ trước là tâ ̣p lê ̣nh của chúng đa da ̣ng với các lê ̣nh nhân, chia và các lê ̣nh xử lý chuỗi dữ liê ̣u Khả đinh ̣ vi ̣điạ chỉ bô ̣ nhớ và vào cũng đươ ̣c tăng lên rấ t nhiề u (16 MB bộ nhớ, 64 KB cho vào đố i với họ Intel) Các bô ̣ vi xử lý thế ̣ này đươ ̣c sử du ̣ng các máy tin ́ h IBM PC, PC/AT và các máy tin ́ h Macintosh của Apple Hầ u hế t các bô ̣ vi xử lý thế ̣ này đề u đươ ̣c sản xuấ t bằ ng công nghê ̣ HMOS cho phép đă ̣t đươ ̣c tố c đô ̣ 0,1 – sec/1 lê ̣nh, với tầ n số xung nhip̣ từ đế n 10 MHz Trong thời gian này cũng bắ t đầ u xuấ t hiê ̣n các bô ̣ vi điề u khiể n bit 8084/8089 và 6805R2 (có cả ADC 12 bit) Hoă ̣c các bô ̣ vi điề u khiể n bit MC141000, bit MC14500B 21 Chương 1: tổng quan vi xử lý - Thế ̣ (1983): Các bô ̣ vi xử lý đa ̣i diê ̣n cho thế ̣ này là các vi xử lý 32 bit: 80386, 80486 và 64 bit Pentium của Intel, các vi xử lý 32 bit 68020, 68030, 68040, 68060 của Motorola Các vi xử lý thế ̣ này đề u có 32 bit điạ chỉ, đinh bô ̣ nhớ vâ ̣t lý, ngoài còn có chế đô ̣ ̣ vi 4GB ̣ làm viê ̣c với bô ̣ nhớ ảo Ngoài các cấ u trúc và các chế hoa ̣t đô ̣ng các máy tin ́ h lớn cũng đươ ̣c áp du ̣ng cho các bô ̣ vi xử lý như: chế đường ố ng (pipeline), bô ̣ nhớ cache Trong các bô ̣ vi xử lý này đề u có khố i quản lý bô ̣ nhớ (MMU) và các bô ̣ đồ ng xử lý toán ho ̣c tić h hơ ̣p bên Chin ́ h nhờ các cải tiế n này mà các máy vi tin ́ h sử du ̣ng vi xử lý thế ̣ này có khả ca ̣nh tranh với các máy tin ́ h mini rấ t nhiề u ứng du ̣ng Hầ u hế t các bô ̣ vi xử lý thế ̣này đề u đươ ̣c sản xuấ t theo công nghê ̣HCMOS Bên ca ̣nh các bô ̣ vi xử lý xây dựng theo cấ u trúc truyề n thố ng với tâ ̣p lê ̣nh đầ y đủ (CISC) đã nói trên, thời gian này cũng xuấ t hiê ̣n các bô ̣ vi xử lý với tâ ̣p lê ̣nh rút go ̣n (RISC) có khả thực hiê ̣n các lê ̣nh tố c đô ̣ cao và với nhiề u tính có thể so sánh với các máy tinh lớn thế ̣ trước Đó là các bô ̣ vi xử lý Alpha của Digital, Power PC của Apple , Motorola, IBM … Giới thiệu Microchip vi điều khiển PIC Vi điều khiển PIC có nguồn gốc thiết kế cơng ty General Instruments (GI) Vào sau năm 1970, GI sản xuất xử lý PIC 1650 PIC 1655, thiết kế tương đối đơn sơ chưa thống chúng hồn tồn hoạt động tự chủ có kiến trúc theo RISC, có ghi làm việc 30 lệnh Sau GI bán lại phân khúc bán dẫn cho nhóm nhà đầu tư, nhóm nhìn thấy tiềm rộng lớn từ linh kiện nhỏ cũ Trong thập niên 1990, dòng PIC phát triển, họ bắt kịp đối thủ cạnh tranh Nhiều loại PIC chạy nhanh hơn, cài đặt cấu hình đơn giản Thật khơng may cho đối thủ cạnh tranh, Microchip tạo công cụ phát triển đơn giản giá thành thấp miễn phí Hơn nữa, Microchip kiên cố thủ giới 8-bit 22 Chương 1: tổng quan vi xử lý 1.3.2 Máy tính gì? Chương triǹ h Bô ̣ nhớ CPU I/O Thiế t bi ̣ ngoa ̣i vi Hình 1.7: sơ đồ khối hệ thống máy tính Một máy tính chế tạo gồm có hai phần phần cứng phần mềm Về linh kiện/thiết bị, phần cứng gồm có loại là: Bộ xử lý: xử lý chịu trách nhiệm thi hành phép toán điện toán điều hành sử dụng tài nguyên máy tính Một hệ thống máy tính có nhiều xử lý Bộ xử lý xử lý đa với mục đích đặc biệt Các linh kiện/thiết bị nhận tín hiệu vào: thành phần cần thiết để nhập/nhận liệu vào máy tính Ví dụ: bàn phím, chuột máy tính, cảm biến, thiết bị đọc mã vạch, Các linh kiện/thiết bị xuất tín hiệu ra: linh kiện/thiết bị cho phép xử lý xuất liệu kết qua chúng Ví dụ: loại LED thị, LCD, Các nhớ: chương trình thi hành liệu xử lý phải lưu trữ vào nhớ để xử lý truy xuất từ nhớ Bộ xử lý Bộ xử lý gọi đơn vị xử lý trung tâm (CPU) Bộ xử lý chứa đựng tối thiểu thành phần sau: Các ghi: ghi tích hợp bên CPU Nó sử dụng để lưu giữ liệu hay địa nhớ suốt thời gian thi hành lệnh Nó cho phép khả truy xuất nhanh tốn hạng cho thực thi chương trình Số lượng ghi tuỳ thuộc vào CPU cụ thể 23 Chương 1: tổng quan vi xử lý Đơn vị xử lý logic số học (ALU): ALU thực tất tính tốn số ước lượng cho CPU ALU nhận liệu từ nhớ, thực phép tốn cần thiết ghi kết trở lại cho nhớ Đơn vị điều khiển: đơn vị điều khiển thực lệnh điều khiển phần cứng Nó giải mã giám sát thực thi lệnh Bộ vi xử lý Sự phát triển công nghệ bán dẫn cho phép mạch điện tồn thể xử lý tích hợp mạch (còn chip) Bộ vi xử lý xử lý đóng gói mạch tích hợp đơn Máy vi tính máy tính mà sử dụng vi xử lý làm CPU cho Tuỳ thuộc vào số bit mà xử lý thao tác hoạt động, vi xử lý loại 4, 8, 16, 32 64 bit Hiện tại, vi xử lý sử dụng rộng rãi bit Các vi xử lý ứng dụng phổ biến từ phát minh Tuy nhiên, có vài giới hạn so với mục đích sử dụng: Nó phải sử dụng chip nhớ mở rộng bên ngồi, chúng khơng tích hợp sẵn Cần sử dụng thêm chip giải mã địa đệm để giao tiếp với chip nhớ ngồi Nó cần sử dụng thêm chip ngoại vi để giao tiếp với thiết bị nhập/xuất (I/O) Nó khơng trang bị tính thơng dụng như: biến đổi AD/DA, so sánh tín hiệu tương tự, Bộ vi điều khiển Do khiếm khuyết ứng dụng cụ thể vi xử lý nên loại vi xử lý kiểu thiết kế tích hợp sẵn nhiều tính gọi vi điều khiển Bộ vi điều khiển gọi MCU mạch tích hợp theo cơng nghệ VLSI Một MCU tích hợp thành phần ngoại vi sau: Bộ nhớ Các định thời Bộ điều chế độ rộng xung Bộ chuyển đổi tương tự sang số Bộ chuyển đổi số sang tương tự Giao tiếp I/O song song Giao tiếp truyền liệu nối tiếp bất đồng Giao tiếp truyền liệu nối tiếp đồng (SPI, I2C, CAN) 24 Chương 1: tổng quan vi xử lý Giao tiếp truyền liệu nối tiếp đa Bộ điều khiển truy xuất nhớ trực tiếp Hình 1.8: sơ đồ khối bên MCU Bộ nhớ Các chương trình liệu lưu trữ vào nhớ hệ thống máy tính Một máy tính có nhớ bán dẫn, từ, hay quang Trong tài liệu trình bày nhớ bán dẫn, nhớ từ quang sử dụng MCU bit Bộ nhớ bán dẫn phân làm hai loại chính: nhớ truy xuất ngẫu nhiên (RAM) nhớ đọc (ROM) Bộ nhớ RAM Bộ nhớ RAM có đặc điểm quan trọng liệu lưu trữ torng bị nguồn điện cung cấp cho bị cắt RAM cho phép đọc/ghi liệu Có hai cơng nghệ RAM: RAM tĩnh (SRAM) RAM động (DRAM) SRAM sử dụng từ đến transistior để lưu trữ bit thông tin DRAM sử transistor tụ điện để lưu trữ bit thông tin Thông tin DRAM lưu trữ nhờ tụ dạng điện tích, điện tích tụ yếu dần suốt thời gian lưu trữ, nên cần có hoạt động làm tươi định kỳ DRAM để trì liệu nhớ Bộ nhớ ROM ROM nhớ đọc liệu không bị cắt nguồn điện cung cấp Thực tế, ROM ghi liệu thuật tốn đặc biệt điện thích hợp Hiện nay, có nhiều cơng nghệ ROM: MROM: loại ROM lập trình sẵn chế tạo 25 Chương 1: tổng quan vi xử lý PROM: loại ROM lập trình sử dụng thiết bị gọi lập trình PROM PROM lập trình lần nhất, sau lập trình liệu thể thay đổi PROM sử dụng cầu chì, người sử dụng lập trình cầu chì để đặt nội dung vào nhớ EPROM: loại ROM xố nội dung ánh sáng cực tím, xố xố lúc tồn nội dung Khi lập trình lại cho EPROM, thường phải thực xố trước lập trình lại Việc lập trình cho EPROM thực điện cách sử dụng lập trình EPROM Hiện nay, lập trình cho ROM đa năng, lập trình cho: EPROM, EEPROM, nhớ flash, chip khả trình EEPROM: ROM xố lập trình lại tín hiệu điện Việc xố lập trình cho EEPROM sử dụng lập trình Bộ nhớ flash: phát minh để tổng hợp ưu điểm bỏ khuyết điểm EPROM EEPROM Tức là, nhớ flash xố lập trình mà khơng cần sử dụng lập trình Việc xố nhớ flash cho xố vị trí riêng lẻ, người sử dụng xố phần tồn phần nhớ Hiện nay, vi điều khiển nhúng nhớ flash Trong MCU PIC18 cho phép xoá khối 64 kb lúc Hệ thống bus máy tính Trong hệ thống máy tính có ba loại bus: bus liệu, bus địa chỉ, bus điều khiển - Bus liệu: Bus hệ thống có nhiều đường dây tín hiệu (đối với MCU thường bit) có nhiê ̣m vu ̣ để truyề n dữ liê ̣u giữa CPU với các bô ̣ nhớ hoă ̣c vào/ra để các thành phầ n ̣ thố ng có thể hiể u đươ ̣c - Bus địa chỉ: Bus địa để xác đinh ̣ vi ̣trí truyề n dữ liê ̣u đối với bus dữ liê ̣u nhấ t của CPU - Bus điều khiển: Để xác đinh ̣ các chế đô ̣ hoa ̣t đô ̣ng điều khiển khác của ̣ thố ng 26 Chương 1: tổng quan vi xử lý 1.3.3 Phần mềm máy tính Chương trin ̀ h hơ ̣p ngữ (các lênh ̣ gơ ̣i nhớ ) Chương trin ̀ h ngôn ngữ cấ p cao Chương trin ̀ h mã máy (tâ ̣p hơ ̣p các bit và 1) CPU Hình 1.9: chuyển đổi phần mềm sang mã máy Chương trình gọi phần mềm Chương trình tập hợp lệnh mà máy tính thi hành Chương trình lưu trữ nhớ máy tính dạng số nhị phân gọi lệnh máy Khi lệnh máy gọi từ nhớ, giải mã đơn vị điều khiển CPU, tín hiệu điều khiển thích hợp sau tạo để điều khiển hoạt động mong muốn Ngôn ngữ hợp ngữ Ngôn ngữ hợp ngữ giúp cho việc lập trình trở nên đơn giản Chương trình hợp dịch chứa lệnh hợp ngữ Một lệnh hợp ngữ biểu diễn lệnh gợi nhớ lệnh máy Ngơn ngữ hợp ngữ ngơn ngữ lập trình cấp độ thấp Chương trình hợp ngữ mà người lập trình nhập vào gọi chương trình gốc hay mã nguồn Người sử dụng cần gọi trình hợp dịch để dịch chương trình nguồn sang ngơn ngữ máy để máy tính thực thi Sự xuất hợp dịch gọi mã đối tượng Có hai loại hợp dịch: hợp dịch tự nhiên hợp dịch chéo Hợp dịch tự nhiên chạy máy tính phát mã máy để thực thi máy tính tương tự máy tính khác có tập lệnh giống Hợp dịch chéo chạy máy tính phát mã máy mà thực thi máy tính có tập lệnh khác Ví dụ, MPASM Microchip trình hợp dịch chéo Ngơn ngữ cấp cao Có số mặt hạn chế lập trình ngơn ngữ hợp ngữ: Người lập trình phải quen thuộc kiến trúc phần cứng Chương trình viết ngơn ngữ hợp ngữ khó hiểu cho người Hiệu suất lập trình khơng làm thoả mãn dự án lập trình quy mơ lớn người lập trình lập trình cấp độ thấp Từ lý trên, ngôn ngữ cấp cao C, C++, Jave, sử dụng để tránh vấn đề Một phát biểu ngôn ngữ cấp cao thường cần thực thi chục 27 Chương 1: tổng quan vi xử lý hay chí hàng trăm lệnh hợp ngữ Người lập trình dễ dàng lập trình cấp độ cao nhiều Một chương trình viết ngơn ngữ cấp cao gọi mã nguồn, u cầu phần mềm gọi trình biên dịch để dịch sang lệnh máy Trình biên dịch biên dịch chương trình sang mã đối tượng Trong ngơn ngữ cấp cao thường có chế giải thích Nghĩa là, hỗ trợ cho ta thấy cách viết mã nguồn hướng cho người lập trình viết cú pháp Khuyết điểm ngơn ngữ cấp cao mã máy sau biên dịch có dung lượng lớn khơng thể chạy nhanh hợp ngữ Vì lý này, nhiều chương trình có tính giới hạn thời gian viết hợp ngữ Ngôn ngữ C sử dụng rộng rãi để lập trình cho MCU hầu hết công cụ phần mềm MCU phát triển sử dụng trình biên dịch C chéo 1.4 KIẾN TRÚC VI ĐIỀU KHIỂN Để truy xuất liệu từ nhớ, ta phải biết địa vị trí nhớ yêu cầu Bên MCU có hai loại bus nội bus địa bus liệu Cách thức đơn giản để truy xuất nhớ sử dụng kiểu kiến trúc Von Neumann hình 1.10, kiến trúc có bus địa bus liệu phục vụ cho nhớ liệu nhớ chương trình kết nối nội với khối vào/ra Tuy nhiện, liệu chương trình truy xuất đồng thời Rất nhiều VĐK sử dụng kiến trúc Kiến trúc Harvard hình 1.11 có độ linh hoạt cao hơn, nhớ chương trình, liệu, vào/ra có bus địa bus liệu riêng độc lập, bus có kích cỡ khác Chương trình, liệu, vào/ra truy xuất đồng thời Các VĐK PIC sử dụng kiến trúc Harvard Bộ nhớ liệu Địa Vào/ra CPU Dữ liệu Bộ nhớ chương trình Hình 1.10: kiến trúc Von Neumann 28 Chương 1: tổng quan vi xử lý Địa Dữ liệu Bộ nhớ liệu Địa CPU Dữ liệu Địa Dữ liệu Vào/ra Bộ nhớ chương trình Hình 1.11: kiến trúc Harvard Vi điều khiển sử dụng hai kiểu tập lệnh RISC CISC Đối với VĐK RISC 8-bit liệu có độ rộng 8-bit từ (word) lệnh có độ rộng 8-bit (thường 12, 14, 16-bit) lệnh thường chiếm word nhớ chương trình Đối với VĐK CISC, liệu lệnh có độ rộng 8-bit Các VĐK CISC thường có hai trăm lệnh 1.5 GIỚI THIỆU CÁC HỌ VI ĐIỀU KHIỂN PIC Hiện nay, hãng Microchip đưa thị trường dòng VĐK phổ biến: PIC12XXX: chân, dạng lệnh 12 14-bit, thiết kế cho ứng dụng nhỏ PIC14000: 28 chân, dạng lệnh 14-bit PIC16C5X: dạng lệnh 12-bit PIC16CXX: dạng lệnh 14-bit PIC17: dạng lệnh 16-bit PIC18: dạng lệnh 16-bit PIC24: dạng lệnh 16-bit DsPIC30/33: hỗ trợ giải pháp nhúng 16-bit xử lý tín hiệu số Mỗi dòng VĐK PIC hỗ trợ số lệnh khác nhau, tuỳ theo yêu cầu thiết kế thực tế mà ta chọn dòng VĐK thích hợp Trong tài liệu phân tích sâu dòng PIC18, đặc biệt phân tích kỹ PIC 18F4550 Vì, VĐK đủ mạnh để thiết kế ứng dụng phức tạp 29 Chương 1: tổng quan vi xử lý 1.6 BÀI TẬP 1) Đổi số 32510 sang số nhị phân 2) Đổi số 101100010112 thành số thập phân 3) Đổi số 101100010112 thành số hex 4) Chuyển đổi số 27616 thành số nhị phân thập phân 5) Đổi số 2058 sang số thập phân nhị phân 6) Đổi số 4798 thành số hex 7) Cho biết ý nghĩa sử dụng phương pháp bù số nhị phân 8) Hãy chuyển đổi -7910 thành số nhị phân có dấu 9) Hãy chuyển đổi -34710 thành số nhị phân có dấu 10) Tính biểu thức “1001102 - 01102” phép tính cộng 11) Để tính biểu thức “101102 * 10112” phải cần bit biểu diễn kết quả? 12) Để tính biểu thức “1101102 * 10112” phải cần bit biểu diễn kết quả? 13) Tìm giá trị biểu thức “10010112 : 1012” 14) Biểu diễn giá trị 12.2510 thành số nhị phân 15) Cho biết mã BCD 41510 16) Để LED đoạn sáng thành số đoạn LED tương ứng sáng? 17) LED đoạn mạch sau sáng ký tự gì? 2V a b c d e f g dp 2V 2V 2V 2V 2V Hình 1.12: minh hoạ tập (17) 18) Cho biết mã ASCII dạng nhị phân hex ký tự A 19) Cho biết mã ASCII dạng nhị phân hex chữ số 20) Cho biết chữ viết đầy đủ PIC gì? 21) Cho biết PIC 18F4550 có dạng lệnh bit? 30