Đăng ký ngân hàng và phân bổ bộ nhớ ngăn xếp trong vi điều khiển 8051

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Tập hợp các thanh ghi mục đích chung (R0-R7) được gọi là các ngân hàng thanh ghi, chấp nhận một byte dữ liệu. Sổ đăng ký ngân hàng là một phần của Bộ nhớ RAM trong nhúng vi điều khiển, và nó được sử dụng để lưu trữ các lệnh của chương trình. Mỗi bộ vi điều khiển bao gồm nhiều ngân hàng bộ nhớ khác nhau và mỗi thanh ghi ngân hàng bao gồm một địa chỉ duy nhất để nhận dạng vị trí lưu trữ.

Đăng ký ngân hàng trong 8051

Đăng ký ngân hàng trong 8051

Đăng ký ngân hàng trong 8051



Bộ vi điều khiển 8051 bao gồm bốn ngân hàng thanh ghi, chẳng hạn như Bank0, Bank1, Bank2, Bank3 được chọn bởi thanh ghi PSW (Program Status Word). Các ngân hàng thanh ghi này hiện diện trong bộ nhớ RAM bên trong của vi điều khiển 8051 và được sử dụng để xử lý dữ liệu khi vi điều khiển được lập trình.


Chuyển đổi Ngân hàng Đăng ký



Theo mặc định, bộ vi điều khiển 8051 được cấp nguồn với ngân hàng thanh ghi 0 và bằng cách sử dụng Chương trình Trạng thái Từ (PSW), chúng ta có thể chuyển sang các ngân hàng khác. Hai bit của PSW được sử dụng để chuyển đổi giữa các ngân hàng thanh ghi. Hai bit này được truy cập bởi các lệnh định địa chỉ bit SETB và CLR.

Dựa trên sự kết hợp có thể có của RS1 và RS0 của PSW, ngân hàng thanh ghi được thay đổi tương ứng, tức là, nếu RS1 và RS0 bằng 0, thì Ngân hàng 0 được chọn. Tương tự, Bank1, 2 & 3 được chọn theo giá trị của RS1 và RS0.

Phân bổ bộ nhớ ngăn xếp trong Vi điều khiển 8051

Ngăn xếp là một vùng của bộ nhớ truy cập ngẫu nhiên (RAM) được cấp phát để lưu giữ tạm thời tất cả các tham số của các biến. Ngăn xếp cũng chịu trách nhiệm nhắc nhở thứ tự mà một hàm được gọi để nó có thể được trả về một cách chính xác. Bất cứ khi nào hàm được gọi, các tham số và biến cục bộ liên quan đến nó sẽ được thêm vào ngăn xếp (PUSH). Khi hàm trả về, các tham số và biến sẽ bị xóa (“POP”) khỏi ngăn xếp. Đây là lý do tại sao kích thước ngăn xếp của chương trình thay đổi liên tục trong khi chương trình đang chạy.


Thanh ghi được sử dụng để truy cập ngăn xếp được gọi là thanh ghi con trỏ ngăn xếp. Con trỏ ngăn xếp là một thanh ghi nhỏ dùng để trỏ vào ngăn xếp. Khi chúng ta đẩy một thứ gì đó vào bộ nhớ ngăn xếp, con trỏ ngăn xếp sẽ tăng lên.

Phân bổ bộ nhớ ngăn xếp trong Vi điều khiển 8051

Phân bổ bộ nhớ ngăn xếp trong Vi điều khiển 8051

Thí dụ

Khi bộ vi điều khiển 8051 bật nguồn, theo mặc định, con trỏ ngăn xếp có giá trị là 07, như thể hiện trong hình trên. Nếu chúng ta thực hiện thao tác ‘PUSH’, thì địa chỉ con trỏ ngăn xếp sẽ được tăng lên và chuyển sang một thanh ghi khác. Để tránh vấn đề này, trước khi bắt đầu chương trình, chúng ta phải gán một vị trí địa chỉ khác cho con trỏ ngăn xếp.

Hoạt động PUSH

‘PUSH’ được sử dụng để lấy các giá trị từ bất kỳ thanh ghi nào và lưu trữ trong địa chỉ bắt đầu của con trỏ ngăn xếp, tức là 00h bằng cách sử dụng phép toán ‘PUSH’. Và, đối với ‘PUSH’ tiếp theo, nó tăng +1 và lưu trữ giá trị trong địa chỉ tiếp theo của con trỏ ngăn xếp, tức là 01 giờ.

Hoạt động PUSH của ngăn xếp

Hoạt động PUSH của ngăn xếp

Hoạt động PUSH có nghĩa là (Trước trong trước ra trước)

Ví dụ: WAP trong hợp ngữ cho hoạt động PUSH

0000h
MOV 08h, # 21h
MOV 09 giờ, # 56 giờ
PUSH 00 giờ
PUSH 01 giờ
KẾT THÚC

Hoạt động POP

Nó được sử dụng để đặt các giá trị từ địa chỉ tối đa của con trỏ ngăn xếp đến bất kỳ địa chỉ của thanh ghi nào khác. Nếu chúng ta sử dụng lại ‘POP’ này, thì nó sẽ giảm đi 1 và giá trị được lưu trữ trong bất kỳ thanh ghi nào được cho là ‘POP’.

Hoạt động POP trong ngăn xếp

Hoạt động POP trong ngăn xếp

Hoạt động POP có nghĩa là 'Cuối cùng trong lần xuất trước'.

000H
MOV 00H, # 12H
MOV 01H, # 32H
POP 1FH
POP 0EH
KẾT THÚC

Thanh ghi của Vi điều khiển 8051

Nếu chúng ta thực hiện bất kỳ thao tác nào, dù là cộng hay trừ, thì các thao tác này không thể thực hiện trực tiếp trong bộ nhớ, và do đó, được thực hiện bằng cách sử dụng các thanh ghi. Có nhiều loại đăng ký trong vi điều khiển 8051 .

Các thanh ghi này được phân thành hai loại dựa trên hoạt động của chúng:

• Sổ đăng ký mục đích chung

• Thanh ghi chức năng đặc biệt

Sổ đăng ký mục đích chung

Như chúng ta đã thảo luận trước đó trong bài viết này rằng có bốn thanh ghi ngân hàng khác nhau với mỗi ngân hàng có 8 thanh ghi 8 bit có thể định địa chỉ và chỉ một thanh ghi ngân hàng có thể được truy cập tại một thời điểm. Tuy nhiên, bằng cách thay đổi số của sổ đăng ký ngân hàng trong sổ đăng ký cờ, chúng ta có thể truy cập vào các sổ đăng ký ngân hàng khác, đã được thảo luận trước đó trên bài báo này cùng với khái niệm ngắt trong 8051 .

Thanh ghi chức năng đặc biệt

Các thanh ghi chức năng đặc biệt bao gồm Bộ tích lũy, Thanh ghi B, Con trỏ dữ liệu, PCON, PSW, v.v., được thiết kế cho mục đích xác định trước trong quá trình sản xuất với địa chỉ 80H đến FFH và vùng này không thể được sử dụng cho mục đích lưu trữ dữ liệu hoặc chương trình. Các thanh ghi này có thể được thực hiện bởi các thanh ghi địa chỉ bit và địa chỉ byte.

Các loại thanh ghi chức năng đặc biệt

8051 bao gồm bốn thanh ghi chức năng đặc biệt liên quan đến đầu vào / đầu ra, trong đó có tổng số 32 đường I / O. Các thanh ghi chức năng đặc biệt điều khiển các giá trị được đọc từ các dòng I / O và các thanh ghi chức năng đặc biệt điều khiển hoạt động của 8051. Các thanh ghi chức năng đặc biệt bổ trợ không được kết nối trực tiếp với 8051 - nhưng trên thực tế, không có các thanh ghi này - 8051 không thể hoạt động bình thường. Bộ thanh ghi của 8051 được giải thích dưới đây.

Bộ thanh ghi của Vi điều khiển 8051

Đặt một giá trị hằng số cố định trong thanh ghi được gọi là tập thanh ghi. Các giá trị được đặt trong thanh ghi bằng cách sử dụng tập lệnh. 8051 tuân theo hướng dẫn CISC với kiến ​​trúc ‘Harvard’. Các CISC là viết tắt của tính toán tập lệnh phức tạp . Các loại lệnh khác nhau trong vi điều khiển 8051 bao gồm:

  1. Hướng dẫn số học
  2. Hướng dẫn có điều kiện
  3. Hướng dẫn Gọi và Nhảy
  4. Hướng dẫn lặp lại
  5. Hướng dẫn logic
  6. Hướng dẫn bằng vàng

1. Hướng dẫn số học

Các hướng dẫn số học thực hiện một số phép toán cơ bản như:

  • Thêm vào
  • Phép trừ
  • Phép nhân
  • Sư đoàn
Các lệnh số học trong Vi điều khiển 8051

Các lệnh số học trong Vi điều khiển 8051

Ví dụ:

a. Thêm vào:

Tổ chức 0000h
MOV R0, # 03H // di chuyển giá trị 3 là thanh ghi R0 //
MOV A, # 05H // di chuyển giá trị 5 trong bộ tích lũy A //
Thêm A, 00H // giá trị bộ tích lũy ‘5’ với 0 và được lưu trữ trên bộ tích lũy //
KẾT THÚC

b. Phép trừ:

Tổ chức 0000h
MOV R0, # 03H // di chuyển giá trị 3 là thanh ghi R0 //
MOV A, # 05H // di chuyển giá trị 5 trong bộ tích lũy A //
SUBB A, 03H // A = 5-3 giá trị cuối cùng là 2 được lưu trữ trong Bộ tích lũy A //
KẾT THÚC

C. Phép nhân:

Tổ chức 0000h
MOV R0, # 03H // di chuyển giá trị 3 là thanh ghi R0 //
MOV A, # 05H // di chuyển giá trị 5 trong bộ tích lũy A //
MUL A, 03H // A = 5 * 3 giá trị cuối cùng là 15, được lưu trữ trong Bộ tích lũy A //
KẾT THÚC

D. Bộ phận:

Tổ chức 0000h
MOV R0, # 03H // di chuyển giá trị 3 là thanh ghi R0 //
MOV A, # 15H // di chuyển giá trị 5 trong bộ tích lũy A //
DIV A, 03H // A = 15/3 giá trị cuối cùng là 5 được lưu trữ trong Bộ tích lũy A //
KẾT THÚC

2. Hướng dẫn có điều kiện

CPU có thể thực hiện các lệnh dựa trên điều kiện bằng cách kiểm tra trạng thái bit đơn hoặc trạng thái byte được gọi là các lệnh có điều kiện như:

Để kiểm tra trạng thái bit đơn trong thanh ghi có địa chỉ bit

JB- nhảy nếu bên dưới

JNB- nhảy nếu không ở trên

Để kiểm tra trạng thái bit mang

JC- nhảy nếu mang cờ

JNC nhảy nếu không mang

Để kiểm tra trạng thái bộ tích lũy là 0 hoặc 1

JZ- nhảy nếu cờ 0

JNZ- nhảy nếu không phải là 0

Đây là tất cả về bộ thanh ghi trong vi điều khiển 8051 và cấp phát bộ nhớ ngăn xếp của chúng. Chúng tôi hy vọng bài viết này có thể cung cấp cho bạn một số hiểu biết cần thiết về chủ đề cùng với một số chương trình rất thú vị đi kèm với mỗi chủ đề. Bạn cũng có thể viết thư cho chúng tôi để được trợ giúp trong mã hóa vi điều khiển và cả về dự án mới nhất về vi điều khiển .