Tổng quan về giáo trình

Giáo trình The 8051 Microcontroller and Embedded Systems Using Assembly and C (Tái bản lần 2 / Second Edition) được biên soạn bởi các tác giả Muhammad Ali Mazidi, Janice Gillispie Mazidi và Rolin D. McKinlay. Trong chương trình đào tạo bậc đại học và sau đại học thuộc các khối ngành Kỹ thuật Điện tử, Kỹ thuật Máy tính, Tự động hóa và Khoa học Máy tính (điển hình như chương trình giảng dạy của Khoa Khoa học Máy tính và Kỹ thuật Thông tin - Đại học Quốc gia Thành Công, Đài Loan / National Cheng Kung University), tài liệu này giữ vị trí giáo trình cơ sở chuyên ngành cho các học phần: Vi xử lý - Vi điều khiển, Kỹ thuật Ghép nối Ngoại vi và Thiết kế Hệ thống Nhúng.

Mục tiêu học tập của giáo trình bao gồm:

  • Trang bị hệ thống kiến thức nền tảng về tổ chức phần cứng máy tính, hệ đếm, đại số logic và các cổng logic cơ bản.
  • Phân tích cấu trúc phần cứng bên trong của họ vi điều khiển 8051 (thanh ghi, bus, bộ nhớ RAM, ROM, cổng vào/ra I/O, bộ định thời Timer, cổng truyền thông nối tiếp và hệ thống ngắt).
  • Xây dựng năng lực lập trình kết hợp giữa ngôn ngữ Hợp ngữ (Assembly) và ngôn ngữ bậc cao (C) trên kiến trúc vi điều khiển 8051.
  • Phát triển kỹ năng thiết kế, giải mã địa chỉ và ghép nối vi điều khiển với các thiết bị ngoại vi thực tế như bộ nhớ ngoài, LCD, bộ chuyển đổi ADC, cảm biến, bàn phím ma trận và vi mạch giao tiếp 8255.

Giáo trình áp dụng cấu trúc tiếp cận từ mức vật lý - logic cơ bản (bottom-up), đi từ hệ thống số, cấu tạo CPU, đến tập lệnh Assembly, kỹ thuật lập trình C và triển khai ứng dụng thực tế. Điểm đặc thù của tài liệu là phương pháp đối chiếu song song hai luồng lập trình Assembly và C cho từng khối ngoại vi, giúp người học vừa hiểu rõ chu trình thực thi ở cấp độ thanh ghi phần cứng, vừa nắm vững kỹ thuật lập trình ứng dụng có cấu trúc.


Nội dung kiến thức cốt lõi

[Hệ thống số & Mạch logic cơ bản] 
[Tổ chức CPU & Hệ thống Bus (Address/Data/Control)] 
[Kiến trúc phần cứng Vi điều khiển 8051]
[Lập trình Assembly]  [Lập trình C]
[Ngoại vi tích hợp: Timer, Serial, Interrupts]
[Ghép nối thực tế: Memory, LCD, ADC, Sensors, 8255]

Các chương và chủ đề chính

Giáo trình được cấu trúc thành các khối nội dung nối tiếp nhau theo tiến trình logic:

  • Introduction to Computing & The 8051 Microcontrollers: Giới thiệu tổng quan về hệ thống tính toán, hệ đếm, cổng logic và sự khác biệt giữa vi xử lý đa dụng (General-purpose Microprocessor) với vi điều khiển (Microcontroller). Phân tích cấu trúc tích hợp CPU, RAM, ROM, I/O ports, Timers và COM ports trên một chip đơn.
  • 8051 Assembly Language Programming, Branch Instructions & Addressing Modes: Cung cấp tập lệnh Hợp ngữ, các chế độ định địa chỉ, cấu trúc lệnh rẽ nhánh và các lệnh thao tác số học, logic (Arithmetic & Logic Instructions).
  • 8051 Programming in C & Hardware Connection: Kỹ thuật viết mã điều khiển bằng ngôn ngữ C cho 8051, quy trình tạo tệp mã máy (Hex file) và sơ đồ kết nối phần cứng cơ sở.
  • 8051 Timer/Counter & Serial Port Programming: Phân tích cấu hình phần cứng, nguyên lý đếm và các phương pháp lập trình bộ định thời/bộ đếm (Timer/Counter), lập trình truyền thông nối tiếp UART/COM port bằng cả Assembly và C.
  • Interrupts Programming in Assembly and C: Cơ chế hoạt động của hệ thống ngắt (ngắt phần cứng, ngắt bộ định thời, ngắt truyền thông nối tiếp) và kỹ thuật lập trình phục vụ ngắt.
  • Interfacing to External Memory, LCD, ADC, Sensors, Keyboard & 8255: Kỹ thuật mở rộng không gian nhớ ngoài và phương pháp ghép nối trực tiếp với các linh kiện ngoại vi thông dụng (màn hình tinh thể lỏng LCD, bộ biến đổi tương tự - số ADC, cảm biến công nghiệp, bàn phím và vi mạch ghép nối song song lập trình được 8255).

Kiến thức nền tảng được xây dựng

Giáo trình xây dựng hệ thống lý thuyết dựa trên các nguyên lý kỹ thuật số và kiến trúc phần cứng máy tính:

  • Hệ đếm và mã hóa (Numbering and Coding Systems): Hệ thập phân (Base 10), hệ nhị phân (Base 2), hệ thập lục phân (Hexadecimal - Base 16) và bảng mã ASCII 7-bit tiêu chuẩn (ví dụ ký tự 'A' có mã $41\text{H}$, 'a' có mã $61\text{H}$).
  • Kỹ thuật số cơ sở (Digital Primer): Phân tích tín hiệu nhị phân với hai mức điện áp (Logic 0 và Logic 1), các cổng logic cơ bản (AND, OR, Inverter, XOR, NAND, NOR, Tri-state buffer dựa trên tài liệu tham khảo của Dale & Lewis trong Computer Science Illuminated); các mạch số tổ hợp và tuần tự gồm mạch cộng bán phần (Half adder), mạch cộng toàn phần (Full adder), mạch cộng 4-bit (4-bit adder), mạch giải mã địa chỉ (Address decoders như mạch giải mã địa chỉ cho giá trị $9_{10} = 1001_2$ và $5_{10} = 0101_2$), cùng phần tử nhớ Flip-flop (dựa trên tài liệu tham khảo của M. Mano trong Digital Design).
  • Tổ chức bên trong máy tính (Inside the Computer): Các đơn vị đo lường thông tin (Bit, Nibble = 4 bits, Byte = 8 bits, Word = 16 bits; Kilobyte $2^{10}$, Megabyte $2^{20}$, Gigabyte $2^{30}$, Terabyte $2^{40}$ bytes). Cấu trúc các khối CPU, bộ nhớ chính gồm RAM (Random Access Memory - khả biến) và ROM (Read Only Memory - bất biến), hệ thống bus liên kết gồm Bus địa chỉ (Address bus - đơn hướng, xác định không gian nhớ $2^x$ byte), Bus dữ liệu (Data bus - song hướng, độ rộng từ 8 đến 64 bits) và Bus điều khiển (Control bus - phát tín hiệu Read/Write).

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Thực hiện chính xác các phép toán chuyển đổi giữa hệ thập phân, nhị phân và thập lục phân (chuyển đổi $25_{10} = 11001_2$, $39_{10} = 100111_2$, $45_{10} = 2\text{D}{16}$, $629{10} = 275_{16}$, $6\text{B}2_{16} = 1714_{10}$); tính toán số học trên hệ Hex (phép cộng $23\text{D}9_{16} + 94\text{BE}{16} = \text{B}897{16}$; phép trừ $59\text{F}{16} - 2\text{B}8{16} = 2\text{E}7_{16}$); thiết kế mạch giải mã địa chỉ phần cứng và viết mã điều khiển ngoại vi.
  • Kỹ năng phân tích (Analytical skills): Phân tích chu trình xử lý lệnh của CPU thông qua bộ đếm chương trình (Program Counter), thanh ghi lệnh (Instruction Register) và khối giải mã lệnh (Instruction Decoder). Ví dụ chu trình tìm nạp và thực thi từ địa chỉ nhớ $1400\text{H}$ (lệnh nạp $\text{B}0\text{H}$ đưa dữ liệu $21\text{H}$ vào thanh ghi A), tiếp nối bởi các lệnh cộng $04\text{H}$ với dữ liệu $42\text{H}$ và $12\text{H}$, cho đến khi gặp lệnh dừng $\text{F}4\text{H}$ (HALT) tại địa chỉ $1406\text{H}$. Đồng thời, người học rèn luyện kỹ năng so sánh các họ vi điều khiển 8-bit trên thị trường (Intel 8051, Motorola 6811, Zilog Z8, Microchip PIC).
  • Kỹ năng thực hành (Practical competencies): Đấu nối mạch phần cứng, nạp tệp Hex, cấu hình bộ đếm thời gian, điều khiển truyền thông nối tiếp và xây dựng các hệ thống điều khiển ghép nối màn hình hiển thị, cảm biến đo lường và bàn phím nhập liệu.

Phương pháp giảng dạy và học tập

  1. Lý thuyết hệ số & Cổng logic (Dale & Lewis, Mano)
  2. Phân tích chu trình Bus & Thanh ghi CPU (Mô phỏng bộ nhớ 1400H-1406H)

Phương pháp tiếp cận sư phạm của giáo trình tập trung vào việc trực quan hóa luồng dữ liệu và chu trình phần cứng:

  • Phương pháp sư phạm: Kết hợp chặt chẽ giữa mô hình phần cứng trực quan và các đoạn mã lệnh tương ứng. Giáo trình minh họa chi tiết từng bước chuyển trạng thái của thanh ghi, bus địa chỉ, bus dữ liệu và đường điều khiển trong quá trình tìm nạp (Fetch) và thực thi (Execute) lệnh.
  • Bài tập và nghiên cứu trường hợp (Case studies):
    • Cung cấp các dạng bài tập chuyển đổi hệ đếm từng bước (phương pháp chia 2 liên tiếp lấy số dư, phương pháp tính theo trọng số bit $2^n$).
    • Bài toán thực hiện phép tính cộng/trừ thập lục phân có nhớ (carry) và mượn (borrow).
    • Phân tích các ca ứng dụng thực tế của vi điều khiển trong đời sống: thiết bị gia dụng (Home: máy giặt, lò vi sóng, hệ thống an ninh, điều hòa), thiết bị văn phòng (Office: máy in laser, máy photocopy, máy fax) và thiết bị ô tô (Auto: hệ thống phanh ABS, điều khiển túi khí, máy tính hành trình - trip computer, điều khiển động cơ).
  • Bài tập thực hành: Viết chương trình điều khiển cổng I/O, thiết lập thông số cho Timer/Counter hoạt động ở các chế độ khác nhau, cấu hình tốc độ baud cho cổng nối tiếp, viết chương trình ngắt và thiết kế sơ đồ giao tiếp IC 8255 với các thiết bị ngoại vi.
  • Phương pháp đánh giá: Đánh giá thông qua các bài kiểm tra trắc nghiệm/tự luận về tính toán logic số, bài tập phân tích mã nguồn Assembly/C, và các bài thực hành thiết kế mạch ghép nối phần cứng trên mô hình mô phỏng hoặc bo mạch thực nghiệm.
  • Hướng dẫn tự học: Người học cần thực hiện tuần tự các ví dụ tính toán số học và lần vết (trace) luồng thực thi của bộ đếm chương trình (PC) trước khi cài đặt phần mềm biên dịch để viết mã C và Assembly.

Điểm nổi bật và cập nhật

Ấn bản thứ hai (Second Edition) của giáo trình có những cập nhật và định hướng kỹ thuật cụ thể:

  • Tích hợp lập trình C chuyên sâu: Bổ sung toàn diện phần lập trình bằng ngôn ngữ C song song với Assembly cho tất cả các khối ngoại vi (I/O, Timer, Serial Port, Interrupts), đáp ứng sự chuyển dịch trong kỹ thuật lập trình nhúng từ hợp ngữ sang ngôn ngữ bậc cao.
  • Phân tích xu hướng ứng dụng vi xử lý x86 trong hệ thống nhúng (x86 PC Embedded Applications): Phân tích các trường hợp ứng dụng vi xử lý đa dụng x86 được tối ưu hóa cho các hệ thống nhúng cao cấp đòi hỏi năng lực xử lý phức tạp, tận dụng thư viện phần mềm phong phú và nền tảng hệ điều hành Windows sẵn có để rút ngắn thời gian phát triển sản phẩm.
  • Tiêu chí công nghiệp trong việc lựa chọn vi điều khiển (Criteria for Choosing a Microcontroller): Hệ thống hóa các tiêu chí kỹ thuật mà kỹ sư cần cân nhắc khi lựa chọn vi điều khiển cho một dự án nhúng cụ thể:
    1. Tốc độ xử lý (Speed).
    2. Dạng bao gói IC (Packaging).
    3. Mức tiêu thụ công suất (Power consumption) - yếu tố quan trọng trong việc tiết kiệm năng lượng và diện tích không gian mạch.
    4. Dung lượng bộ nhớ RAM và ROM tích hợp trên chip.
    5. Số lượng chân I/O và số lượng bộ định thời Timer trên chip.
    6. Khả năng nâng cấp lên các phiên bản hiệu năng cao hơn hoặc tiêu thụ công suất thấp hơn.
    7. Giá thành trên từng đơn vị sản phẩm (Cost per unit).

Đối tượng sử dụng giáo trình

Nhóm đối tượng Yêu cầu kiến thức tiên quyết (Prerequisites) Mục đích sử dụng chính
Sinh viên đại học (Năm 2 - Năm 3) Đại số logic cơ bản, Cấu trúc máy tính đại cương, Ngôn ngữ C Học phần Vi xử lý, Vi điều khiển, Kỹ thuật ghép nối ngoại vi, Thiết kế hệ thống nhúng
Học viên cao học Kiến trúc máy tính, Kỹ thuật số nâng cao Nghiên cứu kiến trúc vi điều khiển, tối ưu hóa hệ thống nhúng năng lượng thấp
Giảng viên đại học Chuyên môn Kỹ thuật Điện tử / Khoa học Máy tính Sử dụng làm đề cương, tài liệu giảng dạy lý thuyết, ngân hàng bài tập và slide bài giảng
Kỹ sư phát triển / Tự học Tư duy lập trình phần cứng, đọc hiểu sơ đồ mạch điện tử Tài liệu tra cứu tập lệnh, phương pháp ghép nối chuẩn IC ngoại vi (LCD, ADC, 8255, Sensors)

Câu hỏi thường gặp

1. Giáo trình này phù hợp với đối tượng nào?

Giáo trình được thiết kế cho sinh viên ngành Kỹ thuật Điện, Điện tử, Viễn thông, Khoa học Máy tính, Kỹ thuật Điều khiển và Tự động hóa, cũng như các kỹ sư phần mềm nhúng cần nắm vững nền tảng ghép nối phần cứng và lập trình vi điều khiển 8-bit.

2. Người học cần chuẩn bị kiến thức nền tảng gì trước khi đọc tài liệu này?

Cần nắm vững kiến thức toán nhị phân, các phép toán logic cơ bản (AND, OR, NOT, XOR), nguyên lý mạch số cơ bản (Flip-flop, cổng logic, mạch cộng) và các khái niệm cơ bản về cấu trúc dữ liệu - lập trình ngôn ngữ C.

3. Điểm khác biệt của giáo trình Mazidi so với các tài liệu vi điều khiển khác là gì?

Giáo trình giảng dạy song song cả Hợp ngữ (Assembly) và ngôn ngữ C cho cùng một kiến trúc phần cứng. Mọi khối chức năng (I/O, Timer, Serial, Interrupts) đều có mã nguồn đối ứng ở cả hai ngôn ngữ, đi kèm sơ đồ giải thích chi tiết mức thanh ghi và chu trình tín hiệu bus.

4. Phương pháp tự học giáo trình này như thế nào để đạt hiệu quả cao?

Người học nên đi tuần tự từ phần hệ đếm, mạch logic số và cấu trúc thanh ghi CPU (từ Chương 1 đến Chương 2). Sau đó, thực hành viết lại các ví dụ mã Assembly để hiểu rõ hoạt động phần cứng, tiếp tục chuyển sang lập trình C và cuối cùng là thực hiện các bài tập ghép nối linh kiện ngoại vi (LCD, ADC, bàn phím).

5. Tài liệu có sử dụng các nguồn tham khảo bổ trợ nào?

Tài liệu trích dẫn và đối chiếu kiến thức từ các giáo trình kỹ thuật số kinh điển, bao gồm Computer Science Illuminated của Nell Dale & John Lewis (về các cổng logic và cấu trúc máy tính) và Digital Design của M. Morris Mano (về thiết kế mạch logic, mạch cộng, mạch giải mã và flip-flop), cùng hệ thống bài giảng của TS. Chung-Ping Young (HANEL Lab, Khoa Khoa học Máy tính & Kỹ thuật Thông tin - Đại học Quốc gia Thành Công, Đài Loan).


Kết luận

Giáo trình The 8051 Microcontroller and Embedded Systems Using Assembly and C (Second Edition) của Muhammad Ali Mazidi, Janice Gillispie Mazidi và Rolin D. McKinlay cung cấp cấu trúc học tập hoàn chỉnh về kiến trúc phần cứng, phương pháp lập trình Hợp ngữ/C và kỹ thuật ghép nối vi điều khiển 8051. Lộ trình đào tạo đi từ bản chất chuyển đổi tín hiệu số, cấu tạo vi xử lý/vi điều khiển đến kỹ thuật mở rộng hệ thống nhúng trong các ứng dụng gia dụng, văn phòng và công nghiệp. Tài liệu kết hợp chặt chẽ với các nguồn tham khảo chuẩn mực từ M. Morris Mano, Nell Dale & John Lewis cùng hệ thống bài giảng học thuật của Đại học Quốc gia Thành Công (NCKU), tạo nên nền tảng lý thuyết và thực hành chuẩn xác cho đào tạo kỹ thuật máy tính và hệ thống nhúng.