1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Nhập môn Lập trình Vi điều khiển

15 291 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 254 KB

Nội dung

Nhập môn Lập trình Vi điềukhiển Bởi: Nguyễn Phương Quang 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

Trang 1

Nhập môn Lập trình Vi điều

khiển

Bởi:

Nguyễn Phương Quang

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)?

Trang 2

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

Trang 3

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ư

Trang 4

[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)

Trang 5

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ợ khác:

a) Ðồng hồ hệ thống (clock): là đường mang những xung có tần số ổn định để các

bộ phận trong hệ vi xử lý có thể làm việc đồng bộ với nhau, các lệnh trong bộ vi xử lý thực thi cũng dựa vào các chu kỳ xung này Do vậy tốc độ hệ vi xử lý bị ảnh hưởng rất nhiều bởi tần số xung clock Tốc độ xung clock hiện nay đã đạt đến vài tỉ chu kỳ mỗi giây (vào năm 2002) Bộ mô phỏng trong phần mềm có thể điều chỉnh được tần số xung clock nên tốc độ thực thi lệnh cũng điều chỉnh được trong một khoảng khá rộng và trơn

mà không cần chọn thay đổi thạch anh dao động

b) Ngắt cứng: hệ thống cần có ít nhất 1 đường ngắt giúp CPU đáp ứng được các

yêu cầu của phần cứng như máy in đang chạy nhưng hết giấy, nhấn nhả phím, rê chuột CPU sẽ xử lý chương trình phục vụ ngắt để trả lời lệnh ngắt trên Khi hoàn thành chương trình ngắt, nó sẽ tiếp tục các thao tác đang làm trước khi nhu cầu ngắt xuất hiện Phần

Trang 6

mềm mô phỏng này có sẵn một đường ngắt và bộ định thời tạo xung ngắt tạo ra những xung ngắt có tần số điều chỉnh được (xem ví dụ 11 phần cơ bản)

1?2 Nguyên lý làm việc của hệ vi điều khiển trong phần mềm:

Hoạt động bên trong của vi điều khiển rất phức tạp, nó điều khiển hoạt động của mọi thành phần trong hệ thống Nhưng thật ra vi điều khiển chỉ lập đi lập lại chu kỳ đón và thực thi lệnh (còn gọi là chu kỳ tìm nạp + giải mã + thi hành lệnh) thực hiện theo từng bước sau :

* Tìm nạp lệnh tiếp theo từ bộ nhớ vào thanh ghi lệnh IR Trong chương trình này CPU tìm nạp lệnh theo địa chỉ mà IP chỉ tới: đón hay tìm nạp lệnh

* Ðịnh loại lệnh vừa tìm nạp, nếu lệnh dùng dữ liệu trong bộ nhớ thì CPU sẽ tìm đến

và nạp vào thanh ghi bên trong CPU: giải mã lệnh

* Thi hành lệnh vừa giải mã xong và lưu kết quả ở nơi thích hợp: thi hành lệnh

Sau khi thực hiện xong 3 bước này CPU lại tìm đến lệnh tiếp theo trong chương trình để tuần tự thực hiện lặp lại 3 bước trên Có thể minh họa bằng hình 2-3

Hình 2-3 : CPU liên tục tìm nạp và thi hành lệnh

Trang 7

Như vậy dù cho chương trình CPU thì rất phức tạp nhưng về cơ bản nó cũng chỉ thực hiện 2 hoạt động: tìm lệnh, thi hành, tìm lệnh, thi hành.và cứ như thế mà tiếp diễn CPU

sẽ thực thi được toàn bộ chương trình

Cụ thể hơn ta quan sát một ví dụ sau trong chương trình mô phỏng Mở bài tập về động

cơ bước ở phần bài tập cơ bản trong đĩa CD này, bạn sẽ gặp giao diện của bài tập như sau:

Trang 8

Trên màn hình hiển thị chương trình điều khiển động cơ bước quay theo một chiều cố định Nhấp chuột vào Step , vi điều khiển sẽ thực hiện lệnh MOV AL,1 Màn hình sau

sẽ diễn tả tác động của lệnh này lên vi điều khiển như sau:

Trang 10

Ta thấy số hexa 1 đã được nạp vào thanh ghi AL, thanh ghi IP (con trỏ lệnh) chỉ ra địa chỉ kế tiếp của lệnh mà vi điều khiển sắp thực hiện (OUT 05) nằm ở ô nhớ 03 Các thanh ghi khác không tham gia vào lệnh này nên không có thay đổi gì Tiếp tục nhấp Step , ta thấy:

Lệnh OUT 05 xuất dữ liệu chứa trong thanh ghi AL (là 01) sang port 05 điều khiển động

Trang 11

của lệnh mà vi điều khiển sắp thực hiện (MOV AL,2) nằm ở ô nhớ 05 Cũng giống như trên các thanh ghi khác không tham gia nên không thay đổi dưới tác động của lệnh này Tiếp tục nhấp vào Step , ta nhận thấy:

Tương tự trên, số hexa 2 được nạp vào thanh ghi AL và con trỏ IP tăng lên 08 chỉ ra lệnh kế tiếp là OUT 05 nằm ở địa chỉ 08 trong RAM Tiếp tục nhấp Step , ta thấy:

Tương tự, như trên ta thấy tác động của lệnh OUT 05 làm động cơ bước quay đi một góc 10o Tiếp tục nhấp Step và cứ như thế tiếp tục cho đến lệnh cuối cùng JMP start

Trang 13

Nếu như từ đầu đến đây vi điều khiển thực hiện tuần tự từng lệnh từ trên xuống thì đến đây vi điều khiển thực hiện một bước nhảy Nó sẽ nhảy đến nơi có chứa nhãn start, trong chương trình này nhãn start ở ngay đầu chương trình nên giá trị con trỏ lệnh IP là 00 Nhấp Step

Trang 14

Nếu bạn nhấp Run hay F9 chương trình mô phỏng sẽ liện tục lặp lại các bước vừa nêu.

Qua ví dụ đơn giản vừa nêu ở trên, ta thấy bình thường vi điều khiển sẽ thực hiện tuần

tự từng lệnh một từ điểm xuất phát được định ra bởi người lập trình chỉ khi nào gặp các lệnh nhảy, gọi chương trình con (nhấp vào đây để xem minh hoạ : chương trình con một cấp; chương trình con đa cấp), gọi chương trình ngắt thì tính tuần tự trên mới tạm thời

bị gián đoạn Từ đây ta có thể nhận thấy, với cùng một yêu cầu đặt ra cho hệ thống vi

xử lý sẽ có nhiều chương trình cùng thoả mãn được yêu cầu trên, chương trình này thì dài còn chương trình kia thì lại ngắn, điều này tuỳ thuộc vào nhiều yếu tố như khả năng của người lập trình, cấu trúc phần cứng của hệ thống

Trang 15

Chương trình vi điều khiển là tập hợp các lệnh xắp xếp theo một trình tự nhất định, các lệnh này được lấy trong tập lệnh của bộ vi điều khiển (Microcontroller) đang

sử dụng trong hệ thống Bộ vi điều khiển sẽ thực hiện các lệnh nàỵ để đạt được một số kết qủa mà chương trình đặt ra Do vậy, lập trình là tuỳ vào yêu cầu của bài toán thiết

kế, người lập trình sẽ viết ra một chương trình chạy được trên hê vi điều khiển đang sử dụng đưa hệ thống vào làm việc đúng theo yêu cầu của bài toán đã đặt ra

Ðể thiết kế chương trình một cách chính xác, ta cần thực hiện những bước sau: 2.1 Phân tích các yêu cầu của đề bài

2.2 Xây dựng lưu đồ giải thuật

2.3 Thiết kế chương trình

2.4 Viết chương trình

2.5 Biên dịch chương trình

2.6 Thưc hiện gỡ rối chương trình

2.7 Nạp chương trình vào phần cứng và kiểm tra kết quả

Thực hiện đúng quy trình trên sẽ giúp giảm thiểu thời gian kiểm tra cũng như phát hiện kịp thời những thiếu sót khi thực hiện

Ngày đăng: 10/11/2017, 11:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w