Mô phỏng vi điều khiển
Giáo trình này chỉ chú trọng đến phần thực hành lập trình trên vi điều khiển nên không có phần lý thuyết về vi điều khiển mà thay vào đó là nhập môn lập trình vi điều khiển. Trong phần này, giáo trình sẽ trình bày những vấn đề lý thuyết cơ bản nhất về hệ ...
Giáo trình này chỉ chú trọng đến phần thực hành lập trình trên vi điều khiển nên không có phần lý thuyết về vi điều khiển mà thay vào đó là nhập môn lập trình vi điều khiển. Trong phần này, giáo trình sẽ trình bày những vấn đề lý thuyết cơ bản nhất về hệ 80x86, vừa đủ cho người học giải quyết các bài tập cơ bản trong chương trình. Sau khi đã vững phần cơ bản, người học sẽ nâng cao hơn các hiểu biết về vi điều khiển thông qua các bài tập nâng cao.
1. Tổ chức hệ vi điều khiển :
1.1. Giới thiệu hệ vi điều khiển dùng trong phần mềm mô phỏng:
Như đã giới thiệu ở phần trước hệ vi xử lý dùng trong chương trình mô phỏng này và hệ vi điều khiển thực tế nói chung bao gồm ba phần chính : bộ vi xử lý (CPU); bộ nhớ và thiết bị xuất nhập (I/O). Cụ thể trình bày trên hình 2-1.
Bộ mô phỏng bao gồm khối xử lý trung tâm (CPU), 256 byte của bộ nhớ truy xuất ngẫu nhiên (RAM) và 16 cổng vào ra nhưng chỉ sử dụng 6 port (từ port 0 đến port 5)?

Hình 2-1: Hệ thống vi điều khiển dùng trong phần mềm.
Chương trình mô phỏng có thể lập trình để chạy nhiều chương trình khác nhau. Trong thực tế, bộ nhớ RAM được thay thế bằng ROM. Ở đây có hàng trăm thí dụ về các hệ thống như : điều khiển đèn giao thông, các trò chơi giải trí đơn giản, điều khiển ti vi từ xa, định thời gian cho lò viba, hệ thống điều khiển động cơ xe hơi, bộ điều khiển lò gia nhiệt, các hệ thống điều khiển môi trường. Tất cả tuỳ thuộc vào sự uyển chuyển của giáo viên giảng dạy.
1/ Khối xử lý trung tâm:
Khối xử lý trung tâm là " bộ não" của máy vi tính. Tất cả các sự tính toán, quyết định và việc dịch chuyển dữ liệu đều được thực thi ở đây. CPU dùng các vị trí lưu trữ tạm thời được gọi là thanh ghi, thanh ghi chỉ nhớ dữ liệu có dung lượng thấp và sẽ mất dữ liệu khi mất điện nếu mạch không có back up ( mạch làm nhiệm vụ liên tục cấp điện cho CPU ). Nó chứa khối số học và logic (viết tắt là ALU) khối này thực hiện việc xử lý. Dữ liệu được lấy từ các thanh ghi, được xử lý và kết quả sau khi xử lý xong được đưa trở lại các thanh ghi. Lệnh Move (MOV) được sử dụng để dịch chuyển dữ liệu giữa vùng nhớ RAM và các thanh ghi. Ở đây ta có rất nhiều lệnh, mỗi lệnh thì có một chức năng riêng. Tập hợp các lệnh này được gọi là tập lệnh.
2/ Các thanh ghi đa năng:
CPU có bốn thanh ghi mục đích chung gọi là AL, BL, CL và DL. Những thanh ghi này chứa 8 bít hay 1 byte. Các thanh ghi quản lý số không dấu trong vùng từ 0 đến 255 và ô có dấu vùng từ - 128 đến + 127 : ở đây các thanh ghi này sử dụng như vùng nhớ lưu trữ tạm thời. Các thanh ghi được sử dụng ưu tiên đối với vùng nhớ RAM bởi vì nó cần 1 khoảng thời gian tương đối dài để chuyển dữ liệu giữa RAM và CPU. Nhìn chung máy vi tính có tốc độ xử lý nhanh hơn nếu thanh ghi hay bộ nhớ có dung lượng lớn hơn trong CPU.
Các thanh ghi được gọi tên là AL, BL, CL và DL vì phiên bản 16 bit của CPU này có nhiều thanh ghi gọi là AH, BH, CH và DH . Chữ "L" có nghĩa là thấp (Low) và chữ "H" có nghĩa là cao (High). Ở đây, 2 chữ cuối L và H trong các thanh ghi trên chính là 8 bít thấp và 8 bít cao của thanh ghi 16 bit.
3/ Các thanh ghi chuyên dùng :
Các thanh ghi chuyên dùng trong hệ vi điều khiển dùng trong phần mềm mô phỏng là IP, SR và SP.
a) Con trỏ lệnh IP
Thanh ghi này chứa địa chỉ lệnh đang được hiện hành. Khi việc thực thi hoàn thành, IP được giảm xuống và chỉ tới lệnh kế tiếp. Khi bộ nhớ RAM hiển thị, thì con trỏ lệnh được làm nổi rõ bằng màu đỏ trên nền chữ vàng.
b) Thanh ghi trạng thái SR
Thanh ghi này chứa các cờ để báo cáo về trạng thái CPU. Cờ zero "Z" được thiết lập bằng 1 nếu việc tính toán có kết quả bằng 0. Cờ dấu "S" được thiết lập bằng 1 nếu việc tính toán có kết quả âm. Cờ tràn "O"được thiết lập nếu kết quả trong thanh ghi lớn hơn 255 (tràn số). Ngắt "I" được thiết lập nếu các lệnh ngắt được cho phép.
c) Con trỏ ngăn xếp SP
Ngăn xếp là 1 vùng của tổ chức bộ nhớ sử dụng qui tắc vào sau ra trước (LIFO: Last In First Out). Con trỏ ngăn xếp chỉ tới ô nhớ ngăn xếp chồng kế tiếp. Ngăn xếp trong bộ mô phỏng bắt đầu tại địa chỉ BF. Ngăn xếp tăng theo hướng địa chỉ 0, dữ liệu được cất vào ngăn xếp và lưu giữ cho lần sử dụng sau. Dữ liệu được lấy ra khỏi ngăn xếp khi cần đến. Con trỏ ngăn xếp quản lý nơi ngăn xếp cất và lấy dữ liệu ra . Khi hiển thị trong RAM, con trỏ ngăn xếp được tô sáng bằng màu xanh trên nền chữ vàng.
4/ Bộ nhớ RAM :
Bộ mô phỏng có 256 byte RAM, có địa chỉ từ 0 đến 255 ( số thập phân) hay từ 00 đến FF (số Hex). Ðịa chỉ của RAM thường được đặt trong dấu ngoặc vuông ví dụ như [7C] trong đó 7C là số Hex. [7C] đọc là dữ liệu cất tại ô nhớ 7C. Trong thực tế, đây chính là? ROM nhưng nói chung chương trình chính sẽ được lưu trữ tại đây.

5/ Các BUS (Busline: luồng liên lạc):
Các BUS là một tập hợp các dây dẫn được sử dụng để mang tín hiệu đi trao đổi thông tin giữa các thiết bị trong hệ vi xử lý. Chúng thường được in như các đường song song trong board mạch điện. Khe cắm là các ổ cắm cho phép card có thể kết nối với hệ thống thông qua các BUS. Ðiển hình một máy tính 8 bit có các thanh ghi với độ rộng 8 bit và 8 đường trong 1 BUS dữ liệu. Một máy tính 16 bit có các thanh ghi 16 bit, BUS dữ liệu có 16 đường v..v.Có thể dùng hình tượng xa lộ để minh họa các BUS ( Hình 2-2): trên xa lộ có nhiều địa điểm như A, B, C, D. . . Nếu chỉ dùng dây điện để nối (nối cứng) ta phải tốn rất nhiều đường dây để liên kết giữa các địa điểm lại với nhau nhưng trên xa lộ này lái xe dù không thông thạo vùng này cứ đi dọc xa lộ là có thể tìm đến địa điểm cần đến. Rõ ràng với một BUS ta có thể liên kết nhiều thiết bị trong hệ vi xử lý lại với nhau (mỗi thiết bị có thể xem như một địa điểm trên xa lộ còn xe mang thông tin trao đổi giữa các thiết bị trong hệ thống) .
Hình 2-2 : Minh họa BUS thông qua hình tượng xa lộ.
Dựa vào tính chất thông tin tải trên Bus, người ta phân làm ba loại chính:
a) Bus dữ liệu : được sử dụng để mang dữ liệu giữa CPU, RAM và port nhập / xuất (I/O). Bộ mô phỏng này có bus dữ liệu 8 bit.
b) Bus địa chỉ: được sử dụng để xác định địa chỉ của bộ nhớ RAM hay port I/O được sử dụng. Bộ mô phỏng này có 8 bit địa chỉ.
c) Bus điều khiển: xác định RAM hay khối I/O được truy xuất. Nó cũng xác định việc đọc hay viết dữ liệu. Dữ liệu được viết vào hay xuất ra trên CPU đến RAM hay cổng I/ O cũng do bus điều khiển này.
6/ Các yếu tố phụ trợ