Giáo trình Vi xử lý - Phần 2

Để cho phép giao tiếp nối tiếp thành công UART, cần thiết đáp ứng quy định cụ thể các tiêu chuẩn RS232. Nó chủ yếu đề cập đến cấp điện áp theo yêu cầu của tiêu chuẩn này. Tiêu chuẩn phù hợp trong tin nhắn là -10V cho logic (1), trong khi +10 V là cho logic (0). Vi điều khiển chuyển đổi dữ liệu một cách chính xác vào định dạng nối tiếp, nhưng điện áp cung cấp điện của nó chỉ là 5V. Vì nó không dễ dàng chuyển đổi 0V vào 10V và 5V vào-10V, hoạt động này cho cả truyền và nhận bên trái. Ở đây, MAX232 của Maxim được sử dụng bởi vì nó là phổ biến rộng rãi, giá rẻ và đáng tin cậy. Sơ đồ bên dưới cho thấy làm thế nào để nhận được tin nhắn được gửi bởi một máy tính. Bộ đếm thời gian T1 tạo ra tỷ lệ boud. Vì khi tinh thể thạch anh 11,0592 MHz được sử dụng ở đây, nó rất dễ dàng để có được tốc độ truyền tiêu chuẩn tới 9600 baud. Mỗi dữ liệu nhận được ngay lập tức được chuyển đến chân cổng P1

pdf58 trang | Chia sẻ: Tiểu Khải Minh | Ngày: 22/02/2024 | Lượt xem: 93 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo trình Vi xử lý - Phần 2, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
C68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 187 Thì khi đó A7 = 0000FFFBH  Lệnh di chuyển dữ liệu MOV Di chuyển dữ liệu theo byte hoặc theo từ , từ dài ( long word) giữa thanh ghi dữ liệu, thanh ghi địa chỉ và ô nhớ Ví dụ: MOVE.B #29H,D3 MOVE.W D3,D6 MOVE.L (A0)+, D0  Lệnh chuyển dữ liệu vào thanh ghi địa chỉ MOVEA (Mode Address) Ví dụ MOVEA.W #9F00H,A2  Lệnh chuyển dữ liệu nhiều thanh ghi MOVEM (move multiple registers) Dùng truyền dữ liệu từ bộ nhớ vào các toán hạng là các thanh ghi dữ liệu, các thanh ghi địa chỉ  Lệnh chuyển dữ liệu tới thiết bị MOVEP (move peripheral data) Dùng vào ra với ½ BUS dữ liệu, sử dụng các toán hạng từ hoặc từ dài, không có mã điều kiện nào thay đổi khi thực hiện lệnh 6.1.2 Nhóm lệnh số học Bao gồm các lệnh cộng trừ 8, 16 hoặc 32 bit; các lệnh nhân có dấu và không dấu có giá trị 16 bit, các lênh chia các số 16 hoặc 32 bit cho các số có giá trị 8 hoặc 16 bit; các lệnh xóa lấy bù 2 giá trị 32bit. Nhóm lệnh này còn thực hiện với dấu mở rộng  Lệnh cộng nhị phân ADD (add binary) Cộng các giá trị 8, 16 hoặc 32 bit. Trong hai toán hạng phải có một thanh ghi dữ liệu  Lệnh cộng địa chỉ ADDA (add address) Cộng dữ liệu với thanh ghi địa chỉ, chỉ có dữ liệu word và long word đƣợc sử dụng Ví dụ : A0 = CE001A2BH, A3 = 00140300H ADDA.W A0,A3 Khi đó A3 = 00141D2BH, chỉ có từ thấp A3 thay đổi , A0 không thay đổi  Lệnh cộng giá trị tức thời ADDI (Add immemdiate) Cộng toán hạng tức thời có độ dài 8, 16, hoặc 32 bit vào toán hạng đích  Lệnh cộng nhanh ADDQ (add quick) Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 188 Tƣơng tự lệnh ADDI, khác ở chỗ toán hạng tức thời có giá trị từ 1 đến 8, khi cộng một giá trị tức thời vào một thanh ghi địa chỉ thì cả 32 bit thanh ghi đều thay đổi.  Lệnh cộng mở rộng ADDX (add extended) Chỉ có 2 chế độ địa chỉ là thanh ghi dữ liệu cộng với thanh ghi dữ liệu  Lệnh xóa CLR (Clear an operand) Lệnh này ghi 0 đến toán hạng, 3 kích thƣớc dữ liệu đều đƣợc sử dụng Ví dụ : CLR.B D0 ; xóa 8 bít thấp D0 CLR.W A4 ; Xóa 16 bit thấp của D4 CLR.L ARRAY ; xóa 4 byte trong bộ nhớ bắt đầu từ địa chỉ ARRAY  Lệnh chia có dấu DIVS (sign divide) Thực hiện chia có dấu 32 bit trong toán hạng đích cho số 16 bit trong toán hạng nguồn, thƣơng số chứa trong 16 bit thấp của toán hạng đích, số dƣ chứa trong 16 bit cao của toán hạng đích. Dấu của số trừ luôn cùng dấu với số chia  Lệnh chia không dấu DIVU ( unsign divide) Tƣơng tự lệnh DIVS nhƣng thực hiện với số nhị phân không dấu  Lệnh nhân có dấu MULS ( sign multiply ) Thực hiện nhân 2 số có dấu 16 bit, toán hạng đích là thanh ghi dữ liệu  Lệnh nhân không dấu MULU (unsign multiply) Tƣơng tự lệnh MULS nhƣng thực hiện với số nhị phân không dấu  Lệnh trừ nhị phân SUB (Subtract binary ) Thực hiện trừ nhị phân trong toán hạng đích, thanh ghi dữ liệu trong toán hạng nguồn  Lệnh trừ địa chỉ SUBA ( subtract address ) Toán hạng đích là thanh ghi địa chỉ, chỉ dùng dữ liệu word hoặc long word  Lệnh trừ nhanh SUBQ (subtract quick ) Sử dụng khi trừ đi giá trị từ 1 đến 8, tất cả các kiểu dữ liệu đều có thể sử dụng 6.1.3 Nhóm lệnh logic Bao gồm các lệnh AND. OR XOR và NOT thực hiện giá trị 8,16 hoặc 32 bit trong các thanh ghi dữ liệu, trong bộ nhớ và thanh ghi CCR hoặc SR  Lệnh logic AND Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 189 Thực hiện AND giữa hai toán hạng, tất cả kích thƣớc dữ liệu đều có thể sử dụng Lệnh ANDI (and immediate) Tƣơng tự lệnh AND nhƣng toán hạng nguốn là một số tức thời  Lệnh logic OR Tƣơng tự nhƣ lênh AND nhƣng OR hai dữ liệu  Lệnh ORI ( Or immediate ) Thực hiện OR toán hạng đích với toán hạng nguồn  Lệnh EOR Thực hiện logic XOR giữa hai toán hạng  Lệnh EORI Thực hiện EOE với toan hạng tức thời  Lênh NOT Lấy bù 1 toán hạng đích, các cờ đều bị tác động 6.1.4 Nhóm lệnh quay và dịch Thực hiện 8, 16 hoặc 32 bit trong thanh ghi dữ liệu hoặc bộ nhớ. Khi quay dịch một thanh ghi dữ liệu cần chỉ thị số bit sẽ quay. Khi dịch 8 bit có thể sử dụng toán hạng tức thời, ví dụ nhƣ sau ALS.B #4,D2 ; dịch trái số học 4 bit LSR.W #6,D1 ; dịch phải logic 6 bit ROL.L #3,D5 ; quay trái 3 bit ROXR.B #5,D4 ; Quay phải với cờ X 5 bit Khi quay lớn hơn 8 bit số lầm đếm dịch phải nằm trong thanh ghi dữ liệu ASL.L D2,D3 ; Dịch trái D3 với D2 bit  ASL Arithmetic Shift left: Dịch trái số học X/C Operand 0 Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 190  ASL Arithmetic Shift Right: Dịch phải số học  LSL logic shift left : Dịch trái logic  LSR logic shift right : dịch phải logic 6.1.5 Nhóm lệnh xử lý bit Xử lý 8 hoặc 32 bit trong thanh ghi dữ liệu hoặc bộ nhớ  Lệnh kiểm tra 1 bit và thay đổi giá trị BCHG (text a bit and change ) Một bit trong toán hạng đích sẽ đƣợc kiểm tra và hiệu chỉnh cờ Z, nếu bit = 0 thì Cờ ZF = 1 và ngƣợc lại. Nhƣ vậy Z là bù của bit kiểm tra  Lệnh kiểm tra và xóa bit BCLR (text a bit and clear ) Tƣơng tự nhƣ lệnh BCHG nhƣng sau kiểm tra bit text về 0, cờ Z giống nhƣ BCHG  Lệnh kiểm tra và lập bit BSET (text a bit and set ) Tƣơng tự nhƣ 2 lệnh trên nhƣng sau khi kiểm tra bit lên 1 6.1.6 Nhóm lệnh BCD Gồm cộng trừ lấy âm (bù 10), các dữ liệu 8 bit ( 2 số BCD ) các toán hạng có thể nằm trong thanh ghi dữ liệu hoặc bộ nhớ  Lệnh cộng thập phân với dấu mở rộng ABCD (add decimal with extend ) Dùng cộng 2 số BCD với nhau, dùng cờ X để cộng chính xác hơn, thực hiện với các toán hạng byte có 2 chế độ địa chỉ là trực tiếp thanh ghi  Lệnh lấy âm của một số mở rộng NBCD (negative decimal with extend ) Lệnh này thực hiện toán hạng byte, muốn có số âm thì lấy bù 10  Lệnh trừ thập phân có dấu mở rộng SBCD (subtract decimal with extend ) X/C Operand X/C Operand 0 X/C Operand 0 Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 191 Giống nhƣ ABCD chỉ có hai thanh ghi địa chỉ dữ liệu, toán hạng đích trừ đi toán hạng nguồn 6.1.7 Nhóm lệnh điều khiển chƣơng trình Bao gồm rẽ nhánh (nhảy có điều kiện ), nhảy không điều kiện, lệnh lập byte lệnh gọi và quay về từ chƣơng trình con Có 16 mã thực hiện chƣơng trình bao gồm CC: Carry clear cờ C xóa CS: carry set cờ C lập EQ equal bằng F: never true (faul) – Sai GE: Greater than or Equal – lớn hơn hoặc bằng GT : Greater than – lớn hơn HI: high – Cao LE: less or equal – nhỏ hơn hoặc bằng LS low or the same - nhỏ hơn hoặc bằng LT: less than – nhỏ hơn MI : minus – âm NE: not equal – không bằng PL: plus – dƣơng T: allways true – đúng VC overflow clear – VF = 0 VS overflow set – VF = 1  Lệnh rẽ nhánh theo BCC (branch condition ) Nếu cờ C = 1 tất cả các lệnh đều sử dụng trừ lệnh T và F  Lệnh kiểm tra điều kiện, giảm và rẽ nhánh DBCC Thực hiện chức năng lặp và kết thúc theo 2 cách: theo điều kiện và theo số đếm  Lệnh lập theo điều kiện SCC ( set according to condition ) Trƣớc tiên kiểm tra điều kiện, nếu đúng byte toán hạng đích lên 1, nếu sai xóa về 0  Lệnh rẽ nhánh BRA ( branch always) Chuyển đến nhãn chỉ thị đây là lệnh dùng địa chỉ tƣơng đối Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 192  Lệnh rẽ nhánh tới chƣơng trình con BSR (branch to subroutine) Tƣơng tự nhƣ BRA nhƣng địa chỉ sau lệnh cất vào đỉnh ngăn xếp làm địa chỉ quay về từ chƣơng trình con  Lệnh nhảy JMP (Jump) Chuyển không điều kiện tới bất kỳ vị trí nào trong bộ nhớ  Lệnh nhảy tới chƣơng trình con JSR (jump to subroutine) Giống lệnh JMP nhƣng địa chỉ quay về từ chƣơng trình con đƣợc cất vào đỉnh ngăn xếp  Lệnh quay về và phục hồi các mã điều kiện RTR (reture and restore condition codes ) Phục hồi thanh ghi mã điều kiện và PC từ đỉnh ngăn xếp  Lệnh quay về từ chƣơng trình con RTS ( return from subroutine ) Nạp thanh ghi PC vào đỉnh ngăn xếp, không có mã điều kiện bị ảnh hƣởng 6.1.8 Nhóm lệnh hệ thống Bao gồm lệnh phân quyền hệ thống, hiệu chỉnh giá trị trong các thanh ghi hệ thống nhƣ SR , USP, các lệnh bẫy (TRAP)  Lệnh AND số tức thời với thanh ghi trạng thái ANDI SR (and immediate to status register ) Dùng thay đổi giá trị trong thanh ghi trạng thái, khi AND với bit 0 sẽ bị xóa, AND với 1 thì không đổi  Lệnh EORI SR Giống nhƣ ANDI SR nhƣng với cổng logic XOR  Lệnh ORI SR Giống nhƣ ANDI SR nhƣng với cổng logic OR  Lệnh chuyển dữ liệu vào thanh ghi trạng thái MOVE to SR Chuyển giá trị 16 bit vào thanh ghi trạng thái  Lệnh Reset thiết bị bên ngoài RESET (reset external devicer ) Làm đƣờng Reset của MCU tích cực  Lệnh quay về từ ngoại lệ RTE (return from exception ) Dùng kết thúc chƣơng trình ngoại lệ, phục hồi thanh ghi trạng thái và bộ đếm chƣơng trình  Lệnh ngừng STOP (load status register and stop) Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 193 Dò tìm trƣớc Stop thì chế độ dò tìm thực hiện, khi có REST bên ngoài xử lý reset và thoát khỏi trạng thái treo, nếu ngắt ngoài xảy ra khi đang stop nó bị bỏ qua khi mức ƣu tiên của nó cao hơn mức hiện hành  Lệnh lƣu CCR Cất dữ liệu vào thanh ghi CCR Ví dụ MOVE CCR, D2 ; cất nội dung CCR vào byte thấp D2 6.2 Trình dịch hợp ngữ. Trình dịch hợp ngữ, còn gọi là phần mềm biên dịch, compiler, là một chƣơng trình máy tính làm công việc dịch một chuỗi các câu lệnh đƣợc viết bằng một ngôn ngữ lập trình (gọi là ngôn ngữ nguồn hay mã nguồn), thành một chƣơng trình tƣơng đƣơng nhƣng ở dƣới dạng một ngôn ngữ máy tính mới (gọi là ngôn ngữ đích) và thƣờng là ngôn ngữ ở cấp thấp hơn, nhƣ ngôn ngữ máy. Chƣơng trình mới đƣợc dịch này gọi mã đối tƣợng. Hình 6-1 Mô hình biên dịch lý tƣởng Một chƣơng trình viết bằng hợp ngữ bao gồm một chuỗi các lệnh (instructions) dễ nhớ tƣơng ứng với một luồng các chỉ thị khả thi (executable) mà khi đƣợc dịch bằng một trình hợp dịch, Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 194 chúng có khả năng nạp đƣợc vào bộ nhớ đồng thời thực thi đƣợc. Ví dụ, bộ vi xử lý x86/IA- 32 có thể thực hiện đƣợc chỉ thị nhị phân sau (thể hiện ở dạng ngôn ngữ máy):  10110000 01100001 (thập lục phân: 0xb061) Lệnh trên tƣơng đƣơng với một chỉ thị hợp ngữ dễ nhớ hơn sau:  mov al, 061h Chỉ thị lệnh trên có nghĩa là: gán giá trị thập lục phân 61 (97 dạng thập phân) cho thanh ghi trong bộ vi xử lý có tên là "al". Thuật từ ―mov‖ là mã thực thi (operation code / opcode), đƣợc ngƣời thiết kế tập lệnh đặt tên thay thế cho từ ―move‖, các đối/ tham số của lệnh theo sau và ngăn cách với opcode bởi một dấu phảy ―,‖. Trình hợp dịch thực hiện chuyển đổi hợp ngữ sang ngôn ngữ máy và trình phân dịch (disassembler) thực hiện quá trình trên ngƣợc lại. Không giống các ngôn ngữ bậc cao, các chỉ thị hợp ngữ cơ bản thƣờng có mối liên hệ tƣơng ứng 1-1 với các chỉ thị ngôn ngữ máy. Tuy nhiên trong một số trƣờng hợp, một trình hợp dịch có thể bổ sung các lệnh giả (pseudo- instructions) vào tập lệnh ngôn ngữ máy nhằm cung cấp các chức năng đƣợc dùng thƣờng xuyên. Hầu hết các trình hợp dịch đa chức năng đều cung cấp thêm một tập macro phong phú để nhà sản xuất thiết bị và lập trình viên có thể tạo các mã lệnh và các dãy dữ liệu phức tạp. Mỗi kiến trúc máy tính đều có ngôn ngữ máy riêng và do đó cũng có hợp ngữ riêng, chúng phân biệt với nhau bằng số lƣợng và kiểu của các lệnh mà chúng hỗ trợ. Chúng cũng có thể khác nhau về số lƣợng và kích cỡ của các thanh ghi cũng nhƣ cách thể hiện các kiểu dữ liệu trong bộ lƣu trữ (bộ nhớ). Hầu hết các máy tính công dụng chung đều có khả năng thực hiện cùng chức năng nhƣng cách mà chúng thực hiện thì khác nhau, điều đó phản ánh sự khác nhau giữa các hợp ngữ tƣơng ứng với mỗi kiểu máy tính. 6.3 Khuôn dạng của chƣơng trình hợp ngữ. Trong chƣơng trình nguồn trƣớc hết cần khởi động các tham số cần thiết cho bộ vi xử lý nhƣ: nạp giá trị cho con trỏ ngăn xếp, nạp giá trị cho bộ đếm chƣơng trình, khởi động giá trị cho vector cơ sở. Ví dụ : đoạn chƣơng trình sau khởi động vector reset Org $0000h ; bắt đầu từ địa chỉ 000 của bộ nhớ DW $0000h ; khởi động SP = $4000 Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 195 DW $4000h DW $0000h DW $4000h ; khởi động SP = $4000 Các giá trị vector cho reset Địa chỉ Reset vector $0000 Byte cao của SP $0002 Byte thấp của SP $0004 Byte cao của PC $0006 Byte thấp của PC Khuôn dạng chƣơng trình ngắt INT { các lệnh xử lý ngắt } RTE ; Quay về chƣơng trình ngắt 6.4 Đánh giá biểu thức trong thời gian dịch. Để hợp dịch các chƣơng trình hợp ngữ trên máy tính, đầu tiên các chƣơng trình soạn thảo gồm các lệnh gợi nhớ theo đúng cú pháp quy định của chƣơng trình hợp dịch. Từ khai báo của chƣơng trình sau kkhi hợp dịch tạo ra tập tin có đuôi .EXE Tùy theo mỗi câu lệnh mà thời gian dịch sang ngôn ngữ máy có thể là 1 chu kỳ xung, 2 chu kỳ xung hay thời gian dịch lớn hơn nhiều. 6.5 Các chỉ dẫn. Chỉ thị lệnh trong hợp ngữ nói chung là đơn giản, không giống nhƣ trong ngôn ngữ bậc cao. Mỗi chỉ thị lệnh điển hình thƣờng bao gồm một mã lệnh (operation/ opcode hay đơn giản là instruction) theo với một hoặc nhiều toán hạng (operands), hoặc không có toán hạng nào. Hầu hết các chỉ thị lệnh đều tham khảo tới một giá trị đơn hoặc cặp giá trị. Mỗi chỉ thị lệnh thƣờng đƣợc mã hóa tƣơng ứng trực tiếp với một chỉ thị ngôn ngữ máy khả thi đơn lẻ. Những thành phần thông thƣờng có trong hầu hết các hợp ngữ gồm có: Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 196 o Các định nghĩa dữ liệu (Data definitions). Các chỉ thị phụ cho phép lập trình viên dành riêng một vùng nhớ cho các câu lệnh ngôn ngữ máy tham khảo tới. Vùng nhớ này thƣờng đƣợc khởi tạo bằng các ký tự, chuỗi và các kiểu dữ liệu cơ sở khác o Nhãn (Labels). Các định nghĩa dữ liệu đƣợc tham chiếu tới bằng cách sử dụng các định danh (nhãn hoặc ký hiệu) do lập trình viên chỉ định. Chúng có thể là các hằng số, các biến hay các thành phần của cấu trúc. Nhãn cũng có thể đƣợc gán cho các vùng mã thực thi nhƣ địa chỉ bắt đầu của một thủ tục hoặc đích nhảy tới của lệng GOTO. Hầu hết các trình hợp dịch đều có khả năng quản lý các nhãn một cách linh hoạt, giúp cho lập trình viên thao tác trên nhiều không gian tên khác nhau, tự động tính độ lệch địa chỉ trong các cấu trúc dữ liệu và tham chiếu tới các nhãn chứa giá trị định trƣớc hay kết quả của một tính toán. o Chú dẫn (Comments). Giống nhƣ nhiều ngôn ngữ máy tính khác, hợp ngữ cũng hỗ trợ việc thêm các chú dẫn vào trong mã nguồn, chúng sẽ đƣợc trình hợp dịch bỏ qua trong quá trình biên dịch o Tập lệnh bó (Macros). Hầu hết các trình hợp dịch đều nhúng ngôn ngữ macro vào tập lệnh chính. Lập trình viên dùng macro để tránh phải lặp lại những đoạn mã tƣơng tự, trong quá trình tiền biên dịch tùy vào các đối số của macro mà các lệnh trong thân macro sẽ đƣợc sửa đổi và chèn vào vị trí gọi macro. Ngoài ra macro cũng đƣợc nhà sản xuất thiết bị dùng để đóng gói các phép tính đặc biệt ví dụ nhƣ: o Các bộ vi xử lý 8 bit thƣờng dùng macro để tăng hoặc giảm một giá trị 16 bit lƣu trong hai byte liên tục, đây là phép toán thƣờng phải thực hiện trong trong ba hoặc bốn chỉ thị lệnh đơn lẻ. (bộ vi xử lý MOS Technology 6502) o Nhà sản xuất cũng hỗ trợ các macro để dùng cho các giao tiếp hệ thống nhƣ các thao tác vào/ra (I/O) hay các yêu cầu cấp thấp từ hệ điều hành. Trong các máy tính lớn của IBM, các thƣ viện macro khổng lồ cung cấp các phƣơng thức truy xuất và các dịch vụ hệ thống khác o Những tính năng trên đƣợc mƣợn từ các thiết kế ngôn ngữ bậc cao nên đã đơn giản hóa những vấn đề trong lập trình và bảo trì mã nguồn cấp thấp. Mã nguồn hợp ngữ thô cũng có thể tạo ra bằng các trình biên dịch ngôn ngữ bậc cao (compiler) hoặc bằng các trình phân Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 197 dịch mã máy (disassembler), nhƣng chúng thƣờng không có chú dẫn cũng nhƣ các định danh dễ hiểu nên rất khó đọc. o Ngoài các đặc tính cơ bản ở trên, tuy nhiên vài hợp ngữ cũng có những tính năng ngoại lệ nhƣ: o Nhiều trình hợp dịch bao gồm các ngôn ngữ macro rất phức tạp, cho phép phối hợp với các phần tử của ngôn ngữ bậc cao nhƣ các biến tƣợng trƣng, các lệnh điều kiện, các thao tác chuỗi và các phép tính số học. Do đó một macro có thể thay thế một lƣợng lớn các lệnh hợp ngữ hoặc các định nghĩa dữ liệu dựa trên các tham số của nó. Nó có thể dùng để sinh ra các cấu trúc kiểu bản ghi hay các vòng lặp ―mở‖ (unrolled) hoặc dựa trên các tham số phức tạp nó có thể giải quyết trọn vẹn một thuật giải. 6.6 Các điều khiển của trình dịch hợp ngữ. Tùy vào mỗi kiến trúc xử lý mà tập lệnh đƣợc xác lập bởi các đặc thù riêng: o Các thanh ghi dùng cho tính toán số học o Cách bố trí bộ nhớ và tính địa chỉ o Cách điều khiển rẽ nhánh o Các kiểu đánh địa chỉ đặc thù dùng để giải các toán hạng Nhiều lệnh phức hợp đƣợc tạo dựng bằng cách kết hợp nhiều chỉ thị đơn giản với nhau, các chỉ thị này tuân theo nguyên lý máy tính Von Neumann, tức là thực thi tuần tự và rẽ nhánh theo lệnh phân luồng. Một số lệnh điển hình có mặt trong hầu hết các tập lệnh gồm có: o Lệnh gán - Gán cho một thanh ghi (một vùng nhớ tạm thời trong CPU) một giá trị hằng số xác định - Chuyển dữ liệu từ một vùng nhớ sang một thanh ghi hoặc ngƣợc lại. Thao tác này dùng để chuẩn bị dữ liệu cho một tính toán sau đó hoặc để lƣu kết quả của một tính toán trƣớc đó. - Đọc /ghi dữ liệu từ/vào các thiết bị phần cứng o Lệnh cho tính toán Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 198 - Cộng, trừ, nhân hoặc chia các giá trị chứa trong các thanh ghi và lƣu kết quả vào một thanh ghi - Thực hiện các phép thao tác bit ―và‖/‖hoặc‖ (AND/OR) trên một cặp thanh ghi, hoặc phép phủ định bit trên một thanh ghi - So sánh nhỏ hơn/lớn hơn/ bằng nhau giữa hai giá trị lƣu trong hai thanh ghi o Lệnh điều khiển rẽ nhánh - Nhảy tới một vị trí trong chƣơng trình và thực thi các lệnh ở đó - Nhảy tới một vị trí khác nếu một điều kiện nhất định đƣợc thỏa mãn - Nhảy tới một vị trí nhƣng lƣu lại vị trí của lệnh tiếp theo để làm điểm nhảy trở về (thƣờng là một lời gọi hàm) Một số máy tính bao gồm các chỉ thị lệnh phức hợp trong tập lệnh của chúng. Một lệnh phức hợp thƣờng thực hiện những tác vụ cần nhiều chỉ thị lệnh trên nhiều máy khác nhau, chúng thực hiện trong nhiều bƣớc, điều khiển nhiều đơn vị chức năng. Danh sách minh họa một số lệnh phức hợp: - Lƣu lại nhiều thanh ghi trên ngăn xếp chỉ một lần - Di chuyển các khối vùng nhớ lớn - Các phép toán dấu phảy động phức tạp (sine, cosine, square root, etc.) - Các lệnh ALU liên kết với một toán hạng từ bộ nhớ thay vì với một thanh ghi Một kiểu lệnh phức hợp đƣợc dùng phổ biến ngày nay là các phép toán SIMD hay các lệnh vector (vector instruction) có khả năng thực hiện cùng một phép toán số học trên nhiều phần của dữ liệu trong cùng một thời điểm. Các lệnh SIMD (single instruction multile data) cho phép thực hiện song song nhiều thuật toán liên quan đến xử lý âm thanh, hình ảnh và video một cách dễ dàng. 6.7 Hoạt động liên kết. Trình liên kết đƣợc gọi bởi dấu nhắc hệ thống nhƣ sau RL51 input_list [TO output_ file] [location_controls]  input_list - danh sách ngỏ vào: là danh sách các modul hay tập tin đối tƣợng tái định vị đƣợc phân cách bởi dấu phẩy Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 199  output_ file - Tập tin kết quả: là tên của modul đối tƣợng tuyệt đối đƣợc tạo ra. Nếu tên đối tƣợng này không đƣợc cung cấp thì tên sẽ là tên ngỏ vào đầu tiên của tập tin cung cấp không có phần mở rộng  location_controls - Các điều khiển vị trí: thiết lập vị trí địa chỉ ban đầu cho các segment đã đƣợc đặt tên 6.8 Macro. Tƣơng tự nhƣ các vi điều khiển 8051, chip điều khiển 32 bit của MCU 68332 cũng sử dụng Macro nhằm mục đích đạt các lợi ích khi sử dụng Macro: - Chƣơng trình nguồn dùng macro dễ đọc hơn - Chƣơng trình nguồn ngắn hơn - Việc dùng macro sẽ giảm lỗi - Ngƣời lập trình không cần xử lý các chi tiết cấp thấp 6.9 Lập trình cho TPU. Để lập trình cho TPU chúng ta cần lập trình cho các thanh ghi điều khiển của TPU nhƣ thanh ghi định cấu hình TPUMCR, các thanh ghi chọn chức năng kênh CFSR, các thanh ghi thứ tự host HSRR0, HSSR1, các thanh ghi yêu cầu phục vụ host, các thanh ghi ƣu tiên kênh, các thanh ghi tham số RAM, các thanh ghi điều khiên kênh CCR. Nếu sử dụng ngắt TPU phải khởi động các thahnh ghi ngắt và vector ngắt SYNCR EQU $FFFA04 SYPCR EQU $FFFA21 CFSR3 EQU $FFFE12 TPUMCR EQU $FFFE00 HSQR1 EQU $FFFE16 HSSR1 EQU $FFFE1A CPR1 EQU $FFFE1E ORG $400 ; bắt đầu chƣơng trình tại 400 INITSYS: MOVE.B #$7F,(SYNCR).L ; lập clock hệ thống 16,78MHz Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 200 CLR.B (SYPCR).L ; cấm phần mềm wachtdog CNTLREG: MOVE.W #$0009,(CFSR3).L ; chọn chức năng kênh MOVE.W #$00C0,(TPUMCR).L ; đếm 238ns MOVE.W #$0000,(HSQR1).L ; các bit HSQ = 0 cho chức năng PWM PRAM MOVE.W #$0092,($FFFF00).L ; Thanh ghi điều khiển kênh MOVE.W #$2000,($FFFF04).L ; Bộ đếm cao TCR1 = #$2000 MOVE.W #$4000,($FFFF06).L ; Bộ đếm chu kỳ TCR1 = #$4000 START: MOVE.W #$0002,(HSSR1).L ; Khởi động yêu cầu phục vụ host MOVE.W #$0003,(CPR1).L ; cho kênh ƣu tiên ở mức cao 6.10 Lập trình xuất nhập. Các chân của tín hiêu SIM có thể lập trình để tạo thành 2 cổng vào ra đa dụng E và F. Các thanh ghi dữ liệu cổng, định hƣớng truyền dữ liệu cho cổng và gán chân cho cổng cho phép truy cập các cổng này PORT E0, PORT E1 – thanh ghi dữ liệu cổng E - Địa chỉ $YFFA11, $YFFA13 Thanh ghi dữ liệu cổng E bao gồm 2 địa chỉ $YFFA11, $YFFA13. Thanh ghi này có thể đọc / ghi bất cứ lúc nào và giá trị không bị ảnh hƣởng bởi lệnh Reset. DDRE – thanh ghi hƣớng dữ liệu cổng E - # YFFA15. Cứ 1 bit thanh ghi này bằng 1 thì chân cổng E tƣơng ứng của nó sẽ là cổng ra và khi bit bằng 0 thì định nghĩa chân vào. Thanh ghi này cũng có thể đọc / ghi mọi thời điểm PEPAR – thanh ghi gán chân cổng E- # YFFA17 Các bit trong thanh ghi cổng E sử dụng để điều khiển chức năng mỗi chân của cổng này. Khi một bit trong thanh ghi này đƣợc lập, chân cổng E tƣng ứng là tín hiệu điều khiển BUS, khi thanh ghi PEPAR xóa về không, chân tƣơng ngsvowis nó là đƣờng vào ra đƣợc điều khiển bằng PORTE và DDRE Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 201 6.11 Lập trình cho QSM. QSM có hai khối nhỏ SCI và QSPI, khi sử dụng khối nào thì lập trình khối đó: 6.11.1 Lập trình cho khối SCI Chƣơng trình khởi động SCI có thể thực hiện nhƣ sau: SCI INITIALIZATION: Hai địa chỉ cuối nạp địa chỉ tác động của ký tự cuối cùng của đoạn dữ liệu truyền vào thanh ghi địa chỉ A1. MOVE.L A0,A1 ADDA..L #$5,A1 Ba lệnh tiếp theo kiểm tra dữ liệu truyền có trống hay không bằng cách xét bit TDRE trong thanh ghi trạng thái SCI (SCSR). Nếu TDRE = 0 thì TDR không gởi dữ liệu đến bộ dịch truyền Nếu TDRE = 1 thì việc truyền dữ liệu đƣợc thực hiện 6.11.2 Lập trình khởi động cho khối QSPI QSPI của QSM là bus truyền nối tiếp đồng bộ với các thiết bị ngoại vi bên ngoài và các MCU khác. Module này có một hàng đợi, con trỏ hàng đợi có thể lập trình đƣợc cho phép truyền 16 ký tự dữ liệu một cách tự động và trong chế độ Wap – around sẽ cho phép truyền liên tục tới hoặc từ hàng đợi mà không cần sự điều khiển của CPU. Hàng đợi có nhiều ứng dụng trong việc biến đổi A/D. Một số lƣu ý khi sử dụng QSPI - Lập bit SPE cho phép QSPI cần thực hiện cuối cùng của quá trình khởi động - Cần khởi động các thanh ghi định hƣớng truyền dữ liệu DDRQS và thanh ghi dữ liệu của cổng PORTQS, ngay cả khi chân tín hiệu đƣợc gán cho chức năng QSPI bằng thanh ghi gán chân tín hiệu PQSPAR - Tín hiệu chọn ngoại vi sẽ tác động khi thực hiện một lệnh trong RAM lệnh, tác động mức cao hay thấp tùy theo bit tƣơng ứng trong PORTQS 6.12 Lập trình cho TPURAM. TPURAM có 6 chế độ hoạt động Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 202 - Hoạt động trong chế độ bình thƣờng khi đƣợc cấp nguồn VBDD , khi đó nó có thể truy xuất dữ liệu theo byte, từ hay từ dài, các byte cao luôn nằm ở địa chỉ chẵn truy xuất chỉ trong một chu kỳ BUS ( bằng hai chu kỳ clock ) của hệ thống. Từ kép truy xuất bằng hai chu kỳ BUS - Chế độ chờ (Standby) nhằm giữ nguyên các giá trị trong TPURAM khi mất nguồn VDD. Các giá trị trong RAM đƣợc giữ nguyên với nguồn Vstby để không làm mất dữ liệu. Trong chế độ này các truy xuất từ RAM sẽ không đúng. - Chế độ Reset cho phép CPU thực hiện hoàn tất chu kỳ BUS hiện hành trƣớc khi hệ thống Reset - Chế độ kiểm tra, RAM đƣợc nối tới khối SIM sử dụng để nhà sản xuất kiểm tra MCU - Khi bit STOP của thanh ghi TRAMMCR đƣợc ghi vào giá trị 1, TPURAM chuyển qua chế độ STOP, TPURAM không hoạt động, nhƣng các dữ liệu vẫn duy trì - TPURAM có thể chạy các vi lệnh trong ROM của TPU do các đoạn mã lệnh của ngƣời dùng và các chế độ mô phỏng đƣợc chính xác. 6.13 Lập trình sử dụng ngắt. Các CPU32 cung cấp tám mức độ ƣu tiên ngắt (0-7), bảy vector ngắt tự động, và 200 vectơ ngắt chuyển nhƣợng. Tất cả các ngắt với ƣu tiên ít hơn bảy có thể đƣợc che khuất bởi ngắt ƣu tiên (IP) trong thanh ghi trạng thái. Các CPU32 xử lý ngắt nhƣ một loại không đồng bộ ngoại lệ. Ngắt đƣợc dựa trên các trạng thái của các tín hiệu yêu cầu ngắt iIRQ [07:01] và giá trị mặt nạ IP. Mỗi của các tín hiệu tƣơng ứng với một ƣu tiên ngắt. IRQ1 có ƣu tiên thấp nhất, và các IRQ7 có ƣu tiên cao nhất. Lĩnh vực IP bao gồm ba bit, giá trị nhị phân 000 đến 111 cho tám mặt nạ ƣu tiên. Mặt nạ ngăn chặn một yêu cầu ngắt của một ƣu tiên thấp hơn hoặc bằng với giá trị mặt nạ (trừ IRQ7) từ việc công nhận và xử lý. Khi IP chứa 000, ngắt không đƣợc phép đeo mặt nạ. Trong quá trình xử lý ngoại lệ, lĩnh vực IP đƣợc thiết lập các ƣu tiên của ngắt đƣợc phục vụ. Tín hiệu yêu cầu ngắt có thể đƣợc cho phép bởi các thiết bị bên ngoài hoặc các module vi điều khiển. yêu cầu đƣờng dây đƣợc kết nối trong nội bộ bằng một cổng NOR có dây - đồng thời yêu cầu của các ƣu tiên khác nhau có thể đƣợc thực hiện. Khẳng định nội bộ của một tín hiệu yêu cầu ngắt không ảnh hƣởng đến trạng thái logic của chân MCU tƣơng ứng. Chƣơng 6:Lập trình hợp ngữ trên họ VĐK 32-bit MC68332 Khoa Kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 203 Yêu cầu ngắt ngoài đƣợc chuyển đến CPU thông qua bus ngoài và SIM điều khiển ngắt logic. CPU xử lý yêu cầu ngắt bên ngoài từ SIM Ngoài IRQ [06:01] là đầu vào hoạt động tích cực mức thấp. IRQ7 là một đầu vào hoạt động tích cực mức thấp. IRQ7 đòi hỏi cả một cạnh lên và một mức điện áp. Chƣơng 7:Các vi mạch hỗ trợ việc thiết kế hệ thống dựa trên các họ trên Chủ biên: Nguyễn Đức Lợi Trang 204 CHƢƠNG 7 CÁC VI MẠCH HỖ TRỢ VIỆC THIẾT KẾ HỆ THỐNG DỰA TRÊN CÁC HỌ TRÊN. ( 6 TIẾT) Các thiết bị ngoại vi là hết sức cần thiết trong việc thiết kế một hệ thống điều khiển, các IC thƣờng đƣợc giao tiếp với vi xử lý/ vi điều khiển - IC chuyển đổi tƣơng tự sang số và ngƣợc lại ( ADC/ DAC ) - IC nhớ ( RAM / ROM ) - IC giải mã - IC đệm Nội dung chính chƣơng 7 gồm: 7.1 IC chuyển đổi tƣơng tự sang số ADC 7.2 IC chuyển đổi số sang tƣơng tự DAC 7.3 Vi mạch nhớ ROM 7.4 Vi mạch nhớ RAM 7.5 Vi mạch cổng đệm 7.5 Giải mã địa chỉ Chƣơng 7:Các vi mạch hỗ trợ việc thiết kế hệ thống dựa trên các họ trên Chủ biên: Nguyễn Đức Lợi Trang 205 7.1 IC chuyển đổi tƣơng tự sang số ADC Bộ chuyển đổi tƣơng tự sang số – ADC (Analog to Digital Converter) lấy mức điện thế vào tƣơng tự sau đó một thời gian sẽ sinh ra mã đầu ra dạng số biểu diễn đầu vào tƣơng tự. Quá trình chuyển đổi A/D nhìn chung đƣợc thực hiện qua 4 bƣớc cơ bản, đó là: lấy mẫu; nhớ mẫu; lƣợng tử hóa và mã hóa. Các bƣớc đó luôn luôn kết hợp với nhau trong một quá trình thống nhất.Một số IC chuyển đổi tƣơng tự sang số điển hình nhƣ: 0808, 0809 7.1.1 Vi mạch 0809 Vi mạch 0809 là IC biến đổi ADC loại CMOS chuyển tƣơng tự sang 8 bit số, bộ chọn 8 kênh và bộ logic điều khiển tƣơng thích. IC 0809 loại trừ khả năng cần thiết điều chỉnh điểm 0 bên ngoài và khả năng điều chỉnh tỷ số làm tròn. ADC 0809 dễ dàng giao tiếp với các bộ vi xử lý. Hình 7-1 Hình dáng & Sơ đồ chân IC ADC-0809 7.1.2 Vi mạch 0808 Hình 7-2 Sơ đồ chân IC 0808 Chƣơng 7:Các vi mạch hỗ trợ việc thiết kế hệ thống dựa trên các họ trên Chủ biên: Nguyễn Đức Lợi Trang 206 IC ADC 0808 là IC có 8 ngõ vào tƣơng tự, Điện áp tham chiếu có thể đƣợc thiết lập bằng cách sử dụng chân Vref + và Vref-. 7.1.3 Ứng dụng ADC có nhiều ứng dụng trong thực tế, sơ đồ kết nối IC 0808/0809 với vi xử lý nhƣ sau Hình 7-3 Giao tiếp của IC 0809 với vi xử lý 7.2 IC chuyển đổi số sang tƣơng tự DAC IC chuyển đổi số sang tƣơng tự (digital-to-analog converters: DAC) bao gồm loại 8-bit, 10-bit, 12-bit, 14-bit, 16-bit, 18-bit và độ phân giải 20-bit. Các ứng dụng chuyển đổi DAC phổ biến trong truyền thông, công nghiệp, tiêu dùng và nhiều hơn nữa 7.2.1 Vi mạch AD7524 IC AD7524 ( IC CMOS) là IC chuyên dụng dùng để chuyển đổi từ số sang tƣơng tự. AD7524 là bộ chuyển đổi D/A 8 bit, dùng mạng R/2R ladder. Hình 7-4 Hình dạng và sơ đồ chân IC AD7524 Chƣơng 7:Các vi mạch hỗ trợ việc thiết kế hệ thống dựa trên các họ trên Chủ biên: Nguyễn Đức Lợi Trang 207 Vi mạch AD7524 có đầu vào 8 bit, có thể bị chốt dƣới sự điều khiển của đầu vào CHỌN CHIP ̅̅̅̅ và đầu vào ghi ̅̅ ̅̅ ̅ khi cả hai đầu vào điều khiển này đều ở mức thấp, thì 8 đầu vào dữ liệu D7 – D0 sinh ra dòng tƣơng tự OUT1 và OUT2 (thƣờng OUT2nối đất). 7.2.2 Vi mạch DAC 0830 DAC 0830 là IC thuộc họ CMOS. Là bộ chuyển đổi D/A 8 bit dùng mạng R/2R ladder. Có thể giao tiếp trực tiếp với các vi xử lý để mở rộng hoạt động chuyển đổi D/A. Hình 7-5 Sơ đồ chân và hình dạng IC 0830 7.2.3 Ứng dụng Ứng dụng của IC AD7524 thƣờng dùng giao tiếp với các vi xử lý và vi điều khiển để chuyển đổi tín hiệu số sang tƣơng tự nhằm điều khiển các đối tƣợng cần điều khiển. Hình 7-6 Giao tiếp AD7524 với 8051 Ứng dụng của IC 0830 để điều khiển volume có sơ đồ nhƣ hình sau Chƣơng 7:Các vi mạch hỗ trợ việc thiết kế hệ thống dựa trên các họ trên Chủ biên: Nguyễn Đức Lợi Trang 208 Hình 7-7 Mạch ứng dụng điều khiển volume của IC 0830 7.3 Vi mạch nhớ ROM Bộ nhớ ROM ( Read Only Memory - Bộ nhớ chỉ đọc ): đây là bộ nhớ cố định, dữ liệu không bị mất khi mất điện, bộ nhớ này thƣờng dùng để nạp các chƣơng trình BIOS ( Basic Input Output System - Chƣơng trình vào ra cơ sở ) đây là chƣơng trình phục vụ cho quá trình khởi động máy tính và chƣơng trình quản lý cấu hình của máy. ROM là một mạch tổ hợp có n ngõ vào và m ngõ ra . Các ngõ vào đƣợc gọi là địa chỉ (address input) và thƣờng đặt là A0A1An-1 . Các ngõ ra đƣợc gọi là các ngõ ra dữ liệu (data output) và thƣờng đặt tên là D0D1D2Dm-1. Hình 7-8 Sơ đồ khối của ROM Chƣơng 7:Các vi mạch hỗ trợ việc thiết kế hệ thống dựa trên các họ trên Chủ biên: Nguyễn Đức Lợi Trang 209 7.3.1 Các loại ROM đặc trƣng MROM ROM mặt nạ (Mask Programed ROM): nhà sản xuất đã ghi (lập trình) các vị trí nhớ của nó theo yêu cầu của khách hàng. Một phím âm bản, gọi là mặt nạ đƣợc sử dụng để kiểm soát các mối nối điện trên chip PROM ROM cho phép lập trình (Programmable ROM – PROM): chỉ lập trình đƣợc một lần vì cầu chì đứt không thể nối lại đƣợc từ bên ngoài. Nên khi nạp chƣơng trình sai hay muốn đổi chƣơng trình thì ta phải dùng một PROM mới, điều này gây phức tạp và tốn kém chi phí. EPROM ROM lập trình xóa đƣợc (Erasable PROM – EPROM): cho phép ngƣời sử dụng có thể lập trình và xóa đƣợc. Đây là loại ROM rất tiện cho ngƣời sử dụng vì có thể dùng đƣợc nhiều lần bằng cách xóa bằng tia cực tím U.V. (Ultra Violet) và nạp lạ i EEPROM ROM lập trình và xóa đƣợc bằng điện (Electrically Erasable PROM – EEPROM) hay Electrically Alterable PROM, EAPROM: Những khuyết điểm của EPROM đƣợc khắc phục với sự ra đời của EEPROM. EEPROM giữ lại cấu trúc cổng thả nổi của EPROM, nhƣng có thêm một lớp oxit rất mỏng phía trên cực máng của ô nhớ MOSFET. Sự bổ sung này hình thành nên đặc điểm chính của EEPROM đó là khả năng xóa bằng điện FLASH ROM : có tốc độ truy xuất nhanh, có mật độ tích hợp cao nhƣng giá thành thấp, Hầu hết các FLASH ROM sử dụng cách xóa đồng thời cả khối dữ liệu nhƣng rất nhanh (hàng trăm ms so với 20 min của U.V. EPROM 7.3.2 Một vài bộ nhớ ROM Hình 7-9 Sơ đồ chân và bảng trạng thái của M2764A Chƣơng 7:Các vi mạch hỗ trợ việc thiết kế hệ thống dựa trên các họ trên Chủ biên: Nguyễn Đức Lợi Trang 210 IC EPROM M27C62A là loại EPROM có dung lƣợng lớn 8Kx8 và thời gian truy xuất là 150ns. Đây là loại EPROM đang phổ biến trên thị trƣờng, có hai dạng vỏ khác nhau để ngƣời dùng có thể chọn lựa tuỳ theo nhu cầu. 7.4 Vi mạch nhớ RAM RAM là bộ nhớ truy xuất bất kỳ còn gọi là bộ nhớ đọc viết (RWM: read write memory). Nghĩa là mọi địa chỉ nhớ đều cho phép dễ dàng truy cập nhƣ nhau. Trong máy tính RAM đƣợc dùng nhƣ bộ nhớ tạm hay bộ nhớ nháp.Thông tin trên RAM chỉ mang tính tạm thời trong một thời gian nào đó và sẽ bị mất khi mất điện .  Ƣu điểm chính của RAM: đọc hay viết dữ liệu lƣu trữ ở RAM bất cứ lúc nào.  Nhƣợc điểm của RAM: do RAM là một dạng bộ nhớ ‗‗bốc hơi‘‘ nên khi mất điện, dữ liệu sẽ bị xóa do đó cần nguồn nuôi nhƣ pin dự phòng (back up batterry). RAM có thể chia làm 2 loại : RAM động (DRAM) và RAM tĩnh (SRAM) IC MCM6206BA: là loại RAM tĩnh có cấu tạo CMOS, dung lƣợng 32K x 8 bit Hình 7-10 Sơ đồ chân IC 6206 IC MCM6264C: là IC SRAM thực tế hiện đang có mặt trên thị trƣờng là MCM6264C CMOS 8Kx8 với chu kỳ đọc và chu kỳ ghi là 12ns, công suất tiêu thụ ở chế độ standby chỉ là 100mW Chƣơng 7:Các vi mạch hỗ trợ việc thiết kế hệ thống dựa trên các họ trên Chủ biên: Nguyễn Đức Lợi Trang 211 Hình 7-11 Sơ đồ chân và hình dạng IC 6264 IC DRAM TMS44100: Trên thị trƣờng đang có mặt IC DRAM TMS44100 4Mx1 của hãng Texas Intruments. Đây là lạo RAM động có tốc độ cao Hình 7-12 Sơ đồ chân và chức năng của các chân IC 44100 Bộ nhớ RAM là bộ nhớ không thể thiếu trong bất kỳ hệ thống máy tính nào, CPU chỉ có thể làm việc đƣợc với dữ liệu trên RAM vì chúng có tốc độ truy cập nhanh, toàn bộ dữ liệu hiển thị Chƣơng 7:Các vi mạch hỗ trợ việc thiết kế hệ thống dựa trên các họ trên Chủ biên: Nguyễn Đức Lợi Trang 212 trên màn hình cũng đƣợc truy xuất từ RAM. Khi ta khởi động máy tính để bắt đầu một phiên làm việc mới, hệ điều hành cùng với các trình điều khiển phần cứng đƣợc nạp lên bộ nhớ RAM. Khi ta chạy bất kể một chƣơng trình ứng dụng nào, thí dụ PhotoShop thì công cụ của chƣơng trình này cũng đƣợc nạp lên bộ nhớ RAM. 7.5 Vi mạch cổng đệm Rất nhiều trƣờng hợp cần phải sử dụng Mạch đệm để phối hợp trở kháng của một Ngõ ra với nhiều Ngõ vào phía sau hoặc phải sử dụng Mạch đệm có điều khiển để phối hợp tuần tự luân phiên giữa các Ngõ ra song song để tránh bị tranh chấp Ngõ ra có thể gây chập mạch giữa các Ngõ ra ở mức Logic L với các Ngõ ra ở mức Logic H IC 74244: tích hợp tám cổng đệm cơ bản Trong mỗi IC 74244 có chứa 2 nhóm mỗi nhóm có 4 Mạch Đệm đƣợc phối hợp với 2 Chân lệnh Điều khiển là chân số 1 và chân số 19 sao cho khi hai chân này đƣợc đặt ở mức thấp (tức là 0V hay còn gọi là mức Low = L) thì nó mới cho phép các Ngõ ra hoạt động(có Tín hiệu ra theo sự xuất hiện của Tín hiệu vào). Ngƣợc lại, nếu các Chân Điều khiển bị đặt ở mức cao (5V hay còn gọi là mức High = H) thì Ngõ ra bị khống chế (ở trạng thái Trở kháng cao tức là hở mạch với mạch ngoài). Hình 7-13 Sơ đồ chân và cấu trúc của IC 74244 Chƣơng 7:Các vi mạch hỗ trợ việc thiết kế hệ thống dựa trên các họ trên Chủ biên: Nguyễn Đức Lợi Trang 213 7.6 Giải mã địa chỉ 74LS138 là IC MSI giải mã 3 đƣờng sang 8 đƣờng hay tách kênh 1 đƣờng sang 8 đƣờng thƣờng dùng và có hoạt động logic tiêu biểu, nó còn thƣờng đƣợc dùng nhƣ mạch giải mã địa chỉ trong các mạch điều khiển và trong máy tính. Hình 7-14 Sơ đồ chân và kết nối dạng khối của IC 74LS138 Hình 7-15 Sơ đồ giao tiếp với IC nhớ IC 74138 chỉ cho phép các Ngõ ra biến đổi theo sự thay đổi của các Bit ngõ vào khi và chỉ khi G1 = 1 và G2 = 0. Nếu G2 = 1 hoặc G1 = 0 thì các Ngõ ra đều bị khóa ở mức cao. Khi các Chân lệnh cho phép xuất kết quả đến Ngõ ra thì trong bất kỳ trƣờng hợp nào cũng chỉ có một Yn trong 8 Ngõ ra (từ Y0 đến Y7) đƣợc đặt ở mức thấp sao cho giá trị n của Ngõ ra tƣơng đƣơng với giá trị của Ngõ vào. Chú ý: Có 2 chân Điều khiển G2 gồm G2A và G2B và đƣợc gọi chung là G2 là 2 đƣờng điều khiển độc lập nhƣng có cùng tính năng điều khiển nhƣ nhau. Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 214 CHƢƠNG 8 : THIẾT KẾ CÁC HỆ THỐNG. ( 6 TIẾT) Thực hiện các mạch giao tiếp của vi xử lý với các thiết bị ngoại vi nhƣ: - Giao tiếp với Led đơn - Giao tiếp Led 7 thanh - Giao tiếp với OPTO - Giao tiếp với Rơle - Giao tiếp với LCD Trình bày các sơ đồ kết nối và cách thực hiện giao tiếp phần cứng Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 215 8.1 Nguồn cung cấp – Reset Vi điều khiển cần có nguồn ổn áp +5V DC, có thể dùng IC ổn áp 3 chân 7805 Hình 8-1 Mạch nguồn cung cấp ổn áp 5 volt DC 8.2 Xung đồng hồ Mặc dù vi điều khiển đã tích hợp sẵn bên trong bộ dao động, nó không thể hoạt động mà không có hai tụ điện bên ngoài và tinh thể thạch anh giúp ổn định hoạt động và xác định tần số của nó (tốc độ hoạt động của vi điều khiển). Tất nhiên, không phải lúc nào cũng có thể áp dụng giải pháp này, một trong số đó là cung cấp tín hiệu đồng hồ từ một nguồn đặc biệt thông qua invertor. Hình 8-2 Sơ đồ tín hiệu xung nối với vi điều khiển Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 216 8.3 Thiết bị chuyển mạch Không có thiết bị chuyển mạch đơn giản hơn là công tắc Switch và nút nhấn Push. Đây là cách đơn giản nhất để phát hiện sự xuất hiện của một điện áp trên chân vào của vi điều khiển Giải pháp đơn giản cho vấn đề này là kết nối một mạch RC đơn giản để ngăn chặn sự thay đổi điện áp nhanh chóng. Các giá trị của các thành phần không thể xác định chính xác. Trong hầu hết các trƣờng hợp, nó đƣợc khuyến cáo sử dụng các giá trị thể hiện trong hình bên dƣới. Hình 8-3 Mạch RC dùng chống dội khi chuyển mạch Nếu ổn định hoàn toàn là cần thiết thì các biện pháp triệt để nên đƣợc thực hiện. Đầu ra của các mạch, thể hiện trong hình (RS flip-flop), sẽ thay đổi trạng thái logic của nó chỉ sau khi phát hiện các xung đầu tiên kích hoạt. Giải pháp này là tốn kém (chuyển đổi SPDT), nhƣng hiệu quả. Hình 8-4 Mạch Flipflop dùng chống dội khi chuyển mạch 8.4 Giao tiếp với OPTOCOUPLER Một optocoupler là một thiết bị thƣờng đƣợc sử dụng để vi điều khiển tránh khả năng nguy hiểm hoặc điện áp trong môi trƣờng xung quanh. Optocouplers thƣờng có một, hai hoặc bốn nguồn ánh sáng (điốt LED) trên đầu vào. Đối diện với điốt, có một số yếu tố nhạy cảm với ánh sáng (phototransistors, photo_thyristors hoặc photo_triacs). Các optocouplers thƣờng đƣợc sử dụng nhất có phototransistors trên kết quả đầu ra của họ Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 217 Hình 8-5 Mạch giao tiếp dùng OPTO Optocoupler sử dụng một đƣờng truyền quang học ngắn để chuyển một tín hiệu giữa các yếu tố của mạch, trong khi vẫn giữ cách điện. Bằng cách này, các vi điều khiển và thiết bị điện tử khác đắt tiền đƣợc hoàn toàn bảo vệ khỏi điện áp cao và nhiễu là nguyên nhân phổ biến nhất làm huỷ hoại, gây tổn hại hoặc hoạt động không ổn định của các thiết bị điện tử trong thực tế. 8.5 Giao tiếp với Rơle Rơ le là một công tắc điện để mở và đóng dƣới sự kiểm soát của một mạch điện. Hình 8-6 Sơ đồ cấu tạo của Rơle đơn giản Do đó nó đƣợc kết nối với chân ra của vi điều khiển và sử dụng để bật / tắt các thiết bị điện áp cao nhƣ động cơ, máy biến áp, máy sƣởi, bóng đèn, hệ thống ăng-ten. Có nhiều loại khác nhau của rơle nhƣng tất cả đều hoạt động theo cùng một cách. Khi dòng điện chạy qua cuộn dây, rơle đƣợc vận hành bởi một nam châm điện để mở hoặc đóng một hoặc nhiều bộ kết nối. Tƣơng tự nhƣ optocouplers, rơle không có kết nối mạ (tiếp xúc điện) giữa đầu vào và đầu ra mạch. Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 218 Hình 8-7 Mạch xuất từ vi điều khiển qua Rơle 8.6 Mạch giao tiếp với Led đơn Giá trị đặc trƣng của các điốt thƣờng đƣợc sử dụng nhất đƣợc hiển thị trong bảng dƣới đây. Nhƣ đã thấy, có ba loại chính của đèn LED. Những tiêu chuẩn có độ sáng ful ở hiện tại của 20mA. Điốt hiện tại thấp đƣợc độ sáng ful lúc mƣời lần thấp hơn hiện tại trong khi điốt siêu sáng tạo ra ánh sáng tập trung hơn so với những tiêu chuẩn. Cách tính điện trở hạn dòng cho led đơn Hình 8-8 Sơ đồ nối Led với điện trở hạn dòng Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 219 Bảng 8.1: Thông số của LED 8.7 Mạch giao tiếp với LED 7 thanh Led 7 thanh bao gồm nhiều led tích hợp bên trong, các led đƣợc nối chung nhau 1 chân. Trong thực tế có 2 loại led 7 thanh là led 7 thanh A-nốt chung và led 7 thanh Ka-tốt chung. Hình 8-9 Hình dạng và sơ đồ chân của Led 7 thanh COLOR TYPE TYPICAL CURRENT ID (MA) MAXIMAL CURRENT IF (MA) VOLTAGE DROP UD (V) Infrared - 30 50 1.4 Red Standard 20 30 1.7 Red Super Bright 20 30 1.85 Red Low Current 2 30 1.7 Orange - 10 30 2.0 Green Low Current 2 20 2.1 Yellow - 20 30 2.1 Blue - 20 30 4.5 White - 25 35 4.4 Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 220 Led loại A-nốt chung, các led sẽ có chung nhau chân nguồn (chân dƣơng), chân còn lại của led nào đƣợc nối đất thì led đó sẽ sáng. Led loại Ka-tốt chung, các led sẽ nối chung nhau chân đất (chân âm), chân còn lại của led nào đƣợc nối nguồn thì led đó sẽ sáng. Hiển thị kết nối với vi điều khiển thƣờng chiếm một số lƣợng lớn các giá trị I / O pins, có thể là một vấn đề lớn, đặc biệt nếu nó là cần thiết để hiển thị số nhiều chữ số Hình 8-10 Mạch điều khiển với nhiều Led 7 thanh Lần đầu tiên một byte đơn vị đại diện đƣợc áp dụng trên một cổng vi điều khiển và một T1 đƣợc kích hoạt cùng một lúc. Sau một thời gian, T1 tắt, một byte đại diện cho hàng chục đƣợc áp dụng trên một cổng và T2 đƣợc kích hoạt. Quá trình này đƣợc lặp đi lặp lại theo chu kỳ ở tốc độ cao cho tất cả các chữ số và transistor tƣơng ứng. Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 221 Hình 8-11 Sơ đồ diễn tả vi điều khiển làm sáng số 5 trên Led 7 đoạn 8.8 Giao tiếp với màn hình tinh thể lỏng Liquid Crystal Displays (LCD) Một màn hình LCD đƣợc sản xuất đặc biệt để đƣợc sử dụng với vi điều khiển, có nghĩa là nó không thể đƣợc kích hoạt bằng mạch IC tiêu chuẩn. Nó đƣợc sử dụng để hiển thị thông điệp khác nhau trên một màn hình hiển thị tinh thể lỏng thu nhỏ. Nó sẽ hiển thị tất cả các chữ của bảng chữ cái, chữ cái Hy Lạp, dấu chấm câu, ký hiệu toán học vv Ngoài ra, nó có thể hiển thị các biểu tƣợng tạo ra bởi ngƣời sử dụng. Tính năng hữu ích khác bao gồm chuyển đổi tự động thông báo (trái và phải), xuất hiện con trỏ, đèn nền LED, vv Hình 8-12 Sơ đồ chân của LCD Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 222 Bảng 8.2 Chức năng các chân của LSD CHỨC NĂNG SỐ CHÂN TÊN MỨC LOGIC MÔ TẢ Ground 1 Vss - 0V Power supply 2 Vdd - +5V Contrast 3 Vee - 0 – Vdd Control of operating 4 RS 0 1 D0 – D7 are interpreted as commands D0 – D7 are interpreted as data 5 R/W 0 1 Write data (from controller to LCD) Read data (from LCD to controller) 6 E 0 1 From 1 to 0 Access to LCD disabled Normal operating Data/commands are transferred to LCD Data / commands 7 D0 0/1 Bit 0 LSB 8 D1 0/1 Bit 1 9 D2 0/1 Bit 2 10 D3 0/1 Bit 3 11 D4 0/1 Bit 4 12 D5 0/1 Bit 5 13 D6 0/1 Bit 6 14 D7 0/1 Bit 7 MSB Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 223 Một màn hình LCD bao gồm hai dòng, mỗi dòng có chứa 16 ký tự. Mỗi ký tự bao gồm 5x8 hoặc 5x11 điểm ma trận Hình 8-13 Các điểm sáng trên LCD Màn hình hiển thị độ tƣơng phản phụ thuộc vào điện áp cung cấp điện cho dù tin nhắn đƣợc hiển thị trong một hoặc hai dòng. Vì lý do này, thay đổi điện áp 0-VDD đƣợc áp dụng trên chân đánh dấu là Vee. Biến trở tinh chỉnh điện thế thƣờng đƣợc sử dụng cho mục đích đó. Một số màn hình LCD có tích hợp đèn nền (đèn LED màu xanh hoặc màu xanh lá cây). Khi đƣợc sử dụng trong quá trình hoạt động, một điện trở hạn chế hiện nay nên đƣợc nối tiếp kết nối với một trong các chân cung cấp điện đèn nền (tƣơng tự nhƣ đèn LED). Hình 8-14 Kết nối LCD có điện trở hạn dòng Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 224 Tùy thuộc vào có bao nhiêu dòng đƣợc sử dụng để kết nối màn hình LCD với vi điều khiển, có chế độ màn hình LCD 8-bit và 4-bit. Chế độ màn hình LCD 8-bit sử dụng kết quả đầu ra D0- D7 để truyền dữ liệu. Mục đích chính của chế độ LED 4-bit là để tiết kiệm các chân I / O của vi điều khiển. Chỉ có 4 bit cao hơn (D4-D7) đƣợc sử dụng cho truyền thông, trong khi bit khác có thể để lại không có liên quan. Mỗi dữ liệu đƣợc gửi đến màn hình LCD trong hai bƣớc sau: bốn bit cao hơn đƣợc gửi đầu tiên (thƣờng là thông qua các đƣờng D4-D7), sau đó bốn bit thấp hơn. Khởi tạo cho phép màn hình LCD để liên kết và giải thích bit nhận đƣợc một cách chính xác. Dữ liệu hiếm khi đƣợc đọc từ màn hình LCD (nó chủ yếu chuyển từ vi điều khiển với màn hình LCD), do đó thƣờng có thể tiết kiệm thêm chân I / O bằng cách đơn giản kết nối chân R / W xuống đất. Tiết kiệm nhƣ vậy có giá của nó, tin nhắn sẽ đƣợc hiển thị bình thƣờng, nhƣng nó sẽ không thể đọc cờ busy vì nó không thể đọc màn hình hiển thị. Hình 8-15 Sơ đồ kết nối LCD với vi điều khiển Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 225 8.9 Giao tiếp với RS232 Để cho phép giao tiếp nối tiếp thành công UART, cần thiết đáp ứng quy định cụ thể các tiêu chuẩn RS232. Nó chủ yếu đề cập đến cấp điện áp theo yêu cầu của tiêu chuẩn này. Tiêu chuẩn phù hợp trong tin nhắn là -10V cho logic (1), trong khi +10 V là cho logic (0). Vi điều khiển chuyển đổi dữ liệu một cách chính xác vào định dạng nối tiếp, nhƣng điện áp cung cấp điện của nó chỉ là 5V. Vì nó không dễ dàng chuyển đổi 0V vào 10V và 5V vào-10V, hoạt động này cho cả truyền và nhận bên trái. Ở đây, MAX232 của Maxim đƣợc sử dụng bởi vì nó là phổ biến rộng rãi, giá rẻ và đáng tin cậy. Sơ đồ bên dƣới cho thấy làm thế nào để nhận đƣợc tin nhắn đƣợc gửi bởi một máy tính. Bộ đếm thời gian T1 tạo ra tỷ lệ boud. Vì khi tinh thể thạch anh 11,0592 MHz đƣợc sử dụng ở đây, nó rất dễ dàng để có đƣợc tốc độ truyền tiêu chuẩn tới 9600 baud. Mỗi dữ liệu nhận đƣợc ngay lập tức đƣợc chuyển đến chân cổng P1. Hình 8-16 Sơ đồ giao tiếp vi xử lý với Max 232 Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 226 8.10 Giao tiếp với bàn phím Vi xử lý có thể giao tiếp với các bàn phím bên ngoài Hình 8-17 Giao tiếp với phím đơn Hình 8-18 Giao tiếp với module bàn phím Chƣơng 8:Thiết kế các hệ thống Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 227 Thuật toán đọc bàn phím - Khởi tạo cho cổng P2 = 0xFF - Lần lƣợt cho hàng bằng 0 - Với mỗi hàng kiểm tra cột, nếu cột nào bằng 0 thì phím tƣơng ứng với hàng và cột đó đƣợc bấm. - Với mỗi phím đƣợc bấm lƣu lại kết quả ( để sử dụng sau này – nếu có ) Tài liệu tham khảo Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 228 PHỤ LỤC Bài tập – thực hành Phần bài tập sau mỗi chƣơng và thực hành trên KIT vi điều khiển 89C51 đƣợc giáo viên bộ môn biên soạn riêng ( không ghép chung trong cuốn giáo trình này ) Các em tìm đọc: Bài tập các họ vi điều khiển/ vi xử lý từ cơ bản đến nâng cao Tài liệu hƣớng dẫn thực tập vi điều khiển trên KIT 89C52 Hƣớng dẫn lập trình mô phỏng Model Sim Tài liệu tham khảo Khoa kỹ thuật Điện – Điện tử Chủ biên: Nguyễn Đức Lợi Trang 229 TÀI LIỆU THAM KHẢO [1] Rolin D. McKinl, ―Introduction to Microcontrollers‖, 2005 [2] Muhammad Ali Mazidi ,Janice Gillispie Mazidi,: ―The 8051 Microcontroller and Embedded Systems Using Assembly and C‖ (Second Edition), 2010 [3] M68300 famaly MC68332 User‘s manual Motorola, INC. 1995 [4] Pentice Hall , ―The 8088/8086 family : Designing, programming and interfacing‖ , 1987 [5] Technical summary 32-bit modular microcontroller Motorola, INC. 1996 [6] Sharon Darley, Mark Maiolanie and Charles Melear An introduction to the MC68331 and MC68332, 1996 [7] Tống Văn On, ― Họ vi điều khiển 8051‖ [8] Hệ vi điều khiển 8051-NXB Lao động & Xã Hội, 2001. (Bản dịch quyển ―The 8051 Microcontroller‖, I.Scott Mackenzie, NXB Prentice Hall ( 2nd Ed.) 1995 [9] Bài thí nghiệm vi xử lý ( hệ vi điều khiển 8051 ) Bộ môn Kỹ thuật điện tử – Đại học Bách khoa TP HCM. Một số trang Web

Các file đính kèm theo tài liệu này:

  • pdfgiao_trinh_vi_xu_ly_phan_2.pdf