Vi điều khiển 8051 và Hệ thống nhúng: Lập trình bằng Assembly và C (Bản tiếng Anh)

Trường đại học

National Cheng Kung University

Chuyên ngành

Hệ thống nhúng

Người đăng

Ẩn danh

Thể loại

Sách giáo khoa
617
0
0

Phí lưu trữ

135 Point

Tóm tắt

I. Tổng quan về vi điều khiển 8051 và hệ thống nhúng

Vi điều khiển 8051 là một trong những dòng chip phổ biến nhất trong lĩnh vực hệ thống nhúng. Được Intel giới thiệu năm 1980, 8051 nhanh chóng trở thành tiêu chuẩn công nghiệp. Chip này tích hợp CPU, RAM, ROM, bộ đếm thời gian và cổng I/O trên cùng một vi mạch. Hệ thống nhúng sử dụng vi điều khiển để thực hiện các tác vụ chuyên dụng. Chúng xuất hiện trong thiết bị gia dụng, thiết bị y tế, hệ thống tự động hóa công nghiệp. Lập trình 8051 có thể thực hiện bằng ngôn ngữ Assembly hoặc ngôn ngữ C. Assembly cho phép kiểm soát trực tiếp phần cứng ở mức bit. C cung cấp khả năng phát triển nhanh với mã nguồn dễ bảo trì. Sự kết hợp hai ngôn ngữ này tạo ra giải pháp tối ưu cho dự án nhúng. Cuốn sách của Mazidi là tài liệu tham khảo hàng đầu về chủ đề này. Học viên và kỹ sư sử dụng nó để nắm vững nguyên lý thiết kế hệ thống nhúng.

1.1. Lịch sử phát triển của vi điều khiển 8051

Vi điều khiển 8051 ra đời năm 1980 do Intel thiết kế. Ban đầu, chip được sử dụng trong các ứng dụng công nghiệp đơn giản. Kiến trúc 8-bit với bus dữ liệu 8 bit phù hợp cho điều khiển thiết bị ngoại vi. Sau khi Intel công bố thông số kỹ thuật, nhiều hãng sản xuất khác nhau bắt đầu chế tạo phiên bản tương thích. Các hãng như Atmel, Philips, Dallas Semiconductor đều phát triển biến thể riêng. Phiên bản AT89C51 của Atmel rất phổ biến trong giáo dục và phát triển sản phẩm. Ngày nay, dù có nhiều vi điều khiển mới hơn, 8051 vẫn được sử dụng rộng rãi nhờ tính ổn định.

1.2. Vai trò của hệ thống nhúng trong công nghệ hiện đại

Hệ thống nhúng là nền tảng của thế giới công nghệ kết nối hiện đại. Chúng điều khiển mọi thứ từ điện thoại thông minh đến thiết bị gia dụng thông minh. Trong ô tô, hệ thống nhúng quản lý động cơ, phanh ABS và túi khí. Ngành y tế sử dụng chúng trong máy theo dõi bệnh nhân và thiết bị chẩn đoán. Nhà máy thông minh dựa vào hệ thống nhúng để tự động hóa quy trình sản xuất. Internet vạn vật thúc đẩy nhu cầu về vi điều khiển giá rẻ, tiêu thụ ít năng lượng. Vi điều khiển 8051 đóng vai trò quan trọng trong nhiều ứng dụng này nhờ chi phí thấp và độ tin cậy cao.

II. Kiến trúc phần cứng và bộ nhớ của vi điều khiển 8051

Kiến trúc của vi điều khiển 8051 dựa trên mô hình Harvard. Hệ thống này tách biệt bus chương trình và bus dữ liệu. Điều này cho phép truy cập đồng thời cả hai vùng nhớ. 8051 tích hợp 128 byte RAM nội bộ cho dữ liệu tạm thời. Bộ nhớ chương trình ROM có dung lượng 4KB lưu trữ mã lệnh. Cấu trúc này đủ cho nhiều ứng dụng điều khiển đơn giản. Bus địa chỉ 16 bit cho phép truy cập tối đa 64KB bộ nhớ ngoài. Bus dữ liệu 8 bit truyền tải thông tin giữa CPU và các thành phần. Bốn cổng I/O cung cấp 32 chân kết nối thiết bị ngoại vi. Mỗi cổng có thanh ghi riêng biệt để đọc và ghi dữ liệu. Bộ đếm thời gian 16 bit hỗ trợ tạo tín hiệu PWM và đếm sự kiện. Cổng nối tiếp cho phép truyền thông UART tốc độ cao. Kiến trúc này tạo nền tảng vững chắc cho phát triển hệ thống nhúng.

2.1. Cấu trúc bộ nhớ trong vi điều khiển 8051

Bộ nhớ trong 8051 được chia thành nhiều vùng chức năng riêng biệt. Vùng nhớ chương trình ROM chứa mã lệnh thực thi, thường có dung lượng 4KB hoặc 8KB. RAM nội bộ 128 byte lưu trữ biến và thanh ghi làm việc. 16 byte đầu tiên của RAM có thể truy cập theo bit riêng lẻ. Đây là vùng bit-addressable rất hữu ích cho cờ hiệu và tín hiệu điều khiển. Các thang ghi đặc biệt SFR điều khiển hoạt động của các peripheral. Bộ nhớ ngoài mở rộng thêm dung lượng khi cần thiết. Thiết kế bộ nhớ này giúp tối ưu hóa hiệu suất và chi phí hệ thống.

2.2. Bus dữ liệu và bus địa chỉ trong kiến trúc 8051

Bus địa chỉ và bus dữ liệu là xương sống truyền thông của vi điều khiển. Bus địa chỉ 16 bit của 8051 có thể truy cập 64KB bộ nhớ. Bus này hoạt động một chiều, từ CPU đến thiết bị ngoại vi. Bus dữ liệu 8 bit truyền tải thông tin hai chiều giữa các thành phần. Trong hoạt động bình thường, cổng P0 đóng vai trò bus dữ liệu đa công. Cổng P2 kết hợp với P0 tạo bus địa chỉ 16 bit đầy đủ. Khi truy cập bộ nhớ ngoài, tín hiệu ALE phân tách địa chỉ thấp. Thiết kế bus này đảm bảo hiệu suất truyền thông ổn định cho hệ thống nhúng.

III. Phương pháp lập trình vi điều khiển 8051 bằng Assembly và C

Lập trình vi điều khiển 8051 sử dụng hai ngôn ngữ chính: Assembly và C. Assembly cung cấp khả năng kiểm soát tuyệt đối phần cứng. Mỗi lệnh Assembly tương ứng trực tiếp với một mã opcode máy. Ngôn ngữ này tối ưu hóa tốc độ thực thi và kích thước chương trình. Tuy nhiên, mã Assembly khó đọc và khó bảo trì trong dự án lớn. Ngôn ngữ C giải quyết vấn đề này với cú pháp gần gũi người dùng. Trình biên dịch C chuyển đổi mã nguồn thành mã máy hiệu quả. Lập trình viên có thể nhúng mã Assembly trong chương trình C khi cần. Kỹ thuật này kết hợp ưu điểm của cả hai ngôn ngữ. Công cụ phát triển phổ biến bao gồm Keil µVision và SDCC. Trình gỡ lỗi hỗ trợ kiểm tra giá trị thanh ghi và bộ nhớ thời gian thực. Quy trình phát triển từ viết mã, biên dịch, mô phỏng đến tải vào chip. Phương pháp này đảm bảo chất lượng và độ tin cậy cho sản phẩm cuối cùng.

3.1. Lập trình Assembly cho vi điều khiển 8051

Lập trình Assembly 8051 sử dụng tập lệnh gồm 111 lệnh cơ bản. Các lệnh được phân loại thành lệnh di chuyển dữ liệu, lệnh số học và lệnh nhánh. Lệnh MOV truyền dữ liệu giữa thanh ghi và bộ nhớ. Lệnh ADD và SUB thực hiện phép tính cộng trừ đơn giản. Lệnh nhánh như SJMP, LJMP điều khiển luồng chương trình. Địa chỉ hóa trực tiếp, gián tiếp và ngay lập tức cung cấp灵活性 truy cập dữ liệu. Mã Assembly biên dịch thành file HEX để tải vào ROM. Hiểu rõ tập lệnh giúp viết chương trình tối ưu và tiết kiệm tài nguyên.

3.2. Lập trình C cho vi điều khiển 8051

Lập trình C cho 8051 sử dụng trình biên dịch chuyên dụng như Keil C51 hoặc SDCC. Các kiểu dữ liệu cơ bản bao gồm char, int, long phù hợp với kiến trúc 8 bit. Từ khóa special cho phép truy cập trực tiếp thanh ghi SFR. Hàm ngắt được khai báo với từ khóa interrupt để xử lý sự kiện thời gian thực. Thư viện chuẩn cung cấp hàm điều khiển cổng nối tiếp, timer và ngắt. Trình biên dịch tối ưu hóa mã nguồn thành mã máy hiệu quả. Lập trình C giúp giảm thời gian phát triển và tăng khả năng bảo trì dự án.

IV. Ứng dụng và tương lai của vi điều khiển 8051 trong hệ thống nhúng

Vi điều khiển 8051 có lịch sử ứng dụng phong phú trong nhiều lĩnh vực công nghiệp. Trong tự động hóa nhà máy, 8051 điều khiển băng chuyền và robot công nghiệp. Thiết bị gia dụng thông minh sử dụng chip này để quản lý hoạt động hàng ngày. Hệ thống an ninh bao gồm camera giám sát và báo động dựa trên 8051. Thiết bị đo lường công nghiệp áp dụng 8051 để thu thập và xử lý dữ liệu. Giao tiếp với cảm biến LCD, ADC và các module ngoại vi rất thuận tiện. Cổng nối tiếp cho phép kết nối với máy tính và thiết bị mạng. Dù công nghệ mới liên tục xuất hiện, 8051 vẫn giữ vị trí quan trọng. Chi phí sản xuất thấp và hệ sinh thái phát triển phong phú là lợi thế lớn. Cộng đồng kỹ sư hỗ trợ mạnh mẽ với nhiều tài liệu và dự án mã nguồn mở. Tương lai của 8051 nằm trong các ứng dụng IoT và thiết bị tiêu thụ ít năng lượng.

4.1. Giao tiếp vi điều khiển 8051 với thiết bị ngoại vi

Giao tiếp với thiết bị ngoại vi là chức năng cốt lõi của hệ thống nhúng. Vi điều khiển 8051 kết nối với LCD hiển thị thông tin qua giao tiếp song song hoặc nối tiếp. Bộ chuyển đổi ADC chuyển tín hiệu analog từ cảm biến thành dữ liệu số. Module cảm biến đo nhiệt độ, độ ẩm, ánh sáng và nhiều đại lượng vật lý khác. Bàn phím matrix cho phép người dùng nhập liệu và điều khiển hệ thống. Chip 8255 mở rộng thêm cổng I/O khi cần kết nối nhiều thiết bị. Giao thức SPI và I2C hỗ trợ truyền thông tốc độ cao với các module phức tạp hơn. Thiết kế mạch giao tiếp đúng cách đảm bảo độ ổn định và tin cậy hệ thống.

4.2. Xu hướng phát triển và vai trò của 8051 trong kỷ nguyên IoT

Internet vạn vật tạo ra cơ hội mới cho vi điều khiển 8051. Các ứng dụng IoT yêu cầu thiết bị nhỏ gọn, tiêu thụ ít năng lượng và chi phí thấp. 8051 phù hợp với tiêu chí này nhờ kiến trúc đơn giản và hiệu quả. Module Wi-Fi và Bluetooth kết nối với 8051 để truyền dữ liệu lên đám mây. Hệ thống giám sát môi trường sử dụng 8051 thu thập dữ liệu cảm biến liên tục. Nhà thông minh áp dụng 8051 trong công tắc, ổ cắm và thiết bị điều khiển từ xa. Công nghệ sản xuất mới giúp giảm kích thước và tăng hiệu suất chip 8051. Vai trò của 8051 sẽ tiếp tục mở rộng trong thị trường IoT đang phát triển nhanh chóng.

21/04/2026

Trích đoạn nội dung tài liệu

org The 8051 Microcontroller and Embedded Systems Using Assembly and C Second Edition Muhammad Ali Mazidi Janice Gillispie Mazidi Rolin D. McKinlay CONTENTS ˆ Introduction to Computing ˆ The 8051 Microcontrollers ˆ 8051 Assembly Language Programming ˆ Branch Instructions ˆ I/O Port Programming ˆ 8051 Addressing Modes ˆ Arithmetic & Logic Instructions And Programs ˆ 8051 Programming in C ˆ 8051 Hardware Connection and Hex File ˆ 8051 Timer/Counter Programming in Assembly and C ˆ 8051 Serial Port Programming in Assembly and C ˆ Interrupts Programming in Assembly and C ˆ 8051 Interfacing to External Memory ˆ 8051 Real World Interfacing I: LCD,ADC AND SENSORS ˆ LCD and Keyboard Interfacing ˆ 8051 Interfacing with 8255 INTRODUCTION TO COMPUTING The 8051 Microcontroller and Embedded Systems: Using Assembly and C Mazidi, Mazidi and McKinlay Chung-Ping Young 楊中平 Home Automation, Networking, and Entertainment Lab Dept. of Computer Science and Information Engineering National Cheng Kung University, TAIWAN www.org ‰ Numbering and coding systems OUTLINES ‰ Digital primer ‰ Inside the computer Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 2 ‰ Human beings use base 10 (decimal) NUMBERING AND CODING arithmetic SYSTEMS ¾ There are 10 distinct symbols, 0, 1, 2, …, 9 Decimal and ‰ Computers use base 2 (binary) system Binary Number ¾ There are only 0 and 1 Systems ¾ These two binary digits are commonly referred to as bits Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 3 ‰ Divide the decimal number by 2 NUMBERING AND CODING repeatedly SYSTEMS ‰ Keep track of the remainders ‰ Continue this process until the quotient Converting becomes zero from Decimal ‰ Write the remainders in reverse order to Binary to obtain the binary number Ex. Convert 2510 to binary Quotient Remainder 25/2 = 12 1 LSB (least significant bit) 12/2 = 6 0 6/2 = 3 0 3/2 = 1 1 1/2 = 0 1 MSB (most significant bit) Therefore 2510 = 110012 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 4 www.org ‰ Know the weight of each bit in a binary NUMBERING number AND CODING ‰ Add them together to get its decimal SYSTEMS equivalent Converting Ex. Convert 110012 to decimal from Binary to Weight: 24 23 22 21 20 Decimal Digits: 1 1 0 0 1 Sum: 16 + 8+ 0+ 0+ 1 = 2510 ‰ Use the concept of weight to convert a decimal number to a binary directly Ex. Convert 3910 to binary 32 + 0 + 0 + 4 + 2 + 1 = 39 Therefore, 3910 = 1001112 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 5 ‰ Base 16, the NUMBERING AND CODING hexadecimal system, Decimal Binary Hex SYSTEMS is used as a 0 0000 0 1 0001 1 convenient 2 0010 2 Hexadecimal representation of 3 0011 3 4 0100 4 System binary numbers 5 0101 5 ¾ ex. 6 0110 6 7 0111 7 It is much easier to 8 1000 8 represent a string of 0s 9 1001 9 and 1s such as 10 1010 A 100010010110 as its 11 1011 B hexadecimal equivalent of 12 1100 C 896H 13 1101 D 14 1110 E 15 1111 F Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 6 ‰ To represent a binary number as its NUMBERING equivalent hexadecimal number AND CODING ¾ Start from the right and group 4 bits at a SYSTEMS time, replacing each 4-bit binary number with its hex equivalent Converting between Binary Ex. Represent binary 100111110101 in hex and Hex 1001 1111 0101 = 9 F 5 ‰ To convert from hex to binary ¾ Each hex digit is replaced with its 4-bit binary equivalent Ex. Convert hex 29B to binary 2 9 B = 0010 1001 1011 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 7 www.org ‰ Convert to binary first and then NUMBERING AND CODING convert to hex SYSTEMS ‰ Convert directly from decimal to hex by repeated division, keeping track of Converting the remainders from Decimal to Hex Ex. Convert 4510 to hex 32 16 8 4 2 1 1 0 1 1 0 1 32 + 8 + 4 + 1 = 45 4510 = 0010 11012 = 2D16 Ex. Convert 62910 to hex 512 256 128 64 32 16 8 4 2 1 1 0 0 1 1 1 0 1 0 1 62910 = 512+64+32+16+4+1 = 0010 0111 01012 = 27516 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 8 ‰ Convert from hex to binary and then to NUMBERING AND CODING decimal SYSTEMS ‰ Convert directly from hex to decimal by summing the weight of all digits Converting from Hex to Ex. 6B216 = 0110 1011 00102 1024 512 256 128 64 32 16 8 4 2 1 Decimal 1 1 0 1 0 1 1 0 0 1 0 1024 + 512 + 128 + 32 + 16 + 2 = 171410 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 9 ‰ Adding the digits together from the NUMBERING AND CODING least significant digits SYSTEMS ¾ If the result is less than 16, write that digit as the sum for that position Addition of Hex ¾ If it is greater than 16, subtract 16 from it Numbers to get the digit and carry 1 to the next digit Ex. Perform hex addition: 23D9 + 94BE 23D9 LSD: 9 + 14 = 23 23 – 16 = 7 w/ carry + 94BE 1 + 13 + 11 = 25 25 – 16 = 9 w/ carry B897 1+3+4=8 MSD: 2 + 9 = B Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 10 www.org ‰ If the second digit is greater than the NUMBERING AND CODING first, borrow 16 from the preceding SYSTEMS digit Ex. Perform hex subtraction: 59F – 2B8 Subtraction of Hex Numbers 59F LSD: 15 – 8 = 7 – 2B8 9 + 16 – 11 = 14 = E16 2E7 5–1–2=2 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 11 ‰ The ASCII (pronounced “ask-E”) code NUMBERING assigns binary patterns for AND CODING ¾ Numbers 0 to 9 SYSTEMS ¾ All the letters of English alphabet, uppercase and lowercase ASCII Code ¾ Many control codes and punctuation marks ‰ The ASCII system uses 7 bits to represent each code Hex Symbol Hex Symbol Selected ASCII codes 41 A 61 a 42 B 62 b 43 C 63 c 44 D 64 d . … 59 Y 79 y 5A Z 7A z Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 12 ‰ Two voltage levels can be represented DIGITAL PRIMER as the two digits 0 and 1 ‰ Signals in digital electronics have two Binary Logic distinct voltage levels with built-in tolerances for variations in the voltage ‰ A valid digital signal should be within either of the two shaded areas 5 4 Logic 1 3 2 1 Logic 0 0 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 13 www.org ‰ AND gate DIGITAL PRIMER Logic Gates Computer Science Illuminated, Dale and Lewis ‰ OR gate Computer Science Illuminated, Dale and Lewis Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 14 ‰ Tri-state buffer DIGITAL PRIMER ‰ Inverter Logic Gates (cont’) Computer Science Illuminated, Dale and Lewis ‰ XOR gate Computer Science Illuminated, Dale and Lewis Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 15 ‰ NAND gate DIGITAL PRIMER Logic Gates (cont’) Computer Science Illuminated, Dale and Lewis ‰ NOR gate Computer Science Illuminated, Dale and Lewis Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 16 www.org DIGITAL PRIMER Half adder Logic Design Using Gates Full adder Digital Design, Mano Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 17 DIGITAL PRIMER 4-bit adder Logic Design Using Gates (cont’) Digital Design, Mano Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 18 ‰ Decoders DIGITAL ¾ Decoders are widely used for address PRIMER decoding in computer design Logic Design Address Decoders Using Gates (cont’) Address decoder for 9 (10012) Address decoder for 5 (01012) The output will be 1 if and The output will be 1 if and only if the input is 10012 only if the input is 01012 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 19 www.org ‰ Flip-flops DIGITAL ¾ Flip-flops are frequently used to store data PRIMER Logic Design Using Gates (cont’) Digital Design, Mano Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 20 ‰ The unit of data size INSIDE THE ¾ Bit : a binary digit that can have the value COMPUTER 0 or 1 Important ¾ Byte : 8 bits Terminology ¾ Nibble : half of a bye, or 4 bits ¾ Word : two bytes, or 16 bits ‰ The terms used to describe amounts of memory in IBM PCs and compatibles ¾ Kilobyte (K): 210 bytes ¾ Megabyte (M) : 220 bytes, over 1 million ¾ Gigabyte (G) : 230 bytes, over 1 billion ¾ Terabyte (T) : 240 bytes, over 1 trillion Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 21 ‰ CPU (Central Processing Unit) INSIDE THE ¾ Execute information stored in memory COMPUTER ‰ I/O (Input/output) devices ¾ Provide a means of communicating with Internal CPU Organization of ‰ Memory Computers ¾ RAM (Random Access Memory) – temporary storage of programs that computer is running ƒ The data is lost when computer is off ¾ ROM (Read Only Memory) – contains programs and information essential to operation of the computer ƒ The information cannot be changed by use, and is not lost when power is off – It is called nonvolatile memory Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 22 www.org INSIDE THE COMPUTER Internal Address bus Organization of Computers Memory Peripherals (cont’) CPU (monitor, (RAM, ROM) printer, etc.) Data bus Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 23 ‰ The CPU is connected to memory and INSIDE THE COMPUTER I/O through strips of wire called a bus ¾ Carries information from place to place Internal ƒ Address bus Organization of ƒ Data bus ƒ Control bus Computers (cont’) Address bus RAM ROM Printer Disk Monitor Keyboard CPU Data bus Read/ Write Control bus Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 24 ‰ Address bus INSIDE THE ¾ For a device (memory or I/O) to be COMPUTER recognized by the CPU, it must be assigned an address Internal ƒ The address assigned to a given device must Organization of be unique Computers ƒ The CPU puts the address on the address bus, (cont’) and the decoding circuitry finds the device ‰ Data bus ¾ The CPU either gets data from the device or sends data to it ‰ Control bus ¾ Provides read or write signals to the device to indicate if the CPU is asking for information or sending it information Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 25 www.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ