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

Giáo trình Vi xử lý: Phần 2 - CĐ Giao thông Vận tải

58 53 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 58
Dung lượng 1,98 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tiếp nội dung phần 1, Giáo trình Vi xử lý: Phần 2 cung cấp cho người học những kiến thức như: Hệ vi điều khiển 32-bit MC68332; Lập trình hợp ngữ trên họ vi điều khiển 32-bit MC68332; Các vi mạch hỗ trợ việc thiết kế hệ thống dựa trên các họ trên; Thiết kế các hệ thống.

Trang 1

CHƯƠNG 5 HỆ VI ĐIỀU KHIỂN 32-BIT MC68332 ( 9 TIẾT)

Họ vi điều khiển Freescale Semiconductor - Từ năm 2004, những vi điều khiển này được phát triển và tung ra thị trường bởi Motorola Hai hãng Freescale 683xx (trước đây là Motorola 683xx) là một gia đình tương thích vi điều khiển sử dụng một Freescale 68000 dựa trên lõi CPU Trong đó MC68332 là một vi điều khiển tích hợp cao 32-bit kết hợp khả năng xử lý dữ liệu hiệu suất cao với các hệ thống thiết bị ngoại vi mạnh mẽ MCU này được xây dựng từ các mô-đun tiêu chuẩn giao diện thông qua một bus mô-đun nội chung (IMB) MCU kết hợp một CPU 32-bit (CPU32), một mô-đun tích hợp hệ thống (SIM), một đơn vị thời gian xử lý (TPU), một hàng đợi mô-đun nối tiếp (QSM), và một mô-đun bộ nhớ RAM tĩnh 2-Kbyte với khả năng

mô phỏng TPU (TPURAM)

Nội dung chính chương 5 gồm

5.1 Mở đầu 5.2 Mô tả các tín hiệu

5.3 Mô-đun tích hợp hệ thống SIM (system integration module) 5.4 Đơn vị xử lý trung tâm CPU ( central processing unit)

5.5 Đơn vị xử lý thời gian TPU ( time processor unit ):

5.6 Mô-đun nối tiếp có hàng đợi QSM ( queued serial module ): 5.7 TPURAM

Trang 2

5.1 Mở đầu

MC68332 là một thành viên của họ vi điều khiển Motorola, một loạt các thiết bị 16-bit và bit đƣợc xây dựng từ các mô-đun ngoại vi trên chip tiêu chuẩn giao tiếp bằng BUS tiêu chuẩn Các MC68332 là một hệ thống điều khiển đơn chip phức tạp mà kết hợp gồm một CPU 32-bit mô-đun (CPU32), một mô-đun tích hợp hệ thống (SIM), một đơn vị xử lý thời gian (TPU), một mô-đun xếp hàng nối tiếp (QSM), và 2 chế độ chờ Kbyte RAM (SRAM) với khả năng TPU MCU do đó cung cấp cho một nhà thiết kế với nhiều tùy chọn khác nhau, từ cấu hình thiết lập lại làm gián đoạn thế hệ, phải đƣợc xem xét trong giai đoạn thiết kế

32-Hình 5-1 Sơ đồ chân vi điều khiển 32-BIT MC68332

Trang 3

Hình 5-2 Sơ đồ khối MC 68332 5.2 Mô tả các tín hiệu

Các tín hiệu MCU Gồm tín hiệu gốc, chủng loại, trạng thái hoạt động đồng thời mô tả các chức năng tín hiệu Chân MCU thường có nhiều chức năng

Trang 4

Bảng 5.1 : Mô tả các tín hiệu của MCU MC68332

ADDR[23:0] — Address Bus: bus địa chỉ

AS— Address Strobe: Lưu trữ địa chỉ

AVEC— Autovector

BERR— Bus Error : lỗi bus

BG— Bus Grant : Bus phụ trợ

BGACK— Bus Grant Acknowledge : xác nhận Bus phụ trợ

BKPT— Breakpoint : Điểm dừng

BR— Bus Request : Yêu cầu Bus

CLKOUT — System Clock : Đồng hồ hệ thống

CS[10:0]— Chip Selects: Chọn chip

CSBOOT— Boot ROM Chip Select: Chọn Ram chip khởi động

DATA[15:0] — Data Bus: bus dữ liệu

DS— Data Strobe:lưu trữ dữ liệu

DSACK[1:0]— Data and Size Acknowledge : Xác nhận kích thước và dữ liệu

DSCLK — Development Serial Clock : Xung nối tiếp

Trang 5

DSI — Development Serial Input : Ngõ vào nối tiếp

DSO — Development Serial Output : Ngõ ra nối tiếp

EXTAL — External Crystal Oscillator Connection: Kết nối dao động thạch anh ngoài

FC[2:0] — Function Codes : hàm mã

FREEZE — Freeze : đóng gói

HALT— Halt :

IFETCH — Instruction Fetch: Đường dẫn Fetch

IPIPE — Instruction Pipeline: Hướng dẫn đường ống

IRQ[7:1] — Interrupt Request : yêu cầu ngắt

MISO — Master In Slave Out : Chủ trong tớ ngoài

MODCLK — Clock Mode Select : Chọn chế độ đồng hồ

MOSI — Master Out Slave In : Chủ ngoài tớ trong

PC[6:0] — SIM I/O Port C:

PCS[3:0] — Peripheral Chip Selects Chọn chip ngoại vi

PE[7:0] — SIM I/O Port E

PF[7:0] — SIM I/O Port F

RXD — SCI Receive Data

SCK — QSPI Serial Clock : Đồng hồ nối tiếp

SIZ[1:0] — Size: Kích thước

SS— Slave Select

T2CLK — TPU Clock In

TPUCH[15:0] — TPU Channel Signals

TSC — Three-State Control: điều khiển ba trạng thái

TXD — SCI Transmit Data : truyền dữ liệu

XFC — External Filter Capacitor: tụ lọc ngoài

Trang 6

XTAL — External Crystal Oscillator Connection: Kết nối thạch anh dao động bên ngoài

5.3 Mô-đun tích hợp hệ thống SIM (system integration module)

Mô đun tích hợp hệ thống SIM thực hiện các tính năng sau:

• External Bus Support: Hỗ trợ giao tiếp BUS ngoài

• Programmable Chip-Select Outputs: chọn mạch chip đầu ra lập trình

• System Protection Logic: Mức logic bảo vệ hệ thống

• Watchdog Timer, Clock Monitor, and Bus Monitor: bộ định thời watchdog, xung đồng hồ và BUS màn hình

Trang 7

• System Clock Based on 32.768-kHz Crystal for Low Power Operation: Khối dao động thạch anh tạo xung 32.768KHz tiêu thụ nguồn thấp

• Test/Debug Submodule for Factory/User Test and Development: Chức năng chạy thử nghiệm Test/Debug làm công cụ phát triển phần mềm cho người sử dụng

Module tích hợp hệ thống gồm có 5 khối chính thực hiện các chức năng: khởi động, khởi tạo, cấu hình cho các chức năng và truy cập BUS ngoài

-Khối bảo vệ và định cấu hình cho hệ thống MCU thiết lập cấu hình và chế độ hoạt động Khối này còn cung cấp BUS và giám sát phần mềm watchdog

-Bộ tạo xung Clock sẽ tạo Clock cho hoạt động của SIM, các khối mạch khác và các thiết bị bên ngoài, ngoài ra nó còn có bộ tạo chu kỳ ngắt hỗ trợ các chương trình ngắt theo giới hạn thời gian nhất định

-Khối giao tiếp BUS ngoài xử lý việc truyền thông giữa module IBM và không gian địa chỉ bên ngoài

-Khối chọn chip cung cấp 11tín hiệu chọn chip và 1 tín hiệu chọn ROM khởi động (boot ROM) Cả hai nhóm này đều tạo ra cùng thanh ghi địa chỉ cơ sở và thanh ghi lựa chọn

-Khối kiểm tra hệ thống bao gồm các khối mạch phần cứng cần thiết cho việc chạy kiểm tra MCU Nó thực hiện các chức năng thử nghiệm nhà máy mà không thực hiện chức năng bình thường

Các thanh ghi điều khiển của SIM bao gồm 128 byte, các thanh ghi không dùng (not use) khi đọc sẽ trả về giá trị 0

Trang 8

Hình 5-3 Sơ đồ khối SIM 5.4 Đơn vị xử lý trung tâm CPU ( central processing unit)

MCU 86332 sử dụng CPU 32 bit với các tính năng như:

• Upward Object Code Compatible: Đối tượng mã tương thích hường lên, các phần mềm không cần sửa đổi vẫn có thể thực hiện được

• New Instructions for Controller Applications: Có các lệnh mới chuyên dụng cho chức năng điều khiển

• 32-Bit Architecture: Cấu trúc 32 bit

• Virtual Memory Implementation: Chức năng quản lý bộ nhớ ảo

• Loop Mode of Instruction Execution: Chế độ lặp các lệnh và hướng dẫn thực hiện

• Table Lookup and Interpolate Instruction: bảng tra cứu và nội suy lệnh đưa vào

Trang 9

• Improved Exception Handling for Controller Applications: Nâng cao xử lý cải tiến các chức năng ngoại lệ trong các ứng dụng điều khiển

• Trace on Change of Flow: Chức năng dò tìm thay đổi điều khiển của chương trình

• Hardware Breakpoint Signal, Background Mode: Tín hiệu ngắt bằng phần cứng, chế độ nền

• Fully Static Operation: thực hiện tĩnh

Hình 5-4 Cấu hình BUS phân tích trạng thái

CPU32, các mô-đun xử lý lệnh của họ M68300, dựa trên bộ vi xử lý tiêu chuẩn công nghiệp MC68000 Nó có nhiều tính năng của MC68010 và MC68020, cũng như các tính năng độc đáo phù hợp cho các ứng dụng điều khiển hiệu suất cao MC 68332 có mã lệnh hoàn toàn tương thích với M68000 nhưng nó trội hơn giải thuật tính toán chuyên sâu và hỗ trợ ngôn ngữ bậc cao Cấu trúc hỗ trợ ngôn ngữ bậc cao bằng phần cứng của MC68332 sẽ làm giảm độ lớn và độ phức tạp của các chương trình điều khiển khi thực hiện chúng bằng ngôn ngữ cấp cao CPU MC68332 có 16 thanh ghi 32 bit, một thanh ghi bộ đếm chương trình 32 bit, một thanh ghi con trỏ ngăn xếp 32 bit, một thanh ghi trạng thái 16 bit, hai thanh ghi mã lệnh có chức năng thay đổi được và một thanh ghi vecto cơ sở 32 bit

Các mô hình lập trình của CPU bao gồm mô hình lập trình mức ứng dụng và mô hình lập trình mức giám sát tương ứng với mức đặc quyền người sử dụng và mức đặc quyền người giám sát Một số lệnh chỉ thực hiện ở mức giám sát mà không sử dụng được ở mức ứng dụng Điều này cho phép chương trình giám sát bảo vệ các tài nguyê hệ thống Bit S trong thanh ghi trạng thái

sẽ xác định mức đặc quyền của chương trình

Trang 10

Hình 5-5 Sơ đồ khối CPU32 5.5 Đơn vị xử lý thời gian TPU ( time processor unit ):

Bộ xử lý thời gian TPU là bộ xử lý chuyên dụng hoạt động độc lập với bộ xử lý 32 bit có các tính năng nhƣ sau

• Dedicated Microengine Operating Independently of CPU32

• 16 Independent, Programmable Channels and Pins: 16 kênh độc lộp lập trình đƣợc

• Any Channel can Perform any Time Function: Một kênh bất kỳ có thể thực hiện hàm định thời bất kỳ

Trang 11

• Two Timer Count Registers with Programmable Prescalers: Hai thanh ghi đếm định thời có

bộ chia trước có thể lập trình

• Selectable Channel Priority Levels: Mức ưu tiên cho các kênh có thể lập trình được

TPU là một bộ vi điều khiển thông minh hoạt động bán tự động thực hiện các tác vụ điều khiển thời gian Nó hoạt động đồng thời với CPU, nó thực hiện các tác vụ đã được định trình trong TPU, xử lý các lệnh trong ROM, truy xuất các dữ liệu chia sẽ cùng CPU và tác động các ngõ vào ra định trình Bộ xử lý thời gian cung cấp hiệu suất tối ưu cho các chương trình điều khiển

có liên quan tới thời gian

5.6 Mô-đun nối tiếp có hàng đợi QSM ( queued serial module ):

Các QSM có hai giao diện nối tiếp, xếp hàng đợi giao diện ngoại vi nối tiếp (QSPI) và giao diện truyền thông nối tiếp (SCI)

Hình 5-6 Sơ đồ khối QSM

Trang 12

• Enhanced Serial Communication Interface (SCI), Universal Asynchronous Receiver Transmitter (UART): Modulus Baud Rate, Parity: Cải tiến giao diện truyền thông nối tiếp, modulus tốc độ Baud, chẵn lẻ

• Queued Serial Peripheral Interface (SPI): 80-Byte RAM, Up to 16 Automatic Transfers:

• Dual Function I/O Ports: Cổng giao tiếp vào ra có 2 chức năng

• Continuous Cycling, 8–16 Bits per Transfer: truyền nối tiếp 8 – 16 bit

Các QSPI cung cấp mở rộng ngoại vi dễ dàng hay truyền thông xử lý nội thông qua một chế độ song công, đồng bộ, ba đường bus Bốn con chip ngoại vi lập trình lựa chọn, có thể chọn lên đến 16 thiết bị ngoại vi Một hàng đợi RAM khép kín cho phép nối tiếp lên đến 8-16 bit hoặc truyền tải dữ liệu 256-bit mà không có sự can thiệp của CPU Một chế độ bao quanh đặc biệt

hỗ trợ liên tục lấy mẫu của một thiết bị ngoại vi nối tiếp, với tự động cập nhật QSPI RAM, cho hiệu quả với bộ A / D chuyển đổi

5.7 TPURAM

Module Ram tĩnh có thể sử dụng làm bộ nhớ mô phỏng cho bộ xử lý thời gian - Static RAM Module with TPU Emulation Capability (TPURAM)

• 2-Kbytes of Static RAM: Dung lượng RAM tĩnh 2Kbyte

• May be Used as Normal RAM or TPU Microcode Emulation RAM: Có thể sử dụng làm bộ nhớ RAM thông thường hoặc bộ nhớ RAM chứa mã vi chương trình cho TPU

Hình 5-7 Sơ đồ khối TPU

Trang 13

TPURAM có dung lượng 2Kbyte SRAM, tốc độ truy xuất nhanh với hai chu kỳ BUS, nó có thể

sử dụng làm ngăn xếp hoặc khai báo biến Ngoài ra còn có thể dùng làm bộ nhớ mô phỏng thực hiện trong giải thuật thời gian mới TPURAM có thể chiếm 4Kbyte trong bản đồ bộ nhớ, nhưng khi đó các thanh gi điều khiển TPU sẽ không điều khiển được

Các TPU có thể được xem như một máy vi tính đặc biệt có mục đích thực hiện một loạt lập trình của hai hoạt động, phù hợp và nắm bắt Mỗi lần xuất hiện của một trong hai hoạt động được gọi là một sự kiện Một loạt chương trình của sự kiện được gọi là một chức năng TPU chức năng thay thế các chức năng phần mềm sẽ yêu cầu máy chủ dịch vụ ngắt CPU

Các chức năng thời gian được lập trình hiện đang có sẵn:

• Đầu vào chụp / đầu vào quá trình chuyển đổi truy cập

• Đầu ra so sánh

• điều chế độ rộng xung

• đồng bộ điều chế độ rộng xung

• Thời gian đo lường với quá trình chuyển đổi và phát hiện

• Thời gian đo lường với quá trình chuyển đổi không có phát hiện

• Chức vụ đồng bộ phát xung

• Động cơ bước

• Thời gian / độ rộng xung

Trang 14

CHƯƠNG 6 LẬP TRÌNH HỢP NGỮ TRÊN HỌ VI ĐIỀU KHIỂN 32-BIT MC68332 ( 9 TIẾT)

Nội dung chính chương 6

6.1 Mô tả chi tiết các lệnh của MC68332

6.2 Trình dịch hợp ngữ

6.3 Khuôn dạng của chương trình hợp ngữ

6.4 Đánh giá biểu thức trong thời gian dịch

Trang 15

6.1 Mô tả chi tiết các lệnh của MC68332

Tập lệnh của MC 68332 có thể chia thành 8 nhóm nhƣ sau:

 Lệnh chuyển giữa các thanh ghi EXG (Exchanger)

Chuyển đổi giữa hai thanh ghi dữ liệu 32bit và không có mã điều kiện nào bị thay đổi, các thanh ghi này có thể là thanh ghi dữ liệu đa năng hoặc thanh ghi địa chỉ

 Lệnh nạp địa chỉ tự động LEA (Load Effective Address)

Nạp địa chỉ 24 bit vào thanh ghi địa chỉ, không có mã điều kiện bit nào thay đổi

Trang 16

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ớ

MOVE.W D3,D6 MOVE.L (A0)+, D0

 Lệnh chuyển dữ liệu vào thanh ghi địa chỉ MOVEA (Mode Address)

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

Trang 17

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

Trang 18

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

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

Trang 19

 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

Trang 20

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

 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

Trang 21

 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

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)

Trang 22

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

Trang 23

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

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

Trang 24

DW $4000h

DW $0000h

DW $4000h ; khởi động SP = $4000

Các giá trị vector cho reset

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ó:

Trang 25

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

Trang 26

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

Trang 27

- 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

Trang 28

 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

Trang 29

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

Ngày đăng: 10/07/2021, 10:04

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Rolin D. McKinl, ―Introduction to Microcontrollers‖, 2005 Khác
[2] Muhammad Ali Mazidi ,Janice Gillispie Mazidi,: ―The 8051 Microcontroller and Embedded Systems Using Assembly and C‖ (Second Edition), 2010 Khác
[3] M68300 famaly MC68332 User‘s manual Motorola, INC. 1995 Khác
[4] Pentice Hall , ―The 8088/8086 family : Designing, programming and interfacing‖ , 1987 [5] Technical summary 32-bit modular microcontroller Motorola, INC. 1996 Khác
[6] Sharon Darley, Mark Maiolanie and Charles Melear An introduction to the MC68331 and MC68332, 1996 Khác
[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 Khác
[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 Khác

TỪ KHÓA LIÊN QUAN