Mô phỏng vi điều khiển

141 368 1
Mô phỏng vi điều khiển

Đ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

Mô phỏng vi điều khiển Biên tập bởi: Nguyễn Phương Quang Mô phỏng vi điều khiển Biên tập bởi: Nguyễn Phương Quang Các tác giả: Nguyễn Phương Quang Phiên bản trực tuyến: http://voer.edu.vn/c/481ec957 MỤC LỤC 1. Nhập môn Lập trình Vi điều khiển 2. Bài tập Cơ Bản 2.1. Bài tập 1 2.2. Bài tập 2 2.3. Bài tập 3 2.4. Bài tập 4 2.5. Bài tập 5 2.6. Bài tập 6 2.7. Bài tập 7 2.8. Bài tập 8 2.9. Bài tập 9 2.10. Bài tập 10 2.11. Bài tập 11 3. Bài Tập Nâng cao 3.1. Bài tập nâng cao 1 3.2. Bài tập nâng cao 2 3.3. Bài tập nâng cao 3 3.4. Bài tập nâng cao 4 3.5. Bài tập nâng cao 5 3.6. Bài tập nâng cao 6 3.7. Bài tập nâng cao 7 4. Phụ Lục 4.1. Phụ lục A 4.2. Phụ lục B 4.3. Phụ lục C Tham gia đóng góp 1/139 Nhập môn Lập trình 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ệ 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)? 2/139 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 3/139 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. 4/139 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) . 5/139 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 6/139 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 7/139 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: 8/139 [...]... trình được lấy từ tập lệnh (Instruction Set) của họ vi điều khiển, vi xử lý đang sử dụng Tập lệnh là tập hợp của các lệnh được cung cấp bởi nhà sản xuất vi điều khiển, vi xử lý Ví dụ: Lệnh MOV AL,m : chuyển m vào thanh ghi AL Vi xử lý, vi điều khiển sẽ tuần tự thực hiện các lệnh để thực hiện các công vi c cụ thể mà chương trình yêu cầu giúp hệ thống làm vi c theo một chương trình được định trước Lệnh CLO:... 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 2 Trình tự lập trình vi điều khiển 15/139 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àỵ...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: 9/139 10/139 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ớ... đâ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 14/139 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. .. giao thông trong chương trình mô phỏng được điều khiển bằng cách gởi dữ liệu xuất ra port 1 Có sáu đèn được điều khiển chia làm hai hệ thống Màu đỏ, vàng, xanh là màu mỗi hệ thống đèn Ðể điều khiển 2 hệ thống đèn ta có thể thực hiện bằng cách gởi 1 byte dữ liệu nhưng 2 bit thấp của byte dữ liệu đó không dùng đến Một đèn chỉ sáng khi chân nối đến lên bit 1, do đó muốn điều khiển tín hiệu đèn giao thông... chương trình sử dụng lệnh SUB 1.2/ Vi t chương trình sử dụng lệnh MUL 1.3/ Vi t chương trình chia 2 số sử dụng lệnh DIV 1.4/ Vi t chương trình chia cho 0 19/139 Bài tập 2 Vi t chương trình xuất dữ liệu Mục đích - yêu cầu: • Làm quen với chức năng các lệnh nhảy, lệnh xuất dữ liệu • Hiểu cách đưa dữ liệu vào điều khiển đèn giao thông từ đó sinh vi n có thể thiết kế điều khiển đèn giao thông trong thực... Vi t chương trình truyền dữ liệu Mục đích - yêu cầu: • Nghiên cứu sâu hơn trong vi c sử dụng lệnh MOV và các biến thể của lệnh MOV, JMP, INC • Làm quen với vi c copy dữ liệu từ RAM tới thanh ghi và từ thanh ghi đến RAM • Hiểu được các loại địa chỉ để sử dụng trong vi t chương trình Kiến thức nền: Chương trình sử dụng 5 biến thể của lệnh MOV, INC và JMP Ðịnh vị địa chỉ là cách thức mà vi xử lý, vi điề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... Cơ Bản Bài tập 1 Vi t chương trình thực hiện các phép tính số học Mục đích-yêu cầu: • • • • Làm quen với các lệnh tính toán số học Hiểu cách định vị địa chỉ bộ nhớ Hiểu cách đưa dữ liệu vào thanh ghi Thực tập cộng giá trị trong 2 thanh ghi Kiến thức nền : Chương trình là tập hợp của các lệnh được sắp xếp theo một trình tự cụ thể nhằm giúp vi điều khiển, vi xử lý thực hiện các công vi c cụ thể nào đó... trình đều vi t dưới dạng số hexa 27/139 Bài tập 5 Nhập phím nhấn từ bàn phím cho đến khi phím Enter được nhấn Mục đích-yêu cầu: • Làm quen với lệnh nhập IN • Hiểu được lệnh so sánh CMP, và lệnh nhảy có điều kiện JNZ • Sử dụng bàn phím để nhập mã số mở máy Kiến thức nền: 1/ Lệnh IN 00: Là lệnh nhập từ port 0 Trong chương trình mô phỏng, port 0 được nối tới phần cứng bàn phím Chương trình mô phỏng đợi . môn Lập trình 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. 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ý. : đ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

Ngày đăng: 28/11/2014, 11:50

Từ khóa liên quan

Mục lục

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

  • Bài tập Cơ Bản

    • Bài tập 1

    • Bài tập 2

    • Bài tập 3

    • Bài tập 4

    • Bài tập 5

    • Bài tập 6

    • Bài tập 7

    • Bài tập 8

    • Bài tập 9

    • Bài tập 10

    • Bài tập 11

  • Bài Tập Nâng cao

    • Bài tập nâng cao 1

    • Bài tập nâng cao 2

    • Bài tập nâng cao 3

    • Bài tập nâng cao 4

    • Bài tập nâng cao 5

    • Bài tập nâng cao 6

    • Bài tập nâng cao 7

  • Phụ Lục

    • Phụ lục A

    • Phụ lục B

    • Phụ lục C

  • Tham gia đóng góp

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan