Cái kho của thế giới mạng
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Tập lệnh trong Vi điều khiển 8051

Go down

Tập lệnh trong Vi điều khiển 8051 Empty Tập lệnh trong Vi điều khiển 8051

Bài gửi by Admin Mon May 16, 2011 10:57 am

Tập lệnh trong Vi điều khiển được chia làm 5 nhóm:
• Nhóm lệnh di chuyển dữ liệu
• Nhóm lệnh số học
• Nhóm lệnh logic
• Nhóm lệnh rẽ nhánh
• Nhóm lệnh xử lí bit
Trước khi xem phần dưới, các bạn cần xem lại bài trước nắm rõ phần cứng, đặc biệt là vùng nhớ Ram của vi điều khiển. Chú ý các thuật ngữ sau:
• Các byte RAM 8 bit của vi điều khiển được gọi là "ô nhớ", nếu các ô nhớ có chức năng đặc biệt thường được gọi là "thanh ghi", nếu là bit thì được gọi là "bit nhớ".
• dữ liệu của một ô nhớ là trạng thái (0 hoặc 1) cần thiết lập cho các bit của ô nhớ (8 bit)
Code:
2.2. NHÓM LỆNH DI CHUYỂN
2.2.1.  Lệnh chuyển dữ liệu từ một thanh ghi Rn vào thanh ghi A:
•    Cú pháp:  Mov A,Rn
•    Lệnh này chiếm dung lượng bộ nhớ ROM là 2 Byte
•    Thời  gian thực hiện: 1 chu kì máy
•    Công dụng: Chuyển dữ liệu của thanh  ghi Rn vào thanh ghi A, dữ liệu trên thanh ghi Rn không đổi
•    Ví dụ:  Giả sử thanh ghi R5 mang dữ liệu với giá trị là 0A5H (10100101B)
Lệnh  Mov A,R5
Sau khi lệnh được thực hiện A mang dữ liệu giá trị A5H, Rn  không đổi
giá trị thanh ghi A trước khi thực hiện lệnh không cần  quan tâm
2.2.2. Lệnh chuyển dữ liệu từ ô nhớ có địa chỉ direct vào  thanh ghi A:
•    Cú pháp: Mov A,direct
•    Lệnh này chiếm dung lượng  bộ nhớ ROM là 2 Byte
•    Thời gian thực hiện: 1 chu kì máy
•    Công  dụng: chuyển dữ liệu của ô nhớ có địa chỉ bằng direct vào thanh ghi A.
•    Ví dụ: Giả sử thanh ghi có địa chỉ 33H mang dữ liệu với giá trị là 09H  (00001001B)
Lệnh Mov A,33H
Sau khi lệnh được thực hiện A mang dữ  liệu giá trị 09H
2.2.3. Lệnh chuyển dữ liệu từ ô nhớ có địa chỉ  gián tiếp vào thanh ghi A:
•    Cú pháp: Mov A,@Ri
•    Lệnh này chiếm  dung lượng bộ nhớ ROM là 1 Byte
•    Thời gian thực hiện: 1 chu kì máy 
•    Công dụng: chuyển dữ liệu của ô nhớ 'có địa chỉ bằng giá trị của  thanh ghi Ri' vào thanh ghi A.
•    Ví dụ: Giả sử trước khi thực hiện  lệnh ô nhớ có địa chỉ 33H mang dữ liệu với giá trị là 09H (00001001B) và  thanh ghi R1 được thiết lập giá trị là 33H
Lệnh Mov A,@R1
Khi  lệnh được thực hiện A nhận dữ liệu từ ô nhớ có vị trí bằng giá trị được  thiết lập trong thanh ghi R1, tức là A nhận dữ liệu từ ô nhớ có địa chỉ  là 33H, chú ý: trước đó ô nhớ 33H mang dữ liệu là 09H.
Sau khi lệnh  được thực hiện A mang giá trị là 09H (00001001B)
2.2.4. Lệnh đưa dữ  liệu vào thanh ghi A
•    Cú pháp: Mov A,#data
•    Lệnh này chiếm  dung lượng bộ nhớ ROM là 2 Byte
•    Thời gian thực hiện: 1 chu kì máy
•    Công dụng: thiết lập dữ liệu cho thanh ghi A
•    Ví dụ: Muốn thanh  ghi A mang dữ liệu có giá trị là 56H ta thực hiện lệnh
Mov A,#56H
Sau  khi lệnh được thực hiện A mang giá trị là 56H
2.2.5. Lệnh chuyển dữ  liệu từ A vào thanh ghi Rn
•    Cú pháp: Mov Rn,A
•    Lệnh này chiếm  dung lượng bộ nhớ ROM là 1 Byte
•    Thời gian thực hiện: 1 chu kì máy 
•    Công dụng: chuyển dữ liệu từ thanh ghi A vào thanh ghi Rn (n=0-7) 
•    Ví dụ:
Mov A,#56H
Mov R1,A
Sau khi các lệnh được thực  hiện R1 mang giá trị là 56H
2.2.6. Lệnh chuyển dữ liệu từ một ô nhớ  có địa chỉ direct vào thanh ghi Rn
•    Cú pháp: Mov Rn,direct
•    Lệnh này chiếm dung lượng bộ nhớ ROM là 2 Byte
•    Thời gian thực  hiện: 1 chu kì máy
•    Công dụng: chuyển dữ liệu của ô nhớ có địa chỉ  direct vào thanh ghi Rn (n=0-7)
•    Ví dụ: giả sử ô nhớ 55H mang dữ  liệu có giá trị là A3H
Mov R4,55H
Sau khi các lệnh được thực hiện  R4 mang giá trị là A3H
2.2.7. Thiết đặt dữ liệu cho thanh ghi Rn
•    Cú pháp: Mov Rn,#data
•    Lệnh này chiếm dung lượng bộ nhớ ROM là 2  Byte
•    Thời gian thực hiện: 1 chu kì máy
•    Công dụng: thiết đặt  dữ liệu cho thanh ghi Rn
•    Ví dụ: Muốn thanh ghi Rn mang dữ liệu có  giá trị là 37H ta thực hiện lệnh
Mov A,#37H
Sau khi lệnh được  thực hiện A mang giá trị là 37H
2.2.8. Lệnh chuyển dữ liệu từ thanh  ghi A vào một ô nhớ có địa chỉ direct
•    Cú pháp: Mov direct,A
•    Lệnh này chiếm dung lượng bộ nhớ ROM là 2 Byte
•    Thời gian thực  hiện: 1 chu kì máy
•    Công dụng: chuyển dữ liệu từ thanh ghi A vào  một ô nhớ có địa chỉ direct.
•    Ví dụ:
Mov A,#77H
Mov 69H,A
Sau  khi các lệnh được thực hiện ô nhớ 69H mang giá trị là 77H (giá trị của  các bit được thiết lập trong ô nhớ 69H là 01110111B )
2.2.9. Lệnh  chuyển dữ liệu từ thanh ghi Rn vào một ô nhớ có địa chỉ direct
•    Cú  pháp: Mov direct,Rn
•    Lệnh này chiếm dung lượng bộ nhớ ROM là 2 Byte 
•    Thời gian thực hiện: 1 chu kì máy
•    Công dụng: chuyển dữ liệu  từ thanh ghi A vào một ô nhớ có địa chỉ direct
•    Ví dụ:
Mov  Rn,#78H
Mov 7AH,Rn
Sau khi các lệnh được thực hiện ô nhớ 7AH mang  giá trị là 78H
2.2.10. Lệnh chuyển dữ liệu từ một ô nhớ có địa chỉ  direct này vào một ô nhớ có địa chỉ direct khác
•    Cú pháp: Mov  direct,direct
•    Lệnh này chiếm dung lượng bộ nhớ ROM là 3 Byte
•    Thời gian thực hiện: 1 chu kì máy
•    Công dụng: chuyển dữ liệu từ ô  nhớ có địa chỉ direct này vào một ô nhớ có địa chỉ direct khác
•    Ví  dụ:giả sử thanh ghi 20H mang dữ liệu có giá trị là FFH
Mov 22H,20H
Sau  khi lệnh được thực hiện thanh ghi 22H mang giá trị là FFH
2.2.11.  Lệnh đưa dữ liệu vào ô nhớ có địa chỉ direct
•    Cú pháp: Mov  direct,#data
•    Lệnh này chiếm dung lượng bộ nhớ ROM là 3 Byte
•    Thời gian thực hiện: 2 chu kì máy
•    Công dụng: thiết lập dữ liệu cho  ô nhớ có địa chỉ direct
•    Ví dụ:
Mov 52H,#43H
Sau khi các  lệnh được thực hiện ô nhớ 52H mang giá trị là 43H
2.2.12. Lệnh  chuyển dữ liệu từ một ô nhớ có địa chỉ gián tiếp vào ô nhớ có địa chỉ  direct
•    Cú pháp: Mov direct,@Ri
•    Lệnh này chiếm dung lượng bộ  nhớ ROM là 2 Byte
•    Thời gian thực hiện: 2 chu kì máy
•    Công  dụng: Chuyển dữ liệu của ô nhớ có địa chỉ bằng giá trị của thanh ghi Ri  vào ô nhớ có địa chỉ direct
•    Ví dụ:
Mov 30H,#46H
Mov R0,#30H 
Mov 23H, @R0
Sau khi các lệnh được thực hiện ô nhớ 23H mang giá  trị là 46H
2.2.13. Lệnh chuyển dữ liệu từ thanh ghi A vào ô nhớ có  địa chỉ gián tiếp
•    Cú pháp: Mov @Ri,A
•    Lệnh này chiếm dung  lượng bộ nhớ ROM là 1 Byte
•    Thời gian thực hiện: 1 chu kì máy
•    Công dụng: Chuyển dữ liệu của thanh ghi A vào ô nhớ có địa chỉ bằng giá  trị của thanh ghi Ri
•    Ví dụ:
Mov A,#33H
Mov R1,#22H
Mov  @R0,A
Sau khi lệnh được thực hiện ô nhớ 22H mang giá trị là 33H
2.2.14.  Lệnh chuyển dữ liệu từ một ô nhớ có địa chỉ direct vào ô nhớ có địa chỉ  gián tiếp
•    Cú pháp: Mov @Ri,direct
•    Lệnh này chiếm dung lượng  bộ nhớ ROM là 2 Byte
•    Thời gian thực hiện: 2 chu kì máy
•    Công  dụng: Chuyển dữ liệu của ô nhớ có địa chỉ direct vào ô nhớ có địa chỉ  bằng giá trị của thanh ghi Ri
•    Ví dụ:
Mov 4BH,#2AH
Mov  R0,#2AH
Mov @R0,4BH
Sau khi lệnh được thực hiện ô nhớ 2AH mang giá  trị là 2AH
2.2.15. Lệnh đưa dữ liệu vào ô nhớ có địa chỉ gián tiếp
•    Cú pháp: Mov @Ri,#data
•    Lệnh này chiếm dung lượng bộ nhớ ROM là 2  Byte
•    Thời gian thực hiện: 1 chu kì máy
•    Công dụng: Thiết đặt  dữ liệu cho ô nhớ có địa chỉ bằng giá trị của thanh ghi Ri
•    Ví dụ:
Mov  R0,#3BH
Mov @R0,#27H
Sau khi lệnh được thực hiện ô nhớ 3BH mang  giá trị là 27H
2.2.16. Lệnh đưa dữ liệu vào con trỏ dữ liệu DPTR
•    Cú pháp: Mov DPTR,#data16
•    Lệnh này chiếm dung lượng bộ nhớ ROM là  3 Byte
•    Thời gian thực hiện: 2 chu kì máy
•    Công dụng: Thiết  đặt dữ liệu cho con trỏ dữ liệu với dữ liệu 16 bit, thực chất dữ liệu  được lưu ở hai thanh ghi DPL (byte thấp-địa chỉ byte 82H) và DPH (byte  cao-địa chỉ byte 83H).
•    Ví dụ: Mov DPTR,#3A5FH
Sau khi lệnh được  thực hiện DPTR mang giá trị là 3A5FH
DPL mang giá trị 5FH và DPL  mang giá trị 3AH
2.2.17. Lệnh trao đổi dữ liệu giữa ô nhớ có địa chỉ  direct với thanh ghi A
•    Cú pháp: XCH A,direct
•    Lệnh này chiếm  dung lượng bộ nhớ ROM là 2 Byte
•    Thời gian thực hiện: 1 chu kì máy 
•    Công dụng: Trao đổi dữ liệu của thanh ghi A với ô nhớ có địa chỉ  direct, tức là sau khi thực hiện lệnh ô nhớ có địa chỉ direct mang dữ  liệu của thanh ghi A trước đó và thanh ghi A mang dữ liệu của ô nhớ có  địa chỉ direct.
•    Ví dụ: Mov A,#0FAH
Mov 50H,#60H
XCH A,50H
Kết  quả :A mang giá trị là 60H
50H mang giá trị là 0FAH
2.2.18. Lệnh  trao đổi dữ liệu giữa thanh ghi Rn và thanh ghi A
•    Cú pháp: XCH  A,Rn
•    Lệnh này chiếm dung lượng bộ nhớ ROM là 1 Byte
•    Thời  gian thực hiện: 1 chu kì máy
•    Công dụng: Trao đổi dữ liệu của thanh  ghi A với thanh ghi Rn.
2.2.19. Lệnh trao đổi dữ liệu giữa thanh  ghi có địa chỉ gián tiếp và thanh ghi A
•    Cú pháp: XCH A,@Ri
•    Lệnh này chiếm dung lượng bộ nhớ ROM là 1 Byte
•    Thời gian thực  hiện: 1 chu kì máy
•    Công dụng: Trao đổi dữ liệu của thanh ghi A với  ô nhớ có địa chỉ bằng giá trị lưu giữ trong thanh ghi Ri
2.2.20.  Lệnh trao đổi dữ liệu 4 bit giữa thanh ghi có địa chỉ gián tiếp và thanh  ghi A
•    Cú pháp: XCHD A,@Ri
•    Lệnh này chiếm dung lượng bộ nhớ  ROM là 1 Byte
•    Thời gian thực hiện: 1 chu kì máy
•    Công dụng:  Trao đổi dữ liệu của 4 bit thấp ở thanh ghi A với dữ liệu của 4 bit thấp  ở ô nhớ có địa chỉ bằng giá trị lưu giữ trong thanh ghi Ri
2.2.21.  Lệnh truy xuất dữ liệu từ ROM nội
•    Cú pháp: MovC A,@A+DPTR
•    Lệnh này chiếm dung lượng bộ nhớ ROM là 1 Byte
•    Thời gian thực  hiện: 2 chu kì máy
•    Công dụng: Chuyển dữ liệu từ bộ nhớ ROM có địa  chỉ bằng giá trị của A cộng với DPTR vào thanh ghi A
Các lệnh còn  lại trong nhóm lệnh di chuyển
MovC A,@A+PC
MovC A,@i
MovX  A,@DPTR
MovX A,@Ri
MovX @DPTR,A
PUSH direct
POP direct
Admin
Admin
Admin

Tổng số bài gửi : 985
Points : 2798
Danh tiếng : 0
Join date : 13/03/2011

https://chobe.forum-viet.com

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết