Trong bài viết này, chúng ta sẽ đi tìm hiểu về vi điều khiển 8051. Đầu tiên chúng ta sẽ tìm hiểu sự ra đời của vi điều khiển 8051 và quá trình phát triển của nó.
Thứ hai, tìm hiểu kiến trúc bên trong của vi điều khiển như sơ đồ cấu tạo, các thanh ghi, bộ định thời, bộ đếm, cổng serial, bộ ngắt và nhiều tính năng khác. Tiếp theo, sẽ xem xét nguyên làm việc với các thiết bị ngoại vi.
Thứ ba, sẽ xem xét sơ đồ chân và cách hoạt động của các chân tương ứng đặc biệt là các chân GPIO. Sau đó là cách lập trình các chân GPIO.
Tập đoàn Intel là công ty đầu tiên trình làng bộ vi điều khiển 8051 trên thị trường. Nó là một vi điều khiển 8-bit, có 128 byte RAM trên chip, ROM 4k byte. hai bộ định thời, một cổng nối tiếp (serial), bốn cổng I/O đa chức năng. Mỗi cổng có một thanh ghi 8-bit.
Bộ xử lý trung tâm cũng là 8 bit. Do đó muốn xử lý dữ liệu lớn hơn phải chia dữ liệu thành các dữ liệu 8-bit.
Ngoài ra, có nhiều phiên bản với tốc độ xử lý khác nhau, dung lượng RAM và ROM trên chip cũng được cung cấp. Nhưng tất cả các phiên bản này hoạt động giống nhau nên một chương trình điều khiển có thể nạp và chạy trên bất kỳ phiên bản nào của họ 8051.
Đặc trưng | Khả dụng |
ROM | 4K byte |
RAM | 128 byte |
Chân I/O | 32 |
Bộ định thời | 2 |
Cổng nối tiếp | 1 |
Bộ Ngắt | 6 |
Có 40 chân khác nhau. Xem sơ đồ cấu hình chân 8051 theo hình dưới đây
Một số nhà sản xuất cũng có vi điều khiển 8051 20 chân với số lượng chân I/O ít hơn. Như thể hiện trong sơ đồ chân, nó có 40 chân trong số đó 32 chân dành riêng cho bốn cổng GPIO.
Trong phần này chúng ta sẽ tìm hiểu về kiến trúc bên trong và các thanh ghi chính của 8051. Thanh ghi được sử dụng chủ yếu trong lập trình vi điều khiển bằng hợp ngữ (ngôn ngữ assembly). Nhưng đối với lập trình c, chúng ta chỉ cần biết một số thanh ghi. Các thanh ghi được sử dụng để thực hiện các lệnh MOV và ADD.
Thanh ghi được sử dụng để lưu trữ các lệnh và dữ liệu tạm thời. Vi điều khiển 8051 có 8 thanh ghi. Các thanh ghi có 8 bit bắt đầu từ D0- D7.
Trong đó bit D0 là bit trọng số thấp nhất và D7 là bit trọng số cao nhất. Để xử lý dữ liệu lớn hơn 8 bit bạn phải chia dữ liệu đó thành các dữ liệu 8bit. Có hai loại thanh ghi là thanh ghi cho chức năng chung và thanh ghi chức năng đặc biệt. Dưới đây là các thanh ghi cho chức năng chung thường được sử dụng.
Vi điều khiển 8051 chỉ có một kiểu dữ liệu 8 bit. Kích thước thanh ghi cũng là 8 bit. Nếu dữ liệu lớn hơn 8 bit, thì bạn phải chia nhỏ dữ liệu thành các dữ liệu 8 bit để xử lý. Lệnh DB là chỉ thị dữ liệu được sử dụng rộng rãi nhất trong lập trình hợp ngữ.
Thanh ghi trạng thái hay còn gọi là thanh ghi flag. Thanh ghi flag được sử dụng để hiển thị trạng thái các lệnh logic số học như bit nhớ, bit nhớ 0, v.v. PSW là một thanh ghi 8 bit.
Chỉ có 6 bit được sử dụng. Thanh ghi PSW còn được gọi là thanh ghi flag, mỗi thanh ghi flag có 8 bit flag. Bốn flag được gọi là flag điều kiện chỉ thực hiện lệnh nếu điều kiện được đáp ứng.
Các flag điều kiện này là: flag tràn OV (overflow), flag chẳn lẻ P (parity), flag nhớ phụ AC (auxiliary carry), flag nhớ CY (carry). Bit số 3 và số 4 của thanh ghi PSW được sử dụng để thay đổi thanh ghi lập trình. Bit số 1 và số 5 của thanh ghi trạng thái chương trình không được sử dụng và nó có thể được người lập trình sử dụng cho bất cứ chức năng nào.
32 byte RAM dành riêng cho các thanh ghi lập trình (bank) và stack. 32 byte này được chia thành bốn bank. Mỗi bank có 8 thanh ghi từ R0 đến R7. Thanh ghi bank 1 bắt đầu từ địa chỉ 00H đến 07H.
Thanh ghi bank số 2 bắt đầu từ địa chỉ 08H và kết thúc là 0FH. Thanh ghi bank số 3 bắt đầu từ 10H và kết thúc ở địa chỉ 17H. Thanh ghi bank cuối cùng có địa chỉ từ 18H đến 1FH.
Ngăn xếp (stack) là một phần của RAM được bộ xử lý sử dụng để lưu trữ dữ liệu hoặc địa chỉ tạm thời. Vì số lượng thanh ghi rất hạn chế để lưu trữ dữ liệu và địa chỉ nên stack rất qun trọng.
Con trỏ ngăn xếp (Stack pointer) của 8051 là 8 bit nên có thể chứa dữ liệu từ 00 đến FFH. Con trỏ ngăn xếp được CPU sử dụng để truy cập stack. Khi được kích hoạt, con trỏ ngăn xếp có giá trị là 07.
Có tổ chức bộ nhớ phức tạp. Bởi vì vi điều khiển 8051 có bus địa chỉ riêng biệt cho bộ nhớ chương trình, bộ nhớ dữ liệu và RAM mở rộng. Dựa trên kiến trúc vi mạch Harvard do Harvard phát triển vào năm 1944.
Bộ vi xử lý tìm nạp dữ liệu theo nhiều cách khác nhau. Dữ liệu thường được lưu trữ trong thanh ghi, bộ nhớ và có thể được sử dụng từ giá trị tức thời. Các cách truy cập dữ liệu khác nhau này được gọi là các chế độ định địa chỉ. Các bộ vi điều khiển khác nhau có các chế độ định địa chỉ khác nhau phụ thuộc vào thiết kế của nhà sản xuất. 8051 có 5 chế độ định địa chỉ.
Có 4 cổng I/O để giao tiếp với ngoại vi. Bao gồm các cổng P0, P1, P2, P3, mỗi cổng có 8 bit. Mỗi bit tương ứng với một chân vào ra. Reset các chân này trở thành cổng đầu vào. Nói cách khác, chúng có thể được sử dụng làm đầu vào. Nhưng tất cả các cổng đều có thể được cấu hình làm đầu vào hoặc đầu ra.
Để sử dụng cổng 0 thì mỗi chân của cổng này phải được nối với điện trở kéo 10k ohm. Các cổng còn lại được cấu hình là ngõ vào hay ra bằng cách ghi 0 hoặc 1 cho tất cả các bit, không cần sử dụng điện trở kéo ở các cổng này.
Thông thường chúng ta chỉ truy cập một vài bit của một cổng. Bộ vi điều khiển 8051 có lệnh để bạn có thể truy cập được các bit riêng lẻ.
Ví dụ bạn muốn truy cập bit 0 ở cổng 1, bạn sẽ sử dụng lệnh bit P1.0 để truy cập đến bit 0 ở cổng 1. Tương tự bạn có thể truy cập bất kỳ bit nào ở bất kỳ cổng nào. Bạn có thể tự thực hiện điều này mời bạn xem phần cách lập trình trong phần sau của bài viết này. Xem hướng dẫn về cách sử dụng các cổng đầu vào đầu ra của vi điều khiển 8051:
Bộ vi điều khiển có các tính năng sau. Ngoài ra bạn có thể kết nối thêm các thành phần bổ sung để thêm tính năng:
Như đã đề cập trước đó, vi điều khiển 8051 có 4 cổng I/O, 2 bộ định thời có thể được sử dụng như một bộ định thời hoặc bộ đếm. Nó có một cổng giao tiếp nối tiếp có thể sử dụng như một cổng I/O hoặc giao tiếp UART. Tất cả các tính năng khác cũng được hiển thị trong sơ đồ khối. Sơ đồ khối của vi điều khiển 8051 được trình bày dưới đây.
8051 có hai bộ định thời (timer). Bộ định thời là bộ đếm tăng lên một khi có một lệnh được thực thi. Thời gian tăng phụ thuộc vào tần số bộ dao động thạch anh. Để biết thêm thông tin về cách sử dụng hai bộ timer này như một bộ đếm thời gian hoặc bộ đếm lên, bạn có thể xem bài viết sau:
Ngắt ngoài
Vi điều khiển 8051 có 2 chân ngắt ngoài dùng để phát hiện các sự kiện bên ngoài. Có hai phương pháp để giám sát các sự kiện bên ngoài là phương pháp sử dụng ngắt và phương pháp polling. Để biết cách sử dụng ngắt mời bạn vào xem bài viết sau:
Vi điều khiển 8051 không tích hợp sẵn bộ chuyển đổi ADC. Như bạn đã biết, việc chuyển đổi analog sang digital có nhiều ứng dụng. Tất cả các vi điều khiển hoặc các thiết bị số chỉ trao đổi dưới dạng nhị phân 0 hoặc 1.
Vì vậy, để giao tiếp bất kỳ cảm biến analog nào với vi điều khiển, chúng ta cần sử dụng bộ chuyển đổi ADC. Chúng ta có thể giao tiếp bộ chuyển đổi ADC bên ngoài với bộ vi điều khiển 8051 để đo tín hiệu analog thực bên ngoài. Để biết thêm về cách giao tiếp 8051 với bộ chuyển đổi ADC, hãy xem hướng dẫn sau đây:
>>> Mời anh em xem thêm