Một số lệnh của ngôn ngữ lập trình cho MCS

Một phần của tài liệu Nghiên cứu công nghệ lập trình IC vi xử lí 8051 (Trang 47 - 52)

ADD Chức năng: thêm vào giá trị của thanh ghi A giá trị của thanh ghi đợc chỉ định.

Ví dụ: thanh ghi A (accumulator) có giá trị 0C3H tơng ứng 11000011B và thanh ghi 0 có địa chỉ 0AAH tơng ứng 10101010B. Cấu trúc

ADD A, R0

kết quả thanh ghi A sẽ có giá trị 6DH tơng ứng 01101101B. Cú pháp:

ADD A, Ri (A) ← (A) + (Ri)

ADD A, Địa chỉ trực tiếp (A) ← (A) + (địa chỉ trực tiếp)

ADD A, @Ri đa vào thanh ghi A giá trị thanh ghi có địa chỉ đợc ghi trong Ri.

(A) ← (A) + ((Rn))

ADD A, #số liệu (A) ← (A) + # số liệu.

CJNE compare and jump if not equal. So sánh và nhảy tới địa chỉ mới nếu giá trị không bằng.

Câu lệnh này so sánh giá trị trong thanh ghi với một giá trị đã cho tr- ớc. Nếu kết quả so sánh không bằng con trỏ sẽ trở về địa chỉ đã cho trớc. Ngợc lại câu lệnh tiếp theo đợc thực hiện.

Ví dụ: Trong thanh ghi A có giá trị 00H. Thanh ghi R7 có giá trị 6D và thanh ghi R6 có giá trị #3D

Câu lệnh

WAIT:

ADD A, R6

CJNE A, # 9D, WAIT ADD A, R7

ba lệnh đầu thanh ghi A lần lợt có các giá trị 3, 6 , 9 . Lúc đó thanh ghi A có giá trị bằng # 9D câu lệnh tiếp theo là câu lệnh thêm vào A giá trị của R7 kết quả thanh ghi A có giá trị #15D.

CJNE compare and jump if not equal

Đây là câu lệnh so sánh giá trị thanh ghi với giá trị đã cho, nếu hai giá trị không bằng nhau chờ con trỏ trở về địa chỉ đã cho, ngợc lại con trỏ chuyển tới địa chỉ tiếp theo.

Trong thanh ghi A có giá trị 00H, thanh ghi R7 có giá trị 20D Wait:

Add A, #1D Cjne A, #10 D, Wait Add A, R7

Sau 10 lần so sánh chơng trình thực hiện vòng lập Wait và giá trị thanh ghi tăng lên 10 lúc đó thanh ghi có giá trị bằng giá trị so sánh chơng trình thoát khỏi vòng lặp và nhảy tới câu lệnh tiếp theo thanh ghi A sẽ có giá trị bằng 17D.

Cú pháp:

Cjne A, direct, rel Tơng tự tệp: If (A) < > (Direct) Then (PC) ← (PC) + (relative direct) If (A) < direct Then (C) ← 1 Else (C) ← 0 CLR A

Xoá giá trị trong A kết quả A có giá trị 00H. CLR bit

Xoá giá trị của bit kết quả bit có giá trị 0.

DEC (Decrament)

Giá trị của thanh ghi sau câu lệnh này giảm đi 1

Ví dụ trong thanh ghi R0 có giá trị 7FH (01111111B) thanh ghi địa chỉ 7EH và 7FH có giá trị lần lợt 00H và 40H các câu lệnh:

Dec @R0 Dec R0 Dec @R0

Câu lệnh thứ nhất giảm giá trị có địa chỉ trong thanh ghi R0 là 7FH đi 1 giá trị thanh ghi 7EH có giá trị là 0FFH. Câu lệnh thứ hai giảm giá trị trong thanh ghi R0 đi 1 thanh ghi lúc này có giá trị 7EH. Câu lệnh thứ 3 giảm giá trị của thanh ghi có giá trị trong R0 đi 1 thanh ghi 7EH có giá trị 3FH.

Câu lệnh :

Dec A giảm giá trị trong thanh ghi A đi 1 Dec Ri giảm giá trị trong thanh ghi Ri đi 1 Dec directr giảm giá trị của direct đi 1

Dec @Ri giảm giá trị thanh ghi có địa chỉ ghi trong Ri đi 1.

DJNZ (Decrecment and jump if not Zero)

Cú pháp này cho chơng trình chạy vòng lặp nh ví dụ sau: Ta thiết lập vòng lặp Wait:

Ví dụ trong thanh ghi với địa chỉ 40H là #10D, trong thanh ghi có địa chỉ 41H là #11D

Wait:

Djnz 40H, Wait Add 41H, #4D

Chơng trình sẽ thực hiện vòng lặp Wait 10 lần tơng ứng 20 às sau đó mới tăng giá trị trong thanh ghi có dịa chỉ 41H lên 4 thành # 15D.

INC increment (tăng giá trị thanh ghi lên 1) Cú pháp

Inc A tăng giá trị trong thanh ghi A lên 1 Inc Ri tăng giá trị trong thanh ghi Ri lên 1

Inc direct tăng giá trị trong thanh ghi direct lên 1 Ví dụ trong thanh ghi A có giá trị 40H với câu lệnh INC A

Sau câu lệnh này thanh ghi A có giá trị 41H

JB, Rel (Jump if bit set)

Câu lệnh này thực hiện khi con trỏ gặp câu lệnh, chơng trình sẽ nhảy tới địa chỉ đã cho nếu bit có giá trị một và ngợc lại chơng trình thực hiện lệnh tiếp theo.

Cú pháp:

JB P3.2, Label

Nếu ngắt ngoài 0 (P3.2) bật câu lệnh tiếp theo là câu lệnh có địa chỉ label, ngợc lại chơng trình sẽ thực hiện tiếp theo.

Lệnh ngợc lại câu lệnh này là lệnh JNB, Rel (jump if bit set)

Jmp @ A + Dptr lệnh di chuyển con trỏ chơng trình.

Mov (Mov byte variable) Gán giá trị cho byte. 50

Cú pháp:

Mov A, Ri Gán cho thanh ghi A giá trị trong thanh ghi Ri Mov A, direct Gán cho thanh ghi A giá trị biến trực tiếp.

Mov A,@Ri Gán cho thanh ghi A giá trị của thanh ghi có địa chỉ bằng giá trị trong thanh ghi Ri

Mov A, # data Gán cho thanh ghi A giá trị data

Mov Ri, A Gán cho thanh ghi Ri giá trị trong thanh ghi A Mov Ri, derect Gán cho thanh ghi Ri giá trị biến trực tiếp. Mov Ri, #data Gán cho thanh ghi Ri giá trị data

Mov direct, A Gán cho biến trực tiếp giá trị trong thanh ghi A. Ví dụ nh: Trong thanh ghi địa chỉ 30H có giá trị 40H. Trong thanh ghi địa chỉ 40 H có giá trị 10H. Tại thời điểm đó cổng P1 có giá trị 0CAH.

Mov R0, #30H; gán cho thanh ghi R0 giá trị 30H Mov A, @R0 ; gán cho A giá trị 40H

Mov R1, A; Gán cho R1 giá trị 40H Mov B, R1; Gán cho B giá trị 10H

Mov @R1, P1; Gán cho thanh ghi địa chỉ 40H giá trị 0CAH Mov P2, P1 ; Gán cho cổng P2 giá trị của cổng P1

Movc A, @A+DPTR Đây là câu lệnh dùng để hiển thị các kết quả. Thanh ghi A lần lợt sẽ nhận những giá trị mà con trỏ (DPTR) đã hớng dẫn.

Mul Multiply

Đây là lệnh nhân trong MCS 51. Với cú pháp Mul AB kết quả thanh ghi A sẽ có giá trị bằng giá trị của A nhân với giá trị của thanh ghi B.

Push Push into stack và Pop Pop from stack là lệnh xếp chồng và tháo chồng (stack), con trỏ chồng (stack pointer) sẽ dời đến chồng đợc lệnh và khi có lệnh pop câu lệnh trở về vị trí chồng ban đầu.

Ret Return from subroutine lệnh kết thúc chơng trình con.

Ví dụ ta cần có vòng lặp vô cùng (trạng thái chờ) Ta có tập lệnh sau: Mov A, #1D

Delay:

Cjne A, #0, Delay

Reti Return from interrupt lệnh kết thúc ngắt.

Khi khai báo ngắt và cho ngắt hoạt động nếu ngắt có giá trị không câu lệnh sẽ chạy tới vị trí ngắt. Khi thực hiện xong lệnh gặp lệnh Reti con trỏ sẽ trở về vị trí trớc khi ngắt

SETB Lệnh bật bit

Cú pháp SETB BIT Bit có tên sẽ bật lên 1.

Một phần của tài liệu Nghiên cứu công nghệ lập trình IC vi xử lí 8051 (Trang 47 - 52)

Tải bản đầy đủ (DOC)

(55 trang)
w