Ngày tải lên :
09/10/2012, 15:59
... A +
VD2.CLR P1.0 lệnh này làm cho điện áp trên chân số 1 của chíp AT89C51 xuống 0 vôn
5.Ngược lại với Clr
VD Setb p1.0, kết quả làm điện áp trên chân số 1 lên 5 vôn
6.Quay lại chỗ mà chương trình rẽ nhánh
Nếu không gặp các lệnh rẽ nhánh thì chương trình sẽ thực hiện theo thứ tự từ trên xuống dưới.
7.quay lại chỗ mà chương trình bị ngắt
VD gia chủ đang kể câu chuyện về đứa con gái của ông ta, tới đoạn “Con tôi khóc nhiều nên mắt đã
bị mù” bỗng chuông điện thoại reo. Sau khi nghe xong điện thoại quay lại câu chuyện, thay vì phải
hỏi “tôi kể tới đâu rồi” RETI là câu trả lời.
8. lệnh nhảy, lệnh rẽ nhánh không điều kiện.
lệnh cùng chức năng SJMP
9.Lệnh kiểm tra 1 bít, Nếu bít đó bằng 1 thì rẽ nhánh
VD Jb p0.0,xuong0
Setb p1.0
Xuong0:
Clr p1.0
Ret
Các lệnh trên sẽ kiểm tra 1 nút nhấn nối Mass, nếu nhấn xuống thì đèn sáng, nếu thả thì đèn tắt
10. Lệnh kiểm tra bít, nếu bít =0 thì rẽ nhánh
11.Lệnh tăng ô nhớ lên 1 đơn vị
VD mov r2,#1
Inc r2
...
MOV DPTR,#1000
MOV A, #4EH
MOVX @DPTR, A ; ghi giá trị 4EH vào ô nhớ ngoài có địa chỉ 1000
c. Lệnh liên quan đến vùng nhớ chương trình (đọc mã lệnh):
Cú pháp: MOVC A,@A+DPTR
Thực hiện: lấy nội dung ô nhớ trong vùng nhớ chương trình có địa chỉ là nội dung thanh ghi A +
DPTR đặt vào thanh ghi A.
Ví dụ 1:
MOV A,#2
MOV DPTR,#500
MOVC A,@A+DPTR ; A ⇓ ...
17.DIV A,B
18.RLC
Chú giải:
Rn: Viết tắt cho các thanh ghi từ R0R7
DIRECT: địa chỉ của ô nhớ dữ liệu
1.Lấy dữ liệu cất ở DIRECT bỏ vào trong thanh ghi Rn. VD Mov r1,21h
21h là địa chỉ Ram trên Chíp.Địa chỉ thường viết dưới dạng số Hex, chữ h ở sau chỉ số Hex, chữ B
chỉ số nhị phân, không có chữ theo sau là số nguyên.
2.Nhập 1 số nguyên vào địa chỉ mà Rn đang nắm giữ.
Vd: mov r0,#21h
Mov @R0,#55
2 lệnh trên sẽ nhập số 55 vào địa chỉ 21h, lệnh thay thế 2 lệnh trên: Mov 21h,#55
3.Nhập 1 số nguyên vào Rn
Hoặc có thể viết Mov r7,#11111111b. 255 ở hệ thập phân tương đương với 1111111b ở hệ nhị phân
4.Xóa 1 bít, xóa 1 ô nhớ
VD1: mov 21h,#11111111b
Clr 21h.0
Mov a,21h
Với 3 lệnh trên thì thanh ghi A sẽ chứa số 11111110B
Mov R3,#4
Add a,r3
Kết quả: A=4
15. Lệnh trừ
16. nhân
17.chia
18. lệnh quay dịch
VD mov r1,#01110011B
Setb CF
RLC r1
Kết quả: r1=11100111B, CF=0
Nếu thêm 1 lệnh RLC r1 nữa thì
Kq: r1=11001110, CF=1
II: TẬP LỆNH ĐẦY ĐỦ
1. NHÓM LỆNH DI CHUYỂN DỮ LiỆU:
1. Lệnh di chuyển dữ liệu trực tiếp:
Cú pháp: MOV <ĐÍCH>,
Trong đó:
. <ĐÍCH>: có thể là thanh ghi, địa chỉ ô nhớ trong vùng RAM nội
. : có thể là thanh ghi, địa chỉ ô nhớ trong vùng RAM nội hoặc #
Thực hiện: di chuyển nội dung vào <ĐÍCH>
Ví dụ:
MOV A, 120
MOV B, #24
MOV 120,#10110010B
MOV R3, A
MOV P3,#3EH
Lúc này trong thanh ghi r2 sẽ chứa số 2
12. Lệnh giảm 1 đơn vị
13.Lệnh kiểm tra thanh ghi Rn , nếu khác Data thì rẽ nhánh
VD chương trình đếm số người đi qua cổng, đủ 5 người thì đổ chuông, cảm biến gắn vào chân số 1
của chíp
Mov r0,#0
Jnb p1.0,tang_so_nguoi
Ret
Tang_so_nguoi:
Inc r0 ;tăng biến đếm lên 1
ĐV
Cjne r0,#5,quaylai ; nếu khác 5 thì quay lại đếm người
Call do_chuong ; gọi hàm đổ chuông
Quaylai:
Ret
Do_chuong:
Setb p1.1 ; chuông nối với chân số 2 của chíp
Ret
14. Lệnh cộng, kết quả lưu vào A
VD mov A,#1
2. Nhóm lệnh di chuyển dữ liệu gián tiếp:
a. Liên quan đến vùng nhớ RAM nội:
+ Lệnh đọc bộ nhớ:
Cú pháp: MOV <ĐÍCH>, @Rp
Trong đó:
. <ĐÍCH>: thanh ghi, ô nhớ
. Rp: là thanh ghi R0 hoặc R1
Thực hiện: lấy nội dung ô nhớ trong vùng RAM nội có địa chỉ là nội dung thanh ghi Rp đặt vào
<ĐÍCH>
Ví dụ:
MOV 120,#47
MOV R1,#120
MOV A,@R1
; sau khi thực hiện xong đoạn lệnh nội dung thanh ghi A chứa giá trị 47
+ Lệnh ghi bộ nhớ:
Cú pháp: MOV @Rp,
Trong đó:
. : thanh ghi, ô nhớ hoặc #
. Rp: là thanh ghi R0 hoặc R1
Thực hiện: đặt nội dung vào ô nhớ trong vùng RAM nội có địa chỉ là nội dung thanh ghi Rp.
Ví dụ 1:
MOV R0,#100
MOV @R0, #0E3H
; sau khi thực hiện xong đoạn lệnh nội dung ô nhớ 100 chứa giá trị E3H
Ví dụ 2:
MOV A, #49
MOV R1,#127
MOV @R1, A ; (127) = 49
b. Liên quan đến vùng nhớ dữ liệu ngoài:
+ Lệnh đọc bộ nhớ:
Cú pháp: MOVX A, @DPTR
Thực hiện: lấy nội dung ô nhớ trong vùng dữ liệu ngoài có địa chỉ là nội dung thanh ghi DPTR đặt
vào thanh ghi A
Ví dụ:
MOV DPTR,#1000
MOVX A, @DPTR ; A ⇓...