I. GIỚI THIỆU CHUNG VỀ BỘ VI ĐIỀU KHIỂN
I.2 Đơn vị xử lý trung tâm (CPU)
Trong chương này chúng ta sẽ tìm hiểu về đơn vị xử lý trung tâm của MC68HC11 (CPU). CPU cĩ trách nhiệm thực thi tất cả các lệnh phần mềm trong chương trình. Cấu trúc của MC68HC11 CPU cho phép coi tất cả các ngoại vi, I/O và vị trí bộ nhớ là tương tự như nhau và được xem như là vị trí trong bản đồ bộ nhớ 64K. Kỹ thuật này đơi khi được gọi là “memory-map I/O”, sẽ khơng cĩ lệnh đặc biệt nào phân biệt I/O và bộ nhớ.
Trong phần này chúng ta sẽ xem xét về cấu trúc của CPU, các mode địa chỉ và cấu trúc của các lệnh.
CPU cĩ 7 thanh ghi và nĩ được chỉ ra như hình dưới đây:
S X H I N Z V C Thanh ghi trạng thái : Thanh ghi tích luỹ 8 bit A, B : Thanh ghi tích luỹ 16 bit D : Thanh ghi chỉ số X
: Thanh ghi chỉ số Y : Con trỏ ngăn xếp : Bộ đếm chương trình
I.2.1 Các thanh ghi tích luỹ A, B
Đây là các thanh ghi 8 bit để giữ tốn hạng và các kết quả tính tốn số học hay thao tác dữ liệu.
I.2.2 Thanh ghi tích luỹ D
Đối với một số lệnh, hai thanh ghi A, B cĩ thể được xem như là một thanh ghi tích luỹ 2 byte đơn giản được gọi là thanh ghi tích luỹ D.
I.2.3 Các thanh ghi chỉ số X (IX) và Y (IY)
Thanh ghi IX và IY là hai thanh ghi chỉ số 16 bit mà cĩ thể được cộng với một offset 8 bit kèm theo trong một lệnh tạo nên một địa chỉ tác động. Các thanh nghi này cũng cĩ thể được dùng như một bộ đếm hay một thanh ghi lưu trữ tạm thời. Tuy nhiên cĩ sự khác nhau giữa 2 thanh ghi này là hầu hết các lệnh sử dụng thanh
7 A 0 7 B 0 15 D 0 15 IX 0 15 IY 0 15 SP 0 15 PC 0
ghi IY địi hỏi một byte mã phụ và một chu kỳ thời gian thi hành phụ do cách chỉ định opcode được kể tới.
I.2.4 Con trỏ ngăn xếp
CPU MC68HC11 cĩ một vùng nhớ đặc biệt được sử dụng để lưu trữ thơng tin của các thanh ghi trong quá trình thực hiện chương trình gọi là Stack. Kiểu hoạt động của stack là vào sau, ra trước (Last In, First Out LIFO).
Bộ vi điều khiển 68HC11 sử dụng thanh ghi 16 bit gọi là con trỏ ngăn xếp, Stack Pointer (SP) chỉ cho ta biết cần đưa vào hoặc rút dữ liệu ra từ đâu. Để chứa dữ liệu 68HC11 đưa 1 byte dữ liệu vào stack rồi giảm SP. Để lấy dữ liệu ta tăng SP rồi rút dữ liệu. Khi CPU bắt đầu hoạt động lần đầu, nĩ khởi đầu SP một giá trị. Để thay đỏi kích cỡ stack ta thay đổi giá trị SP.
I.2.5 Bộ đếm chương trình
Bộ đếm chương trình là một thanh ghi 16 bit giữ địa chỉ của các lêïnh kế tiếp để thực thi.
I.2.6 Thanh ghi trạng thái (CCR)
Thanh ghi 8 bit này chứa 5 chỉ báo mã trạng thái (C, V, Z, N và H), 2 bit che ngắt IRQ và XIRQ và bit khơng cho stop (S). Trong MC68HC11 các cờ này tự động được cập nhật bởi hầu hết các lệnh.
• Cờ Carry/ borrow (C)
Bit C được set nếu ALU cĩ một carry hay borrow xảy ra trong các hoạt động số học. Bit C cũng là cờ báo lỗi trong các hoạt động nhân và chia. Ta cĩ thể lợi dụng bit C trong các lệnh dịch nhiều từ.
• Cờ overflow (báo tràn) (V)
Các bit cĩ dấu nằm trong khoảng – 128 ($80) đến + 127 ($7F). Nếu kết quả phép cộng hoặc trừ vượt quá khoảng này thì CPU đưa cờ tràn (overflow flag) V về 1, nếu kết quả nằm trong khoảng này thì CPU xĩa cờ bằng 0.
• Cờ zero (báo bằng khơng) (Z)
Được set nếu kết quả trong các hoạt động xử lý dữ liệu, logic, số học là bằng khơng.
• Cờ negative (báo âm) (N)
Được sét nếu kết quả trong các hoạt động xử lý dữ liệu, logic, số học là số âm (bit MSB=1).
Bit I là một bit che tồn cục khiến cho tất cả các nguồn ngắt cĩ thể được che. Khi bit I được set, các ngắt trở nên ở trạng thái chờ, nhưng các CPU hoạt động tiếp tục mà khơng bị ngắt đến khi bit I được xố.
• Cờ hafl carry (H)
Cờ được set nếu cĩ nhớ từ bit 3 sang bit 4 trong đơn vị tính tốn số học trong các lệnh ADD, ABA, ADC. Cờ này thường được sử dụng trong các hoạt động BCD.
• Cờ che ngắt (X)
Cho phép ngắt từ chân XIRQ bên ngồi. Bit che ngắt X chỉ được set bằng phần cứng và xố bằng lệnh chương trình.
• Cờ cho phép Stop (S)
Bit dừng Stop (S) sử dụng để cho phép hoặc khơng cho phép lệnh Stop.