Tải bản đầy đủ (.doc) (16 trang)

CHƯƠNG 5 GIỚI THIỆU về VI xử lý AT89C52

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (168.04 KB, 16 trang )

Chương 5:

GIỚI THIỆU VI XỬ LÝ AT89C52


1. VI ĐIỀU KHIỂN HỌ MCS-51MCS-51tm
Là họ vi điều khiển do hãng intel sản xuất vào đầu những năm 80 và
ngày nay đã trở thành một chuẩn trong công nghiệp. bắt đầu từ ic tiêu biểu là
8051 đã cho thấy khả năng thích hợp với những ứng dụng mang tính điều
khiển. việc xử lí trên byte và các phép toán số học ở cấu trúc dữ liệu nhỏ
được thực hiện bằng nhiều chế độ truy xuất dữ liệu nhanh trên ram nội. tập
lệnh cung cấp một bản tiện dụng của những lệnh số học 8 bit gồm cả lệnh
nhân và lệnh chia. nó cung cấp những hỗ trợ mở rộng on-chip dùng cho những
biến 1 bit như là kiểu dữ liệu riêng cho phép quản lí và kiểm tra bit trực tiếp
trong điều khiển và những hệ thống logic đòi hỏi xử lí luận lí.
Sau đây là bảng so sánh các IC trong họ MCS-51TM :
TÊN LINH BỘ
NHỚ
KIỆN
CHƯƠNGù TRÌNH
ON CHIP
8051
4 KB MROM
8031
0 KB
8751
4 KB EPROM
8951
4 KB Flash ROM
8052
8 KB MROM


8032
0 KB
8752
8 KB EPROM
8952
8 KB Flash ROM
2. VI ĐIỀU KHIỂN AT89C52

BỘ NHỚ DỮ LIỆU TIMER
ON CHIP
128 Bytes
128 Bytes
128 Bytes
128 bytes
256 Bytes
256 Bytes
256 Bytes
256 Bytes

2
2
2
2
3
3
3
3


Do họ MCS-51TM đã trở thành chuẩn công nghiệp nên có rất nhiều hãng

sản xuất ra nó, điển hình là ATMEL Corporation. Hãng này đã kết hợp rất
nhiều tính năng dựa trên nền tảng kỹ thuật của mình để tạo ra các vi điều
khiển tương thích với MCS-51TM nhưng mạnh mẽ hơn.
AT89C52 là một vi điều khiển 8 bit do ATMEL sản xuất, chế tạo theo
công nghệ CMOS, có chất lượng cao, công suất thấp với 8 KB Flash (flash
programmable and erasable read only memory). Thiết bò này được chế tạo
bằng cách sử dụng kỹ thuật bộ nhớ không bốc hơi mật độ cao của ATMEL và
tương thích với chuẩn công nghiệp MCS-51 TM về tập lệnh và các chân ra.
Flash on-chip cho phép bộ nhớ lập trình được lập trình trong hệ thống bởi một
lập trình viên bình thường. Bằng cách nối 1 CPU 8 bit với một Flash trên một
chip đơn, AT89C52 là một vi điều khiển mạnh (có công suất lớn), cung cấp
một sự linh động cao và giải pháp về giá cả đối với nhiều ứng dụng vi điều
khiển.
Các đặc điểm chủ yếu của AT89C52 :
• Tương thích hoàn toàn với họ MCS-51TM của Intel.
• Bộ nhớ chương trình 8K Byte thuộc loại Flash Memory.Độ bền : 1000 lần
ghi/xóa.
• Tần số hoạt động : 0 Hz đến 24 MHz.3 chế độ khóa bộ nhớ.
• 256 x 8-Bit RAM nội.32 đường I/O lập trình được (4 port).
• 3 timer/counter 16-bit.8 nguồn ngắt.
• Chế độ hạ nguồn và chế độ lười tiêu tốn công suất thấp.
2.1. Cấu tạo chân


Tùy theo khả năng (về kinh tế, kỹ thuật, …) mà các nhà sản xuất các sản
phẩm ứng dụng có thể chọn một trong 3 kiểu chân do ATMEL đưa ra.

2.2. Sơ đồ khối



2.3. Mô tả chức năng của các
chân
Vcc : áp nguồn.
GND : đất.
Port 0 : là một port I/O 8-bit hai
chiều, cực máng hở. Khi xuất ra, mỗi
chân port có thể lái 8 đầu vào TTL.


Nếu ghi các mức 1 ra các chân port thì các chân này có thể dùng như các đầu
vào trở kháng cao.
Port 0 cũng có thể được cấu hình thành một bus multiplex giữa đòa chỉ thấp và
dữ liệu khi truy cập chương trình hay dữ liệu từ bên ngoài. Trong chế độ này,
port 0 có điện trở pullup nội.
Port 0 cũng nhận các byte mã chương trình khi lập trình Flash và xuất ra mã
chương trình khi kiểm tra, khi đó cần có điện trở pullup bên ngoài.
Port 1 : là một port I/O 8-bit hai chiều có pullup nội. Đầu ra port 1 có
thể lái 4 đầu vào TTL. Khi viết các mức 1 ra các chân port thì chúng được kéo
lên do có điện trở nội và có thể dùng làm đầu vào. Khi vai trò là cổng nhập,
những chân của port 1 bò kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên.
Hơn nữa, P1.0 và P1.1 có thể được dùng như là đầu vào bộ đếm
timer/counter 2 bên ngoài (P1.0/T2) và xung kích (P1.1/T2EX).
Port 1 cũng nhận những byte đòa chỉ thấp trong khi lập trình Flash và
trong khi kiểm tra Flash .
Port 2 : là một port I/O 8-bit hai chiều có pullup nội. Đầu ra port 2 có
thể lái 4 đầu vào TTL. Khi viết các mức 1 ra các chân port thì chúng được kéo
lên do có điện trở nội và có thể dùng làm đầu vào. Khi vai trò là cổng nhập,
những chân của port 2 bò kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên.
Port 2 phát byte đòa chỉ cao trong khi nhận lệnh từ bộ nhớ chương trình
ngoài và trong lúc truy xuất đến bộ nhớ dữ liệu ngoài mà có sử dụng đòa chỉ

16 bit (MOVX A, @DPTR). Trong ứng dụng này nó dùng điện trở nội kéo lên
mạnh khi xuất 1. Khi truy xuất bộ nhớ dữ liệu ngoài dùng đòa chỉ 8 bit, port 2
sẽ phát nội dung của thanh ghi P2
Port 2 cũng nhận byte đòa chỉ cao trong lúc lập trình Flash và trong lúc kiểm
tra Flash.
Port 3 : là một port I/O 8-bit hai chiều có pullup nội. Đầu ra port 3 có
thể lái 4 đầu vào TTL. Khi viết các mức 1 ra các chân port thì chúng được kéo
lên do có điện trở nội và có thể dùng làm đầu vào. Khi vai trò là cổng nhập,
những chân của port 3 bò kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên.
Port 3 cũng có những chức năng của họ MSC-51 được iệt kê ở bảng sau:
BIT

TÊN

ĐỊA CHỈ
BIT

CHỨC NĂNG THAY THẾ


P3.0
P3.1
P3.2
P3.3
P3.4

RXD
TXD
INT0
INT1

T0

B0H
B1H
B2H
B3H
B4H

P3.5

T1

B5H

P3.6
P3.7

WR
RD

B6H
B7H

Nhận dừ liệu cho port nối tiếp
Truyền dừ liệu cho port nối tiếp
Ngắt ngoài 0
Ngắt ngoài 1
Ngõ vào từ bên ngoài cho
timer/counter 0
Ngõ vào từ bên ngoài cho

timer/counter 1
Xung ghi bộ nhớ dữ liệu ngoài
Xung đọc bộ nhớ dữ liệu ngoài

Port 3 cũng nhận vài tín hiệu điều khiển trong lúc lập trình Flash và
trong lúc kiểm tra Flash.
RST : là ngõ vào Reset. Khi ngõ này được đưa lên cao (trong ít nhất hai
chu kì máy), các thanh ghi bên trong AT89C51 được tải những giá trò thích
hợp để khởi động hệ thống.
ALE/PROG (Address Latch Enable) : ALE là xung xuất cho phép chốt
byte đòa chỉ thấp khi truy cập bộ nhớ ngoài. Chân này còn là ngõ vào của
xung lập trình (PROG) khi lập trình Flash.
Trong hoạt động bình thường, ALE được phát xung với tần số 1/6 tần số dao
động on-chip và có thể được dùng như xung thời gian chuẩn bên ngoài. Tuy
nhiên, cần chú ý là một xung ALE sẽ bò mất khi truy cập bộ nhớ ngoài.
Có thể hủy bỏ chức năng của ALE bằng cách set bit 0 của thanh ghi ở vò trí
8EH. Một khi bit này được set, ALE chỉ tích cực khi có lệnh MOVX hoặc
MOVC. Nếu không có các lệnh này thì ALE ở mức cao. Việc set bit 0 của
thanh ghi ở vò trí 8EH không làm ảnh hưởng đến vi điều khiển khi truy cập
bộ nhớ ngoài.

PSEN (Program Store Enable) : PSEN là xung strobe báo hiệu việc đọc bộ
nhớ chương trình ngoài, PSEN tích cực hai lần (mức thấp) mỗi chu kì máy,
ngoại trừ hai xung PSEN bò mất khi truy xuất dữ liệu ngoài. Khi thi hành
chương trình trong RAM nội, PSEN sẽ ở mức thụ động (mức cao).


EA/VPP (External Access) : EA là ngõ vào để cho phép truy xuất bộ nhớ
chương trình từ bên ngoài khi được nối với GND. Khi EA được treo lên
nguồn VCC, chương trình sẽ được thực thi trong ROM nội. Chân này cũng

nhận điện áp 12v (VPP) trong khi lập trình Flash.
XTAL1 : Đầu vào của bộ khuếch đại dao động đảo và cũng là đầu vào đến
mạch tạo xung clock nội.
XTAL2 : Đầu ra của bộ khuếch đại dao động đảo.
2.4. Các thanh ghi chức năng (SFR-Special Funtion Reisters)
AT89C52 có 26 thanh ghi chức năng được thiết kế như là một thành
phần của RAM on-chip. Do đó mỗi thanh ghi có một đòa chỉ của nó, nằm trong
vùng từ 80H đến FFH. Tuy nhiên, vùng này cũng là vùng bộ nhớ nên việc truy
cập các thanh ghi này thông qua các lệnh dùng đònh vò trực tiếp khác với việc
truy cập vùng nhớ dùng đònh vò gián tiếp.
Bảng vò trí các thanh ghi chức năng :


Chú ý là không phải tất cả các đòa chỉ đều có các thanh ghi, những đòa chỉ
không có thanh ghi này có thể không có trên chip. Đọc những đòa chỉ này sẽ có
những giá trò ngẫu nhiên và ghi những giá triï này có những tác động không xác
đònh trước.
Phần mềm của người dùng không nên ghi những giá trò 1 đến các vò trí này, bởi
vì chúng có thể được dùng trong tương lai. Trong trường hợp đó, giá trò của các
bit luôn là 0.
Ngoài những thanh ghi tương tự 8051, AT89C52 có thêm :
Các thanh ghi Timer 2 các bit điều khiển và trạng thái chứa trong thanh ghi
T2CON và T2MOD cho Timer 2. Cặp thanh ghi RCAP2H và RCAP2L là những
thanh ghi Capture/Reload trong chế độ capture 16 bit hay chế độ auto-reload 16

bit.



hiệu

TF2

Chức năng

Cờ tràn Timer 2, set khi Timer 2 tràn và phải được clear
bằng phần mềm. TF2 sẽ không set khi RCLK = 1 hoặc
TCLK = 1.
EXF2
Cờ ngoài của Timer 2, set khi xảy ra capture hoặc reload do
T2EX xuống thấp và EXEN2 = 1. Nếu ngắt Timer 2 được
kích hoạt, EXF2 = 1 sẽ làm CPU trỏ đến ISR của Timer 2.
EXF2 phải được xóa bằng phần mềm. EXF2 không gây nên
ngắt trong chế độ đếm lên/xuống (DCEN = 1).
RCLK
Kích hoạt xung clock bộ thu. Khi set, các xung tràn Timer 2
sẽ là xung clock cho bộ thu port nối tiếp trong mode 1 và 3.
RCLK = 0 thì bộ thu port nối tiếp sẽ dùng các xung tràn của
Timer 1.
TCLK
Kích hoạt xung clock bộ phát. Khi set, các xung tràn Timer 2
sẽ là xung clock cho bộ phát port nối tiếp trong mode 1 và 3.
TCLK = 0 thì bộ phát port nối tiếp sẽ dùng các xung tràn
của Timer 1.
EXEN2 Kích hoạt bên ngoài. Khi set, cho phép capture hay reload
khi T2EX xuống thấp (nếu Timer 2 không sử dụng cho port
nối tiếp). EXEN2 = 0 làm cho Timer 2 bỏ qua các sự kiện
trên T2EX.
TR2
Khởi động/Dừng Timer 2. TR2 = 1 làm khởi động Timer 2.
C/T2

Bit lựa chọn timer hay counter. C/T2 = 0 : timer. C/T2 = 1 :
counter đếm sự kiện bên ngoài (kích cạnh xuống).
CP/RL2 Lựa chọn capture hay reload. CP/RL2 = 1: capture xảy ra khi
T2EX xuống thấp nếu EXEN2 = 1. CP/RL2 = 0 : reload xảy
ra khi Timer 2 tràn hoặc khi T2EX xuống thấp nếu EXEN2
= 1. Nếu TCLK hay RCLK = 1, bit này bò bỏ qua và timer bò
ép vào chế độ reload khi Timer 2 tràn.
Các thanh ghi ngắt tập các bit riêng lẻ cho phép ngắt chứa trong thanh
ghi IE. Thiết lập hai mức ưu tiên cho 6 nguồn ngắt bằng cách set các bit thanh
ghi IP.
2.5. Bộ nhớ dữ liệu


AT89C52 có 256 byte bộ nhớ RAM on-chip. Trong đó, 128 byte trên có
cùng đòa chỉ với vùng thanh ghi chức năng nhưng có cấu tạo vật lý riêng biệt.
Khi một lệnh truy cập một vò trí nội có đòa chỉ trên 7FH, chế độ đòa chỉ
nó sử dụng sẽ báo cho CPU biết vùng đòa chỉ nào nó cần truy cập : RAM hay
SFR. Các lệnh dùng đòa chỉ trực tiếp sẽ truy cập vùng SFR. Ví dụ như lệnh sau
đây sẽ truy cập SFR ở đòa chỉ 0A0H (port 2)
MOV
0A0H,#data
Lệnh dùng đòa chỉ gián tiếp sẽ truy cập 128 byte trên của RAM. Ví dụ
như cũng truy cập đòa chỉ 0A0H nhưng gián tiếp thông qua R0.
MOV
R0,#0A0H
MOV
@R0,#data
Chú ý rằng các tác vụ của stack vốn đã sử dụng đòa chỉ gián
tiếp nên vùng 128 byte trên của RAM rất tiện dụng để làm
vùng stack.

2.6. Đặc tính bộ dao động
XTAL1 là đầu vào và đầu ra tương ứng của bộ khuếch đại
đảo được dùng làm bộ dao động nội on-chip. Có thể dùng
thạch anh hay bộ cộng hưởng ceramic đều được.
Để lái vi điều khiển từ nguồn xung clock bên ngoài, XTAL2
phải được để trống trong khi XTAL1 nối đến nguồn lái.
Không có yêu cầu gì về duty cycle nhưng phải chú ý đến thời
gian tối đa và tối thiểu của mức điện áp cao cũng như mức
điện áp thấp.
2.7. Chế độ lười
Trong chế độ lười, CPU rơi vào trạng thái “ngủ” trong khi tất
cả thiết bò ngoại vi vẫn còn tích cực. Chế độ này được tạo ra
bằng phần mềm. Nội dung của RAM on-chip và giá trò của các SFR vẫn được
giữ nguyên. Kết thúc chế độ lười bằng cách kích hoạt một ngắt hoặc reset phần
cứng.
Chú rằng khi kết thúc chế độ lười bằng cách reset phần cứng thì thông thường
vi điều khiển sẽ gọi lại chương trình mà nó vừa thoát, cho đến hai chu kỳ máy
trước khi thuật toán reset chiếm quyền điều khiển. Phần cứng cấm truy cập
RAM nội trong trường hợp này nhưng không cấm truy cập đến các chân port, do
đó có thể xảy ra những trường hợp không mong muốn. Để loại bỏ trường hợp


này, lệnh ngay sau lệnh gọi chế độ lười không nên là lệnh ghi port hay ghi bộ
nhớ ngoài.
2.8. Chế độ hạ nguồn
Trong chế độ hạ nguồn, bộ dao động ngừng, và lệnh gọi hạ nguồn là lệnh cuối
cùng được thực thi. RAM on-chip và SFR duy trì giá trò của nó cho đến khi kết
thúc chế độ hạ nguồn.
Kết thúc chế độ hạ nguồn chỉ bằng một cách duy nhất : reset phần cứng. Reset
sẽ tạo lại giá trò cho SFR nhưng không thay đổi nội dung của RAM on-chip.

Không nên reset trước khi Vcc phục hồi mức điện áp thông thường của nó và
phải giữ đủ lâu để bộ dao động phục hồi và ổn đònh.
2.9. Trạng thái của một số chân trong chế độ lười và chế độ hạ nguồn

IX. TẬP LỆNH CỦA 89C51:
AT89C51 có 255 lệnh chia thành các nhóm lệnh:
+ Nhóm lệnh chuyển dời
+ Nhóm lệnh số học
+ Nhóm lệnh logic
+ Nhóm lệnh chuyển điều khiển
Sau đây là tập lệnh cơ bản của vi xử lý AT89C51:
Các chỉ dẩn thiết lập lệnh
Rn
: Thanh ghi R0 đến R7
Data
: 8 bit đòa chỉ vùng dữ liệu bên trong
@Ri
: Đònh chỉ gián tiếp qua R0 hay R1
#data
: Hằng số 8 bit
#data16
: Hằng số 16 bit
addr 16
: 16 bit đòa chỉ đích
addr 11
: 11 bit đòa chỉ đích
rel
: Ofset 8 bit có dấu



bit
: Bit được đònh đòa chỉ trực tiếp
a) Nhóm lệnh xử lý số học :
ADD
A,Rn
(1 byte,1chu kỳ máy): (A) = (A)+(Rn)
ADD
A,data
(2;1)
: (A) = (A) + (data)
ADD
A,@Ri
(1;1)
: (A) = (A) + ((Ri))
ADD
A,#data
(2;1)
: (A) = ( A) + #data
ADDC A,Rn
(1;1)
: (A) = ( A) + (C) +(Rn)
ADDC A,data
( 2;1)
: (A) = (A) + (C) + (data)
ADDC A,@Ri
(1;1)
: (A) = (A) + ((Ri)) + (C)
ADDC A,#data
( 2;1)
: (A) = (A) + (C) + #data

SUBB A,Rn
(1;1)
: (A) = (A) - (C)- (Rn)
SUBB A,data
(2;1)
: (A) = (A) - (C) -( data)
SUBB A,@Ri
(1;1)
: (A) =(A) -(C) -((Ri))
SUBB A,#data
(2;1)
: (A) = (A) - (C) - #data
INC A
(1;1)
: (A) = (A) +1
INC Rn
(1;1)
: (Rn) = (Rn) +1
INC data
(2;1)
: (data) = (data) +1
INC @Ri
(1;1)
: ((Ri)) =((Ri))+1
DEC A
(1;1)
: (A) =(A) – 1
DEC Rn
(1;1)
: (Rn) =(Rn) -1

DEC data
(2;1)
: (data) =(data) –1
DEC @Ri
(1;1)
: ((Ri)) =((Ri)) –1
INC DPTR
(1;2)
: (DPTR) =(DPTR) +1
MUL AB
(1;4)
: (A) = byte cao của (A) * (B)
(B) = byte thấp của (A)* (B)
DIV AB
(1;4)
: chia (A) cho (B) ,kết quả:
( A) = thương số
(B) = số dư
DA A
(1;1)
: hiệu chỉnh thập phân thanh ghi A
b) Nhóm lệnh luận lý:
ANL A,Rn
(1;1)
: (A) =(A) and (Rn)
ANL A,data
(2;1)
: (A) =(A) and (data)
ANL A,@Ri
(1;1)

: (A) = (A) and ((Ri))
ANL A,#data
(2;1)
: (A) = (A) and #data
ANL data,A
(2;1)
: (data) = (data) and (A)


ANL data,#data
ANL C,bit
ANL C, bit
ORL A,Rn
ORL A,data
ORL A,@Ri
ORL A,#data
ORL data,A
ORL data,#data
ORL C,bit
ORL C,/bit
XRL A,Rn
XRL A,data
XRL A,@Ri
XRL A,#data
XRL data,A
XRL data,#data
SETBC
SET bit
CLR A
CLR bit

CLR C
CPL A
CPL C
CPL bit
RL A
RLC A
RR A
RRC A

(3;2)
(2;2)
(2;2)
(1;1)

: (data) =(data) and #data
: (C) =(C) and (bit)
: (C) =(C) and not (bit)
: (A) = (A) or (Rn)
(2;1)
: (A) = (A) or data
(1;1)
: (A) = (A) or ((Ri))
(2;1)
: (A) = (A) or #data
(2;1)
: (data) = (data) or (A)
(3;2)
: (data ) = (data) or # data
(2;2)
: (C) = (C) or bit

(2;2)
: (C) = (C) or not bit
(1;1)
: (A) =(A) xor (Rn)
(2;1)
: (A) = (A) xor (data)
(1;1)
: (A) = (A) xor ((Ri))
(2;1)
: (A) = (A) xor #data
(2;1)
: (data) = (data) xor (A)
(3;2)
: (data) = (data) xor #data
(1;1)
: (C) =1
(2;1)
: (bit) = 1
(1;1)
: (A) = 0
(2;1)
: (bit) =0
(1;1)
: (C) = 0
(1;1)
: (A) = not (A)
(1;1)
: (C) = not (C)
(2;1)
: (bit) = not (bit)

(1;1)
: quay trái nội dung thanh ghi A
(1;1)
: quay trái nội dung thanh ghi A
(1;1)
: quay phải nội dung thanh ghi A
(1;1)
: quay phải nội dung thanh ghi A
qua cờ nhớ
SWAP
A
(1;1)
: quay trái nội dung thanh ghi A
một nibble
c) Nhóm lệnh chuyển dữ liệu :
MOV A,Rn
(1;1)
: (A) =(Rn)
MOV A,data
(2;1)
: (A) = (data)


MOV A,@Ri
(1;1)
: (A) = ((Ri))
MOV A,#data
(2;1)
: (A) = #data
MOV Rn,A

(1;1)
: (Rn) = (A)
MOV Rn,data
(2;2)
: (Rn) = (data)
MOV Rn,#data (2;1)
: (Rn) = #data
MOV data,A
(2;1)
:(data) = (A)
MOV data,Rn
(2;2)
: (data) = (Rn)
MOV data,data (3;2)
: (data) = (data)
MOV data,@Ri (2;2)
: (data) = ((Ri))
MOV data,#data (3;2)
: (data) = #data
MOV @Ri,A
(1;1)
: ((Ri)) = (A)
MOV @Ri,data (2;2)
: ((Ri)) = (data)
MOV
@Ri,#data (2;1)
: ((Ri)) = #data
MOV DPTR,#data16 (3;2)
: (DPTR) = #data16
MOV C,bit

(2;1)
: (C) = (bit)
MOV bit,C
(2;2)
: (bit) = (C)
MOVC A,@A+DPTR (1;2)
: (A) = ((A)+(DPTR))
MOVC A,@A+PC
(1;2)
: (A) = ((A)+(PC))
MOVX A,@Ri
(1;2)
: chuyển dữ liệu ngoài 8 bít
vào thanh ghi A .
MOVX A,@DPTR
(1;2)
: chuyển dữ kiệu ngoài 16 bit vào
thanh ghi A.
MOVX @Ri,A
(1;2)
: chuyển nội dung thanh ghi A ra dữ
liệu ngoài 8 bit đòa chỉ.
MOVX @DPTR,A
(1;2)
: chuyển nội dung thanh ghi A ra dữ
liệu ngoài 16 bit đòa chỉ.
PUSH
data
(2;2)
: (SP) =(SP) +1

((SP)) = (data)
POP
data
(2;2)
: (data) = ((SP))
(SP) = (SP) -1
XCH A,Rn
(1;1)
: trao đổi dữ liệu giữa thanh ghi Rn
và thanh ghi A.
XCH A,data
(2;1)
: trao đổi giửa thanh ghi A và data.
XCH A,@Ri
(1;1)
: trao đổi giữa thanh ghi A và một
dữ liệu gián tiếp.


XCHD
A,@Ri
(1;1)
: trao đổi giữa nibble thấp
của thanh ghi A và nibble thấp của byte dữ liệu gián tiếp.
d) Nhóm lệnh chuyển điều khiển :
ACALL
addr11
(2;2) : Gọi chương trình con dùng đòa
chỉ tuyệt đối.
LCALL

addr16
(3;2) : Gọi chươnhg trình con dùng đòa chỉ dài.
RET
(1;2) : Trở về từ lệnh gọi chương trình
con
RETI
(1;2) :Trở về từ lệnh gọi ngắt
AJMP
addr11
(2;2) : Nhảy tuyệt đối
LJMP
addr16
(3;2) : Nhảy dài
SJMP
rel
(2;2) : Nhảy ngắn
JMP @A+DPTR
(1;2) : Nhảy gián tiếp từ con trỏ dữ liệu
JZ
rel (2;2) : Nhảy nếu A bằng 0
JNZ
rel (2;2) : Nhảy nếu A không bằng không
JC
rel (2;2) : Nhảy nếu cờ nhớ được đặt
JNC
rel (2;2) : Nhảy nếucờ nhớ không được đặt
JB
bit,rel
(3;2) : Nhảy tương đối nếu bit trực tiếp được đặt
JNB

bit,rel (3;2) : Nhảy nếu bit không được đặt
JBC
bit, rel
(3;2) : Nhảy tương đối nếu bit trực tiếp được
đặt rồi xóa bit
CJNE A,data,rel (3;2) : So sánh dữ liệu trực tiếp với A
và nhảy nếu không bằng
CJNE A,#data,rel (3;2) : So sánh dữ liệu ức thời với Avà nhảy nếu
không bằng
CJNE Rn,#data,rel
(3;2) : So sánh dữ liệu tức thời với (Rn) và nhảy
nếu không bằng
CJNE @Ri,#data,rel
(3;2) : So sánh dữ liệu tức thời với
dữ liệu gián tiếp và nhảy nếu không bằng
DJNZ Rn,rel
(2;2) : Giảm thanh ghi Rn và nhảy nếu
không bằng không
DJNZ data,rel
(3;2) : Giảm dữ liệu trực tiếp và nhảy
nếu không bằng




×