Quay có nhớ.

Một phần của tài liệu GIÁO TRÌNH VI ĐIỀU KHIỂN 8051 (Trang 31)

Cú pháp: RRC A và RLC A

* Quay phải có nhớ: RRC A

Trong quay phải có nhớ thì các bit của thanh ghi A được quay từ trái sang phải 1 bit và bit thấp nhất được đưa vào cờ nhớ CY và sau đó cờ CY được đưa vào vị trí bit cao nhất. Hay nói cách khác, trong phép RRC A thì LSB được chuyển vào CY và CY được chuyển vào MSB. Trong thực tế thì cờ nhớ CY tác động như là một bit bộ phận của thanh ghi A làm nó trở thành thanh ghi 9 bit.

CLR C ; make CY = 0 MOV A #26H ; A = 0010 0110 RRC A ; A = 0001 0011 CY = 0 RRC A ; A = 0000 1001 CY = 1 RCC A ; A = 1000 0100 CY = 1 * Quay trái có nhớ: RLC A.

Trong RLC A thì các bit được dịch phải một bit và đẩy bit MSB vào cờ nhớ CY, sau đó CY được chuyển vào bit LSB. Hay nói cách khác, trong RLC thì bit MSB được chuyển vào CY và CY được chuyển vào LSB. Hãy xem đoạn mã sau.

SETB C ; Make CY = 1 MOV A, #15H ; A = 0001 0101 RRC A ; A = 0101 1011 CY = 0 RRC A ; A = 0101 0110 CY = 0 RCC A ; A = 1010 1100 CY = 0 RCC A ; A = 1000 1000 CY = 1 3.2.5. Các lệnh di chuyển dữ liệu

Di chuyển dữ liệu từ ô nhớ này đến ô nhứ khác, hoặc giữa hai thanh ghi, thanh ghi ô nhớ.

CY Y

MSB LSB

Hình 3-1.Mô tả lệnh quay phải

MSB LSB

Hình 3-2. Mô tả lệnh quay trái

MSB LSB

Hình 3-3. Mô tả lệnh quay phải có nhớ

CY MSB LSB

Các lệnh vận chuyển dữ liệu bao gồm:

MOV: chuyển dữ liệu giữa thanh ghi với thanh ghi, thanh ghi với ô nhớ, một hằng số đến thanh ghi, một hằng số đến ô nhớ, và ngược lại

MOVC: Sao chép mã nguồn (dữ liệu đã được đặt trong vùng mã nguồn)

3.2.6. Các lệnh thao tác bit

SETB bit Thiết lập bit (bit bằng 1) CLR bit Xoá bit về không (bit = 0) CPL bit Bù bit (bit = NOT bit) JB bit, đích Nhảy về đích nếu bit = 1 JNB bit, đích Nhảy về đích nếu bit = 0 JNC đích Nhảy tới đích nếu CY = 0

CLR C Xoá bit nhớ CY = 0

JC đích Nhảy tới đích nếu CY = 1

Ví dụ: Hãy viết chương trình thực hiện các công việc sau:

a) Duy trì hiển thị bit P1.2 cho đến khi nó lên cao b) Khi P1.2 lên cao, hãy ghi giá trị 45H vào cổng P0 c) Gửi một xung cao xuống thấp (H-to-L) tới P2.3

Lời giải:

SETB P1.2 ; Tạo bit P1.2 là đầu vào

MOV A, #45H ; Gán A = 45H

AGAIN: JNB P1.2, AGAIN ; Thoát khi P1.2 = 1 MOV P0, A ; Xuất A tới cổng P0 SETB P2.3 ; Đưa P2.3 lên cao

CLR P2.3 ; Tạo P2.3 xuống thấp để xung H-T0-L

Trong chương trình này lệnh “JNB P1.2, AGCN” (JNB có nghĩa là nhảy nếu không bit) ở lại vòng lặp cho đến khi P1.2 chưa lên cao. Khi P1.2 lên cao nó thoát ra khỏi vòng lặp ghi giá trị 45H tới cổng P0 và tạo ra xung H-to-L bằng chuỗi các lệnh SETB và CLR.

3.2.7. Lệnh đọc cổng (adsbygoogle = window.adsbygoogle || []).push({});

Trong việc đọc cổng thì một số lệnh đọc trạng thái của các chân cổng, còn một số lệnh khác thì đọc một số trạng thái của chốt cổng trong. Do vậy, khi đọc các cổng thì có hai khả năng:

Một phần của tài liệu GIÁO TRÌNH VI ĐIỀU KHIỂN 8051 (Trang 31)