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.

Vi Điều Khiển 8051

Go down

Vi Điều Khiển 8051 Empty Vi Điều Khiển 8051

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

luồng này chỉ nói về lập trình ứng dụng vdk họ 8051
chương trình viết bằng asm (học asm sẽ giúp các pác tiếp cận gần hơn với cấu trúc của chip )
em sẽ post code mạch mô phỏng để các pác tập viết và chạy những projet nhỏ giúp các pác nhanh chống hỉu dc và dùng vdk để làm những project mình mún
em hi vọng luồng này sẽ giúp ích cho các pác và ý kiến ngoài ko liên quan đến luồng các pác liên hệ YM! của em để tránh loãng luồng :PhanKey_Electric
em sẽ giải đáp (nhớ báo là thành viên của Quy Nhơn nhá)
em post lun tập lệnh của 8051 còn thiếu j pác cứ cho ý kiến em sẽ bổ sung
Code:
11. Lệnh OR dữ liệu của ô nhớ có địa chỉ direct với dữ liệu trên thanh ghi A:
•    Cú pháp: ORL 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: thực hiện phép logic OR dữ liệu ở thanh ghi A với dữ liệu của ô nhớ có địa chỉ direct, kết quả được lưu trữ ở ô nhớ có địa chỉ direct.
•    Ví dụ:
mov A,#0Fh
mov 5Fh,#0F0h
ORL 5Fh,A
Kết quả : 5Fh = #0FFh
12. Lệnh OR dữ liệu trên ô nhớ có địa chỉ direct với dữ liệu xác định:
•    Cú pháp: ORL 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: thực hiện phép logic OR dữ liệu của ô nhớ có địa chỉ direct với dữ liệu cho trước, kết quả được lưu trữ ở ô nhớ có địa chỉ direct.
•    Ví dụ:
mov 60h,#0F0h
ORL 60h,#1Fh
Kết quả : 60h = #0FFh
13. Lệnh EX-OR dữ liệu ở thanh ghi A với dữ liệu ở thanh ghi Rn:
•    Cú pháp: XRL 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: thực hiện phép logic EX-OR dữ liệu ở thanh ghi A với dữ liệu ở thanh ghi Rn, kết quả được lưu trữ ở thanh ghi A
•    Ví dụ:
mov A,#0F2h
mov R3,#0E0h
XRL A,R3
Kết quả : A = #12h
14. Lệnh EX-OR dữ liệu trên thanh ghi A với dữ liệu của ô nhớ có địa chỉ direct:
•    Cú pháp: XRL 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: thực hiện phép logic EX-OR dữ liệu ở thanh ghi A với dữ liệu của ô nhớ có địa chỉ direct, kết quả được lưu trữ ở thanh ghi A
•    Ví dụ:
mov A,#012h
mov 10h,#0E0h
XRL A,10h
Kết quả : A = #0F2h
15. Lệnh EX-OR dữ liệu trên thanh ghi A với dữ liệu của ô nhớ gián tiếp:
•    Cú pháp: XRL 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: thực hiện phép logic EX-OR dữ liệu ở thanh ghi A với dữ liệu của ô nhớ có địa chỉ bằng giá trị của thanh ghi Ri, kết quả được lưu trữ ở thanh ghi A
•    Ví dụ:
mov A,#08h
mov 10h,#0E9h
mov R0,#10h
XRL A,@R0
Kết quả : A = #0E1h
16. Lệnh EX-OR dữ liệu trên thanh ghi A với dữ liệu xác định:
•    Cú pháp: XRL 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: thực hiện phép logic EX-OR dữ liệu ở thanh ghi A với dữ liệu cho trước, kết quả được lưu trữ ở thanh ghi A
•    Ví dụ:
mov A,#12h
XRL A,#12h
Kết quả : A = #0
17. Lệnh EX-OR dữ liệu của ô nhớ có địa chỉ direct với dữ liệu trên thanh ghi A:
•    Cú pháp: XRL 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: thực hiện phép logic EX-OR dữ liệu ở thanh ghi A với dữ liệu của ô nhớ có địa chỉ direct, kết quả được lưu trữ ở ô nhớ có địa chỉ direct.
•    Ví dụ:
mov A,#0F2h
mov 50h,#0E0h
XRL 50h,A
Kết quả : 50h = #12h
18. Lệnh EX-OR dữ liệu trên ô nhớ có địa chỉ direct với dữ liệu xác định:
•    Cú pháp: XRL 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: thực hiện phép logic EX-OR dữ liệu của ô nhớ có địa chỉ direct với dữ liệu cho trước, kết quả được lưu trữ ở ô nhớ có địa chỉ direct.
•    Ví dụ:
mov 50h,#0E0h
XRL 50h,#01h
Kết quả : 50h = #0E1h
19. Lệnh bù giá trị dữ liệu trên thanh ghi A:
•    Cú pháp: CPL 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: lấy bù giá trị lưu giữ ở thanh ghi A, các bit có giá trị là 1 chuyển thành 0 và ngược lại các bit có giá trị là 0 chuyển thành 1.
•    Ví dụ: mov A,#01100111b ;(tương đương 67h)
CPL A
Kết quả : A = #10011000b (tương đương 98h)
20. Lệnh xóa dữ liệu trên thanh ghi A:
•    Cú pháp: CLR 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: tất cả các bit của thanh ghi A đều được xác lập giá trị 0 .
•    Ví dụ:
mov A,#01100111b
CLR A
Kết quả : A = #0
>>> CÒN NỮA
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

Vi Điều Khiển 8051 Empty Re: Vi Điều Khiển 8051

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

tiếp phần trước
Code:
21. Lệnh xoay trái dữ liệu trên thanh ghi A:
•    Cú pháp: RL 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: thanh ghi A gồm tám bit A7 A6 A5 A4 A3 A2 A1 A0. Khi thực hiện lệnh xoay trái RL A giá trị của các bit được chuyển trang bit ở bên trái nó, giá trị của bit A0 chuyển sang bit A1, giá trị của bit A1 chuyển sang bit A2, tương tự với các bit còn lại, và giá trị của bit A7 chuyển sang bit A0. Minh họa các bit trong thanh ghi A khi thực hiện lệnh như trong hình dưới
Các bit ở thanh ghi A    —    A7    A6    A5    A4    A3    A2    A1    A0
Quá trình xoay dữ liệu từ A0 đến A6    —        <—    <—    <—    <—    <—    <—    <—
Giá trị dữ liệu A7 chuyển sang bit A0    —    A7 ——————————————————>A0                           
•    Ví dụ:
Mov A,#01001001b
RL A
Kết quả sau khi các lệnh được thực hiện A mang giá trị là 10010010b
    Giá trị thanh ghi A
Trước khi thực hiện lệnh xoay trái    0 1 0 0 1 0 0 1
Sau khi thực hiện lệnh xoay trái    1 0 0 1 0 0 1 0
22. Lệnh xoay trái dữ liệu trên thanh ghi A cùng với cờ nhớ C:
•    Cú pháp: RLC 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: thanh ghi A gồm tám bit A7 A6 A5 A4 A3 A2 A1 A0. Khi thực hiện lệnh xoay trái A với cờ nhớ RLC A giá trị của các bit được chuyển trang bit ở bên trái nó, giá trị của bit A0 chuyển sang bit A1, giá trị của bit A1 chuyển sang bit A2, tương tự với các bit còn lại, và giá trị của bit A7 chuyển sang cờ nhớ C, giá trị ở cờ nhớ C chuyển sang bit A0
Các bit ở thanh ghi A cùng với cờ C    —    C    A7    A6    A5    A4    A3    A2    A1    A0
Quá trình xoay dữ liệu từ A0 đến A6    —        <—    <—    <—    <—    <—    <—    <—    <—
Giá trị ở C chuyển sang bit A0    —    C ———————————————————>A0                               
•    Ví dụ: giả sử cờ nhớ C đang mang giá trị 1
Mov A,#11001001b
RLC A
Kết quả sau khi các lệnh được thực hiện A mang giá trị là 10010011b và C mang giá trị 1
    Cờ nhớ C    Giá trị thanh A
Trước khi thực hiện lệnh xoay trái với C    1    1 1 0 0 1 0 0 1
Sau khi thực hiện lệnh xoay trái với C    1    1 0 0 1 0 0 1 1
23. Lệnh xoay phải dữ liệu trên thanh ghi A:
•    Cú pháp: RR 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: thanh ghi A gồm tám bit A7 A6 A5 A4 A3 A2 A1 A0. Khi thực hiện lệnh xoay phải RR A giá trị của các bit được chuyển trang bit ở bên phải nó, giá trị của bit A7 chuyển sang bit A6, giá trị của bit A6 chuyển sang bit A5, tương tự với các bit còn lại, và giá trị của bit A0 chuyển sang bit A7. Minh họa các bit trong thanh ghi A khi thực hiện lệnh như trong hình dưới
Các bit ở thanh ghi A    —    A7    A6    A5    A4    A3    A2    A1    A0
Quá trình xoay dữ liệu từ A7 đến A1    —    —>    —>    —>    —>    —>    —>    —>   
Giá trị dữ liệu A0 chuyển sang bit A7    —    A7 <——————————————————A0                           
•    Ví dụ:
Mov A,#01001001b
RL A
Kết quả sau khi các lệnh được thực hiện A mang giá trị là 10100100b
    Giá trị thanh A
Trước khi thực hiện lệnh xoay phải    0 1 0 0 1 0 0 1
Sau khi thực hiện lệnh xoay phải    1 0 1 0 0 1 0 0
24. Lệnh xoay phải dữ liệu trên thanh ghi A cùng với cờ nhớ C:
•    Cú pháp: RRC 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: thanh ghi A gồm tám bit A7 A6 A5 A4 A3 A2 A1 A0. Khi thực hiện lệnh xoay phải A với cờ nhớ -RRC A -giá trị của các bit được chuyển trang bit ở bên phải nó, giá trị của bit A7 chuyển sang bit A6, giá trị của bit A6 chuyển sang bit A5, tương tự với các bit còn lại, và giá trị của bit A0 chuyển sang cờ nhớ C, giá trị ở cờ nhớ C chuyển sang bit A7
Các bit ở thanh ghi A cùng với cờ C    —    C    A7    A6    A5    A4    A3    A2    A1    A0
Quá trình xoay dữ liệu từ C đến A1    —    —>    —>    —>    —>    —>    —>    —>    —>   
Giá trị ở A0 chuyển sang bit C    —    C <———————————————————A0                               
•    Ví dụ: giả sử cờ nhớ C đang mang giá trị 1
Mov A,#11001001b
RLC A
Kết quả sau khi các lệnh được thực hiện A mang giá trị là 11100100b và C mang giá trị 1
    Cờ nhớ C    Giá trị thanh A
Trước khi thực hiện lệnh xoay trái với C    1    1 1 0 0 1 0 0 1
Sau khi thực hiện lệnh xoay trái với C    1    1 1 1 0 0 1 0 0
25. Lệnh xoay 4 bit trên thanh ghi A:
•    Cú pháp: SWAP 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: hoán chuyển dữ liệu ở 4 bit thấp lên 4 bit cao và 4 bit cao xuống 4 bit thấp
Các bit ở thanh ghi A    —    A7    A6    A5    A4    A3    A2    A1    A0
Dữ liệu trước khi thực hiên lệnh    —    X7    X6    X5    X4    X3    X2    X1    X0
Dữ liệu sau khi thực hiên lệnh    —    X3    X2    X1    X0    X7    X6    X5    X4
•    Ví dụ:
mov A,#0E7h
SWAP A
Kết quả : A = # 7Eh

2.5.NHÓM LỆNH RẼ NHÁNH Trang 5

Phần này liên quan đến các câu lệnh được lưu giữ trên ROM, vì vậy cần xem lại phần bộ nhớ ROM trước khi xem phần này.
Phần phụ chú:
Nhãn: Kí hiệu: rel
Nhãn là một chuỗi kí tự do người dùng tự đặt dùng để đánh dấu các đoạn chương trình, nhãn này biểu thị địa chỉ của lệnh khi được lưu trên ROM.
Nhãn chỉ được bắt đầu bằng một kí tự chữ hoặc dấu "_" ,không được bắt đầu bằng số ,không có khoảng trắng và kết thúc bằng dấu hai chấm ":"
Trong chương trình nhãn không được đặt trùng tên với nhau, và không được trùng với các từ khóa mà chương trình đã sử dụng.
Ví dụ : Các nhãn đúng X1: ;S_2: ;_5:s10: ;...
Các nhãn sai 1X: ; S_2 ;S 5: ;DW: ,LPT :...
Chương trình con: là những đoạn chương trình thực hiện một số lệnh nào đó và được viết ngoài chương trình chính, các chương trình con này được đặt tên bằng một nhãn và kết thúc bằng lệnh RET, chương trình con có thể gọi một chương trình con khác. Chương trình con được chương trình chính sử dụng khi cần thiết bằng các lệnh gọi chương trình con; khi có lệnh gọi chương trình con, Vi điều khiển chuyển về thực hiện các đoạn chương trình của chương trình con, sau khi thực hiện chương trình con Vi điều khiển tiếp tục trở về thực hiện các câu lệnh trong chương trình chính.
Chương trình con giúp cho chương trình mạch lạc, dễ hiểu hơn, nếu trong chương trình chính có các đoạn chương trình được lặp đi lặp lại nhiều lần thì các đoạn chương trình đó thường được viết thành một chương trình con và truy xuất bằng một câu lệnh gọi chương trình con. Việc sử dụng chương trình con giúp cho việc tìm lỗi và chỉnh sửa chương trình dễ hơn, nếu chương trình chính sử dụng nhiều lần chương trình con, khi cần sửa đổi chỉ cần thay đổi các câu lệnh trong chương trình con.
Chương trình con bắt đầu bằng một nhãn và kết thúc bằng lệnh Reti, chương trình con có thể đặt ở đầu hoặc cuối chương trình.
2.5.1. Lệnh gọi chương trình con dùng địa chỉ tuyệt đối
•    Cú pháp: ACall addr11
•    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: Khi lệnh được thực hiện, Vi điều khiển chuyển về thực hiện các câu lệnh của chương trình con bắt đầu từ địa chỉ addr11 trên Rom, địa chỉ addr11 có thể thay bằng nhãn bắt đầu của một chương trình con. Câu lệnh được thực hiện khi địa chỉ addr11 cách lệnh gọi không quá 2 KByte .
•    Ví dụ: ACall 45A6H
2.5.2. Lệnh gọi chương trình con dùng địa chỉ tuyệt đối
•    Cú pháp: ACall addr16
•    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: Khi lệnh được thực hiện, Vi điều khiển chuyển về thực hiện các câu lệnh của chương trình con bắt đầu từ địa chỉ addr16 trên Rom, địa chỉ addr16 có thay bằng nhãn bắt đầu chương trình con. Câu lệnh có thể gọi chương trình con ở bất kì vị trí nào trên Rom vì khoảng cách từ lệnh gọi đến chương trình con là 64 KByte.
2.5.3. Lệnh kết thúc chương trình con
•    Cú pháp: Ret
•    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: Lệnh này dùng kết thúc chương trình con, khi gặp lệnh này Vi điều khiển quay về thực hiện lệnh ở chương trình chính.
2.5.4. Lệnh kết thúc chương trình con phục vụ ngắt
•    Cú pháp: Reti
•    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: Lệnh này dùng kết thúc chương trình con ngắt, khi gặp lệnh này Vi điều khiển quay về thực hiện lệnh ở chương trình chính.
2.5.5. Lệnh nhảy ngắn đến địa chỉ tuyệt đối
•    Cú pháp: AJMP addr11
•    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: Khi lệnh được thực hiện, Vi điều khiển chuyển về thực hiện các câu lệnh của chương trình bắt đầu tại địa chỉ addr11 trên Rom, địa chỉ addr11 có thể thay bằng nhãn . Câu lệnh chỉ được thực hiện khi vị trí lưu chương trình cần thực hiện cách lệnh gọi không quá 2 KByte
2.5.6. Lệnh nhảy dài đến địa chỉ tuyệt đối
•    Cú pháp: LJMP addr16
•    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: Khi lệnh được thực hiện, Vi điều khiển chuyển về thực hiện các câu lệnh của chương trình bắt đầu tại địa chỉ addr11 trên Rom, địa chỉ addr11 có thể thay bằng nhãn . Câu lệnh có thể gọi chương trình ở bất kì vị trí nào trên Rom vì khoảng cách từ lệnh gọi đến chương trình con là 64 KByte
2.5.7. Lệnh nhảy tương đối
•    Cú pháp: SJMP rel
•    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: Khi lệnh được thực hiện, Vi điều khiển chuyển đến thực hiện các câu lệnh của chương trình được đánh dấu bằng nhãn. Câu lệnh chỉ được thực hiện địa chỉ của nhãn cách lệnh gọi không quá 128 Byte.(cả tới hoặc lùi )
2.5.8. Lệnh nhảy gián tiếp
•    Cú pháp: JMP @A+DPTR
•    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: Khi lệnh được thực hiện, Vi điều khiển chuyển đến thực hiện các câu lệnh của chương trình có địa chỉ trên ROM bằng giá trị của A cộng với giá trị lưu giữ trên DPTR
2.5.9. Lệnh nhảy thuận với cờ Zero
•    Cú pháp: JZ rel
•    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:
Nếu cờ Zero có giá trị 1(tức thanh ghi A có giá trị 0), Vi điều khiển sẽ nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt
Nếu cờ Zero có giá trị 0(tức thanh ghi A có giá trị khác 0), Vi điều khiển thực hiện lệnh kế tiếp (không thực hiện lệnh nhảy)
2.5.10. Lệnh nhảy nghịch với cờ Zero
•    Cú pháp: JNZ rel
•    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:
Nếu cờ Zero có giá trị 0(tức thanh ghi A có giá trị khác 0), Vi điều khiển sẽ nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt
Nếu cờ Zero có giá trị 1(tức thanh ghi A có giá trị 0), Vi điều khiển thực hiện lệnh kế tiếp (không thực hiện lệnh nhảy)
2.5.11. Lệnh nhảy thuận với cờ C
•    Cú pháp: JC rel
•    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:
Nếu cờ C có giá trị 1, Vi điều khiển sẽ nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt
Nếu cờ C có giá trị 0, Vi điều khiển thực hiện lệnh kế tiếp (không thực hiện lệnh nhảy)
2.5.12. Lệnh nhảy nghịch với cờ Zero
•    Cú pháp: JNC rel
•    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:
Nếu cờ C có giá trị 0, Vi điều khiển sẽ nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt
Nếu cờ C có giá trị 1, Vi điều khiển thực hiện lệnh kế tiếp (không thực hiện lệnh nhảy)
2.5.13. Lệnh nhảy thuận với giá trị của bit nhớ
•    Cú pháp: JB bit,rel
•    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:
Nếu bit nhớ có giá trị 1, Vi điều khiển sẽ nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt
Nếu bit nhớ có giá trị 0, Vi điều khiển thực hiện lệnh kế tiếp (không thực hiện lệnh nhảy)
2.5.14. Lệnh nhảy nghịch với giá trị của bit nhớ
•    Cú pháp: JNC bit,rel
•    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:
Nếu bit nhớ có giá trị 0, Vi điều khiển sẽ nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt
Nếu bit nhớ có giá trị 1, Vi điều khiển thực hiện lệnh kế tiếp (không thực hiện lệnh nhảy)
2.5.15. Lệnh nhảy thuận với giá trị của bit nhớ và xóa bit
•    Cú pháp: JBC bit,rel
•    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:
Nếu bit nhớ có giá trị 1, Vi điều khiển sẽ nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt, đồng thời xóa giá trị chứa trong bit nhớ đó tức là đưa bit nhớ đó về giá trị 0
Nếu bit nhớ có giá trị 0, Vi điều khiển thực hiện lệnh kế tiếp (không thực hiện lệnh nhảy)
2.5.16. Lệnh nhảy có điều kiện(so sánh giá trị của thanh ghi A và Rn)
•    Cú pháp: CJNE A,direct,rel
•    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:
Vi điều khiển nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt nếu giá trị của thanh ghi A khác giá trị của ô nhớ có địa chỉ direct, nếu bằng nhau Vi điều khiển không nhảy và thực hiện lệnh kế
Ảnh hưởng của lệnh đến cờ nhớ C:
Nếu giá trị của thanh ghi A ≥ giá trị của ô nhớ có địa chỉ direct thì bit C có giá trị 0
Nếu giá trị của thanh ghi A < giá trị của ô nhớ có địa chỉ direct thì bit C có giá trị 1
2.5.17. Lệnh nhảy có điều kiện(so sánh giá trị của thanh ghi A và dữ liệu cho trước)
•    Cú pháp: CJNE A,#data,rel
•    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:
Vi điều khiển sẽ nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt, nếu giá trị của thanh ghi A khác giá trị dữ liệu cho trước, nếu bằng nhau Vi điều khiển không nhảy và thực hiện lệnh kế
Ảnh hưởng của lệnh đến cờ nhớ C:
Nếu giá trị của thanh ghi A ≥ giá trị dữ liệu cho trước thì bit C có giá trị 0
Nếu giá trị của thanh ghi A < giá trị dữ liệu cho trước thì bit C có giá trị 1
2.5.18. Lệnh nhảy có điều kiện(so sánh giá trị của thanh ghi Rn và dữ liệu cho trước)
•    Cú pháp: CJNE Rn,#data,rel
•    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:
Vi điều khiển sẽ nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt nếu giá trị của thanh ghi Rn khác giá trị dữ liệu cho trước, nếu bằng nhau Vi điều khiển không nhảy và thực hiện lệnh kế.
Ảnh hưởng của lệnh đến cờ nhớ C:
Nếu giá trị của thanh ghi A ≥ giá trị dữ liệu cho trước thì bit C có giá trị 0
Nếu giá trị của thanh ghi A < giá trị dữ liệu cho trước thì bit C có giá trị 1
2.5.18. Lệnh nhảy có điều kiện(so sánh giá trị của ô nhớ có địa chỉ gián tiếp và dữ liệu cho trước)
•    Cú pháp: CJNE @Ri,#data,rel
•    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:
Vi điều khiển nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt nếu giá trị của ô nhớ có địa chỉ bằng giá trị của Ri khác giá trị dữ liệu cho trước, nếu bằng nhau Vi điều khiển không nhảy và thực hiện lệnh kế
Ảnh hưởng của lệnh đến cờ nhớ C:
Nếu giá trị của ô nhớ có địa chỉ gián tiếp ≥ giá trị dữ liệu cho trước thì bit C có giá trị 0
Nếu giá trị của ô nhớ có địa chỉ gián tiếp < giá trị dữ liệu cho trước thì bit C có giá trị 1
2.5.19. Lệnh nhảy có điều kiện kết hợp với lệnh giảm trên thanh ghi Rn
•    Cú pháp: DJNZ Rn,rel
•    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:
Giảm giá trị của thanh ghi Rn xuống 1 đơn vị, và
-Nếu giá trị trong thanh ghi Rn khác 0, Vi điều khiển nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt.
-Nếu giá trị trong thanh ghi Rn bằng 0, Vi điều khiển thực hiện lệnh kế tiếp
2.5.20. Lệnh nhảy có điều kiện kết hợp với lệnh giảm trên ô nhớ có địa chỉ direct
•    Cú pháp: DJNZ direct,rel
•    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:
Giảm giá trị của ô nhớ có địa chỉ direct xuống 1 đơn vị
Nếu giá trị trong ô nhớ có địa chỉ direct khác 0, Vi điều khiển nhảy đến thực hiện chương trình tại địa chỉ mà nhãn được đặt.
Nếu giá trị trong ô nhớ có địa chỉ direct bằng 0, Vi điều khiển thực hiện lệnh kế tiếp
2.5.21. Lệnh delay 1 chu kì máy
•    Cú pháp: NOP
•    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: delay trong 1 chu kì máy
2.6.NHÓM LỆNH XỬ LÍ BIT Trang 6
Qui ước: trong câu lệnh "bit" đại diện cho một địa chỉ của bit nhớ
2.6.1. Lệnh xoá cờ nhớ C
•    Cú pháp: CLR C
•    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: Xóa cờ nhớ C - tức là đưa giá trị của cờ nhớ C về 0
2.6.2. Lệnh xoá bit
•    Cú pháp: CLR bit
•    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: Xóa giá trị của bit nhớ có địa chỉ xác định - tức là đưa giá trị bit đó về 0
2.6.3. Lệnh thiết đặt cờ nhớ C
•    Cú pháp: SetB C
•    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: thiết đặt cờ nhớ C - tức là đưa giá trị của cờ nhớ C lên 1
2.6.4. Lệnh thiết đặt giá trị cho bit nhớ
•    Cú pháp: SetB bit
•    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 giá trị bit nhớ có địa chỉ xác định - tức là đưa giá trị bit đó lên 1
2.6.5. Lệnh bù cờ nhớ C
•    Cú pháp: CPL C
•    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: đổi giá trị của cờ nhớ C, nếu trước đó C có giá trị 0 chuyển thành 1, và ngược lại nếu trước đó C có giá trị 1 chuyển thành 0
2.6.6. Lệnh bù bit
•    Cú pháp: CPL bit
•    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: đổi giá trị của bit có địa chỉ xác định, nếu trước đó bit đó có giá trị 0 chuyển thành 1, và ngược lại nếu trước đó bit đó có giá trị 1 chuyển thành 0
2.6.7. Lệnh And cờ nhớ C với bit
•    Cú pháp: ANL C,bit
•    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: Thực hiện phép And cờ nhớ C và bit có địa chỉ xác định, kết quả lưu ở C
2.6.8. Lệnh And cờ nhớ C với bit đã được lấy bù
•    Cú pháp: ANL C,/bit
•    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: Thực hiện phép And cờ nhớ C và bit có địa chỉ xác định đã được lấy bù, kết quả lưu ở C
2.6.9. Lệnh OR cờ nhớ C với bit
•    Cú pháp: ORL C,bit
•    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: Thực hiện phép And cờ nhớ C và bit có địa chỉ xác định, kết quả lưu ở C
2.6.10. Lệnh OR cờ nhớ C với bit đã được lấy bù
•    Cú pháp: ORL C,/bit
•    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: Thực hiện phép And cờ nhớ C và bit có địa chỉ xác định đã được lấy bù, kết quả lưu ở C
2.6.11. Lệnh chuyển giá trị bit có địa chỉ xác định vào cờ nhớ C
•    Cú pháp: Mov C,bit
•    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: Thực hiện chuyển giá trị của bit có địa chỉ xác định vào cờ nhớ C
2.6.12. Lệnh chuyển giá trị cờ nhớ C vào bit có địa chỉ xác định
•    Cú pháp: Mov bit,C
•    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: Thực hiện chuyển giá trị của cờ nhớ C vào bit có địa chỉ xác định
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

Vi Điều Khiển 8051 Empty Re: Vi Điều Khiển 8051

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

các lệnh khác trong lập trình vdk 8051
Code:
Cờ nhớ C:

 C=1 nếu phép toán cộng xảy ra tràn hoặc phép trừ có  mượn
 C=0 nếu phép toán cộng không tràn hoặc phép trừ không có mượn. 
Phép cộng xảy ra tràn là phép cộng mà kết quả lớn hơn 255 (hay FFH  hay 11111111b), lúc này C=1
Ví dụ: phép cộng không tràn
Số cộng            38H    56    0 0 1 1 1 0 0 0 b
Số cộng          +3AH    58    0 0 1 1 1 0 1 0 b
Kết  quả            72H    114  0 1 1 1 0 0 1 0 b
Cờ nhớ C    0        0
Phép cộng  tràn
Số cộng            6CH    108    0 1 1 0 1 1 0 0 b
Số cộng          +9FH    159    1 0  0 1 1 1 1 1 b
Kết quả          10BH    267    1 0 0 0 0 1 0 1 1b
Cờ nhớ C            1        1
Phần được tô màu xanh là 8 bit của thanh ghi A sau khi kết quả  được thực hiện, phần màu đỏ trong kết quả là giá trị bị tràn, giá trị  này không lưu ở thanh ghi A mà lưu ở thanh ghi PSW, tại cờ C
Số trừ          9FH    159    1 0 0 1 1 1 1 1 b
Số bị trừ      -6CH    108    0 1 1 0 1 1 0 0 b
Kết  quả        33H    51    0 0 1 1 0 0 1 1 b
Cờ nhớ C        0        0

Số trừ          6CH    108    0 1 1 0 1 1 0 0 b
Số bị trừ      -9FH    159    1 0 0 1 1 1 1 1 b
Kết  quả        CDH    -51    1 1 0 0 1 1 0 1 b
Cờ nhớ C          1        1    -phép trừ trên có  số muợn

2.3.1. Lệnh cộng dữ liệu trên thanh ghi A với dữ liệu  trên thanh ghi Rn:
•    Cú pháp: Add 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: Cộng giá trị dữ liệu trên thanh ghi A với giá trị dữ liệu  trên thanh ghi Rn, sau khi thực hiện lệnh kết quả được lưu ở thanh ghi  A. Lệnh này có ảnh hưởng đến thanh thanh trạng thái PSW
•    Ví dụ:
Mov  A,#20H
Mov R1,#08H
Add A,R1
Kết quả : A có giá trị là 28H
R1  vẫn giữ nguyên giá trị là 08H
Cờ C = 0
Vidu2:
Mov A,#0E9H
Mov  R6,#0BAH
Add A,R6
Kết quả : A = #0A3h
R6 = #0BAh
Cờ C = 1
2.3.2.  Lệnh cộng dữ liệu trên thanh ghi A với dữ liệu ở ô nhớ có địa chỉ  direct:
•    Cú pháp: Add 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: Cộng giá trị dữ liệu trên thanh ghi A với giá trị dữ liệu trên ô  nhớ có địa chỉ direct, sau khi thực hiện lệnh kết quả được lưu ở thanh  ghi A. Lệnh này có ảnh hưởng đến thanh thanh trạng thái PSW
•    Ví dụ: 
Mov 50h,#20H
Mov A,#0E8H
Add A,50H
Kết quả : A = #08H
50H  = #20H
C = 1
2.3.3. Lệnh cộng dữ liệu trên thanh ghi A với dữ  liệu của ô nhớ có địa chỉ gián tiếp:
•    Cú pháp: Add 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: Cộng giá trị dữ liệu trên thanh ghi A với  giá trị dữ liệu của ô nhớ có địa chỉ bằng giá trị của thanh ghi Ri, sau  khi thực hiện lệnh kết quả được lưu ở thanh ghi A. Lệnh này có ảnh hưởng  đến thanh thanh trạng thái PSW
•    Ví dụ:
AC = 1 ;cờ C đang mang  giá trị 1
Mov 50H,#60H
Mov R2,#50H
Mov A,#01H
Add A,@R2
Kết  quả : A = #61H
R2 = #50H
C = 0 ;cờ C mang giá trị 0
2.3.4.  Lệnh cộng dữ liệu trên thanh ghi A với dữ liệu xác định:
•    Cú pháp:  Add 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: Cộng giá trị dữ liệu  trên thanh ghi A với một giá trị xác định, sau khi thực hiện lệnh kết  quả được lưu ở thanh ghi A. Lệnh này có ảnh hưởng đến thanh thanh trạng  thái PSW
•    Ví dụ:
Mov A,#05h
Add A,#06h
Kết quả : A =  #0Bh
C = 0
2.3.5. Lệnh cộng dữ liệu trên thanh ghi A với dữ liệu  trên thanh ghi Rn có số nhớ ở cờ C:
•    Cú pháp: AddC 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: Cộng giá trị dữ liệu trên thanh ghi A với  giá trị dữ liệu trên thanh ghi Rn và cộng thêm giá trị của số nhớ trên  cờ C, sau khi thực hiện lệnh kết quả được lưu ở thanh ghi A. Lệnh này có  ảnh hưởng đến thanh thanh trạng thái PSW
•    Ví dụ: C = 1
Mov  A,#08h
Mov R1,#10h
Addc A,R1
Kết quả : A = #19h ;cộng cả cờ C 
R1 = #10h
C =0
2.3.6. Lệnh cộng dữ liệu trên thanh ghi A  với dữ liệu ở ô nhớ có địa chỉ direct và giá trị số nhớ ở cờ C:
•    Cú  pháp: AddC 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: Cộng giá trị  dữ liệu trên thanh ghi A với giá trị dữ liệu của ô nhớ có địa chỉ direct  và cộng thêm giá trị của số nhớ trên cờ C , sau khi thực hiện lệnh kết  quả được lưu ở thanh ghi A. Lệnh này có ảnh hưởng đến thanh thanh trạng  thái PSW
•    Ví dụ: C = 0
Mov A,#0A5h
Mov 10h,#96h
Addc  A,10h
Kết quả : A = #3Bh
10h = #96h
C =1
2.3.7. Lệnh  cộng dữ liệu trên thanh ghi A với dữ liệu của ô nhớ có địa chỉ gián tiếp  và số nhớ ở cờ C:
•    Cú pháp: AddC 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: Cộng giá trị dữ liệu trên thanh ghi A với giá trị dữ liệu  của ô nhớ có địa chỉ bằng giá trị của thanh ghi Ri và cộng thêm giá trị  của số nhớ trên cờ C, sau khi thực hiện lệnh kết quả được lưu ở thanh  ghi A. Lệnh này có ảnh hưởng đến thanh thanh trạng thái PSW
•    Ví dụ: 
C = 1
Mov A,#05h
Mov 50h,#10h
Mov R2,#50h
Addc  a,@R2
Kết quả : A = #16h
C = 0
2.3.8. Lệnh cộng dữ liệu trên  thanh ghi A với dữ liệu xác định và số nhớ ở cờ C:
•    Cú pháp: AddC  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: Cộng giá trị dữ liệu trên  thanh ghi A với giá trị xác định và cộng thêm giá trị của số nhớ trên cờ  C, sau khi thực hiện lệnh kết quả được lưu ở thanh ghi A. Lệnh này có  ảnh hưởng đến thanh thanh trạng thái PSW
•    Ví dụ:
C = 1
Mov  A,#05h
Addc A,#16h
Kết quả : A = #1Ch
C = 0
2.3.9. Lệnh  trừ dữ liệu trên thanh ghi A với dữ liệu trên thanh ghi Rn và số nhớ ở  cờ C:
•    Cú pháp: SubB 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: Trừ  giá trị dữ liệu trên thanh ghi A với giá trị dữ liệu trên thanh ghi Rn  và trừ cho giá trị nhớ trên cờ C, sau khi thực hiện lệnh kết quả được  lưu ở thanh ghi A. Lệnh này có ảnh hưởng đến thanh thanh trạng thái PSW
•    Ví dụ: C = 1
Mov A,#0E5h
Mov R3,#9Fh
Subb A,R3
kết quả :  A = 45h
C = 0
2.3.10. Lệnh trừ dữ liệu trên thanh ghi A với dữ  liệu ở ô nhớ có địa chỉ direct và số nhớ ở cờ C:
•    Cú pháp: SubB  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: Trừ giá trị dữ liệu trên  thanh ghi A với giá trị dữ liệu của ô nhớ có địa chỉ direct và trừ cho  giá trị nhớ trên cờ C , sau khi thực hiện lệnh kết quả được lưu ở thanh  ghi A. Lệnh này có ảnh hưởng đến thanh thanh trạng thái PSW
•    Ví dụ: 
C = 0
Mov A,#0E5h
Mov 05h,#9Fh
Subb A,05h
kết quả :  A = 46h
C = 0
2.3.11. Lệnh trừ dữ liệu trên thanh ghi A với dữ  liệu của ô nhớ có địa chỉ gián tiếp và số nhớ ở cờ C:
•    Cú pháp: SubB  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: Trừ giá trị dữ liệu trên  thanh ghi A với giá trị dữ liệu của ô nhớ có địa chỉ bằng giá trị của  thanh ghi Ri và trừ cho giá trị nhớ trên cờ C, sau khi thực hiện lệnh  kết quả được lưu ở thanh ghi A. Lệnh này có ảnh hưởng đến thanh thanh  trạng thái PSW
•    Ví dụ:
C = 1
Mov A,#0E5h
Mov 4Fh,#50h
Mov  R3,#4Fh
Subb A,@R3
kết quả : A = 94h
C = 0
2.3.12. Lệnh  trừ dữ liệu trên thanh ghi A với dữ liệu xác định và số nhớ ở cờ C:
•    Cú pháp: SubB 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: Trừ giá  trị dữ liệu trên thanh ghi A với giá trị xác định và trừ thêm giá trị  nhớ trên cờ C, sau khi thực hiện lệnh kết quả được lưu ở thanh ghi A.  Lệnh này có ảnh hưởng đến thanh thanh trạng thái PSW
•    Ví dụ:
C =  0
Mov A,#05h
Subb A,#4Fh
kết quả : A = 0B6h
C = 1
2.3.13.Lệnh  tăng giá trị dữ liệu trên thanh ghi A lên 1 đơn vị:
•    Cú pháp: Inc 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: Tăng giá trị dữ liệu lưu giữ  trên thanh ghi A lên 1 đơn vị, không ảnh hưởng đến các cờ nhớ trên PSW
Ví  dụ: Mov A,#05h
Inc A
Kết quả : A = #06h
2.3.14.Lệnh tăng  giá trị dữ liệu trên thanh ghi Rn lên 1 đơn vị:
•    Cú pháp: Inc 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: Tăng giá trị dữ liệu lưu giữ trên  thanh ghi Rn lên 1 đơn vị, không ảnh hưởng đến các cờ nhớ trên PSW
•    Ví dụ:
Mov R7,#0Fh
Inc R7
Kết quả : R7 = #10h
2.3.15.Lệnh  tăng giá trị dữ liệu ở ô nhớ có địa chỉ direct lên 1 đơn vị:
•    Cú  pháp: Inc 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: Tăng giá trị dữ liệu  ở một ô nhớ có địa chỉ direct lên 1 đơn vị, không ảnh hưởng đến các cờ  nhớ trên PSW
•    Ví dụ:
Mov 50h,#0FFh
Inc 50h
Kết quả :  50h = #00
2.3.16.Lệnh tăng giá trị dữ liệu ở ô nhớ có địa chỉ gián  tiếp lên 1 đơn vị:
•    Cú pháp: Inc @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: Tăng giá trị dữ liệu ở ô nhớ có địa chỉ bằng giá trị dữ liệu trên  Ri lên 1 đơn vị, không ảnh hưởng đến các cờ nhớ trên PSW
•    Ví dụ:
Mov  0Fh,#05h
Mov R0,#0Fh
Inc @R0
Kết quả : R0 = #06h
0Fh =  #05h
2.3.17.Lệnh tăng giá trị của con trỏ dữ liệu DPTR lên 1 đơn vị:
•    Cú pháp: Inc 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: Tăng giá trị dữ liệu  của thanh ghi con trỏ dữ liệu DPTR lên 1 đơn vị, không ảnh hưởng đến  các cờ nhớ trên PSW
•    Ví dụ:
Mov DPTR,#5Fh
Inc DPTR
Kết  quả : DPTR = #060h
2.3.18.Lệnh giảm giá trị dữ liệu trên thanh ghi A  xuống 1 đơn vị:
•    Cú pháp: Dec 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: Giảm giá trị dữ liệu lưu giữ trên thanh ghi A xuống 1 đơn vị,  không ảnh hưởng đến các cờ nhớ trên PSW
•    Ví dụ:
Mov A,#05h
Dec  A
Kết quả : A = #04h
2.3.19.Lệnh giảm giá trị dữ liệu trên  thanh ghi Rn xuống 1 đơn vị:
•    Cú pháp: Dec 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: Giảm giá trị dữ liệu lưu giữ trên thanh ghi Rn xuống 1 đơn  vị, không ảnh hưởng đến các cờ nhớ trên PSW
•    Ví dụ:
Mov R6,#0Fh 
Dec R6
Kết quả : R6 = #0Eh
2.3.20.Lệnh giảm giá trị dữ liệu  ở ô nhớ có địa chỉ direct xuống 1 đơn vị:
•    Cú pháp: Dec direct
•    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: Giảm giá trị dữ liệu ở ô nhớ có địa  chỉ direct xuống 1 đơn vị, không ảnh hưởng đến các cờ nhớ trên PSW
•    Ví dụ:
Mov 7Fh,#0
Dec 7Fh
Kết quả : 7Fh = #0FFh
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

Vi Điều Khiển 8051 Empty Re: Vi Điều Khiển 8051

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

Tiếp phần trước
Code:
2.3.21.Lệnh giảm giá trị dữ liệu ở ô nhớ có địa chỉ gián tiếp xuống 1  đơn vị:
•   Cú pháp: Dec @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: Giảm  giá trị dữ liệu ở ô nhớ có địa chỉ bằng giá trị dữ liệu trên Ri xuống1  đơn vị, không ảnh hưởng đến các cờ nhớ trên PSW
•   Ví dụ:
Mov  60h,#05h
Mov R1,#60h
Dec @R1
Kết quả : R1 = #04h
60h =  #05h
2.3.22.Lệnh nhân thanh ghi A với thanh ghi B:
•   Cú pháp: Mul  AB
•   Lệnh này chiếm dung lượng bộ nhớ ROM là 1 Byte
•   Thời gian  thực hiện: 4 chu kì máy
•   Công dụng: Nhân hai dữ liệu là số nguyên  không dấu ở thanh ghi A với thanh ghi B, kết quả là một dữ liệu 16 bit.  Byte thấp của kết quả lưu ở thanh ghi A và byte cao của kết quả lưu ở  thanh ghi B. Nếu tích số lớn hơn 255(0FFH), cờ tràn OV ở thanh trạng  thái PSW được thiết lập lên 1, ngược lại nếu tích số nhỏ hơn  255(0FFH),cờ tràn OV được thiết lấp về 0. Cờ nhớ C luôn ở giá trị 0.
•    Ví dụ: Mov A,#0B9h
Mov B,#F7h
Mul AB
Kết quả : A = #7Fh
B  = #0B2h
2.3.23.Lệnh chia thanh ghi A với thanh ghi B:
•   Cú pháp:  Div AB
•   Lệnh này chiếm dung lượng bộ nhớ ROM là 1 Byte
•   Thời  gian thực hiện: 4 chu kì máy
•   Công dụng: Chia hai dữ liệu là số  nguyên không dấu ở thanh ghi A với thanh ghi B, dữ liệu ở thanh ghi A là  số chia còn ở thanh ghi B là số bị chia, kết quả là một dữ liệu 8 bit  được lưu ở thanh ghi A.số dư lưu trữ trong thanh ghi B Cờ nhớ C luôn ở  giá trị 0.
Cờ tràn OV được thiết lập giá trị 1 khi thanh ghi B mang  giá trị là 00H-phép chia không thể thực hiện.
•   Ví dụ: Mov A,#50h
Mov  B,#10h
DIV AB
Kết quả : A = #5h
B = #0h
2.3.24.Lệnh  hiệu chỉnh thập phân nội dung của thanh ghi A đối với phép cộng:
•   Cú  pháp: DA A
•   Lệnh này chiếm dung lượng bộ nhớ ROM là 1 Byte
•    Thời gian thực hiện: 4 chu kì máy
•   Công dụng: hiệu chỉnh dữ liệu là  giá trị lưu giữ ở thanh ghi A từ số Hex (số nhị phân) thành số BCD (số  thập phân viết dưới dạng nhị phân). Lí do có lệnh hiệu chỉnh này vì khi  cộng hai giá trị là số BCD bằng các lệnh cộng, vi điều khiển chỉ hiểu  hai số cộng là số nhị phân bình thường, kết quả sau lệnh cộng là một số  nhị phân bình thường, không phải là một số BCD, vì vậy kết quả cần được  hiệu chỉnh để dữ liệu cuối là một số BCD. Khi thực hiện lệnh, cờ nhớ C  được xác lập lên 1 nếu phép cộng có kết quả vượt qua 99(số BCD). Kết quả  cuối cùng, số BCD có hàng đơn vị nằm ở 4 bit thấp trên thanh ghi A,  hàng chục ở 4 bit cao của thanh ghi A, hàng trăm là 1 nếu cờ C mang giá  trị 1, là 0 nếu cờ C mang giá trị 0.
•   Ví dụ 1: Mov A,#10h
DA A
Kết  quả : A = #10h
•   
Ví dụ 2: Mov A,#0Eh
DA A
Kết quả : A =  #14h
2.4.NHÓM LỆNH LOGIC Trang 4
1. Lệnh And dữ liệu ở thanh  ghi A với dữ liệu ở thanh ghi Rn:
•   Cú pháp: ANL 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: thực hiện phép logic AND dữ liệu ở thanh ghi A  với dữ liệu ở thanh ghi Rn, kết quả được lưu trữ ở thanh ghi A
•   Ví  dụ:
mov A,#0Fh
mov R1,#0F0h
ANL A,R1
Kết quả : A = #0H
2.  Lệnh And dữ liệu trên thanh ghi A với dữ liệu của ô nhớ có địa chỉ  direct:
•   Cú pháp: ANL 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: thực hiện phép logic AND dữ liệu ở thanh ghi A với dữ liệu ở ô nhớ  có địa chỉ direct, kết quả được lưu trữ ở thanh ghi A
•   Ví dụ:
mov  A,#0FFh
mov 10h,#010h
ANL A,10h
Kết quả : A = #010h
3.  Lệnh And dữ liệu trên thanh ghi A với dữ liệu của ô nhớ gián tiếp:
•    Cú pháp: ANL 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: thực hiện phép logic  AND dữ liệu ở thanh ghi A với dữ liệu của ô nhớ có địa chỉ bằng giá trị  của thanh ghi Ri, kết quả được lưu trữ ở thanh ghi A
•   Ví dụ:
mov  A,#0Fh
mov 70h,#0E1h
mov R1,#070h
ANL A,@R1
Kết quả : A  = #01h
4. Lệnh And dữ liệu trên thanh ghi A với dữ liệu xác định:
•    Cú pháp: ANL 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: thực hiện  phép logic AND dữ liệu ở thanh ghi A với dữ liệu cho trước, kết quả được  lưu trữ ở thanh ghi A
•   Ví dụ:
mov A,#0Eh
ANL A,#11h
Kết  quả : A = #00
5. Lệnh And dữ liệu của ô nhớ có địa chỉ direct với  dữ liệu trên thanh ghi A:
•   Cú pháp: ANL 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: thực hiện phép logic AND dữ liệu ở thanh ghi A  với dữ liệu của ô nhớ có địa chỉ direct, kết quả được lưu trữ ở ô nhớ có  địa chỉ direct.
•   Ví dụ:
mov A,#08h
mov R1,#0F7h
ANL  R1,A
Kết quả : R1 = #0
6. Lệnh And dữ liệu trên ô nhớ có địa chỉ  direct với dữ liệu xác định:
•   Cú pháp: ANL direct,#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: thực hiện phép logic AND dữ liệu của ô nhớ  có địa chỉ direct với dữ liệu cho trước, kết quả được lưu trữ ở ô nhớ có  địa chỉ direct.
•   Ví dụ:
mov R1,#0F7h
ANL R1,#1Fh
Kết  quả : R1 = #017h
7. Lệnh OR dữ liệu ở thanh ghi A với dữ liệu ở  thanh ghi Rn:
•   Cú pháp: ORL 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: thực hiện phép logic OR dữ liệu ở thanh ghi A với dữ liệu ở thanh  ghi Rn, kết quả được lưu trữ ở thanh ghi A
•   Ví dụ: mov A,#0Fh
mov  R1,#0F0h
ORL A,R1
Kết quả : A = #0FFh
8. Lệnh OR dữ liệu  trên thanh ghi A với dữ liệu của ô nhớ có địa chỉ direct:
•   Cú pháp:  ORL 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: thực hiện phép logic  OR dữ liệu ở thanh ghi A với dữ liệu của ô nhớ có địa chỉ direct, kết  quả được lưu trữ ở thanh ghi A
•   Ví dụ: mov A,#0Eh
mov 50h,#0F0h 
ORL A,50h
Kết quả : A = #0FEh
9. Lệnh OR dữ liệu trên thanh  ghi A với dữ liệu của ô nhớ gián tiếp:
•   Cú pháp: ORL 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: thực hiện phép logic OR dữ liệu ở  thanh ghi A với dữ liệu của ô nhớ có địa chỉ bằng giá trị của thanh ghi  Ri, kết quả được lưu trữ ở thanh ghi A
•   Ví dụ:
mov A,#18h
mov  30h,#0F0h
mov R1,#30h
ORL A,@R1
Kết quả : A = #0F8h
10.  Lệnh OR dữ liệu trên thanh ghi A với dữ liệu xác định:
•   Cú pháp:  ORL 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: thực hiện phép logic  OR dữ liệu ở thanh ghi A với dữ liệu cho trước, kết quả được lưu trữ ở  thanh ghi A
•   Ví dụ:
mov A,#00h
ORL A,#10h
Kết quả : A =  #010h
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

Vi Điều Khiển 8051 Empty Re: Vi Điều Khiển 8051

Bài gửi by Sponsored content


Sponsored content


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