Vi điều khiển 8051 - Chương 1: Giới thiệu AT89C51 - Lê Chí Thông

MSC-51 là một họ IC vi điều khiển (microcontroller), được phát triển chế tạo

và bán ở thị trường bởi hãng INTEL của Mỹ. Các nhà chế tạo IC khác như

SIEMENS của Đức, ADVANCED MICRO DEVICES, FUJITSU của Nhật và

PHILIPS của Hà Lan là các nhà cung cấp thiết bị trong họ MSC-51 được cấp

giấy bản quyền thứ hai, hãng ALMEL cũng là một hãng được cấp bảng quyền

và sản phẩm 8951, 8952 là hai IC tiêu biểu trong thiết kế của họ.

Chúng có các đặt điểm chung như sau:

- 4Kbyte ROM (đựơc lập trình bởi nhà sản xuất, chỉ có ở 8051 ).

- 4Kbyte EPROM ( cho ta có thể lập trình được nhiều lần ”khoảng 1000

lần”, chỉ có ở 8951 ).

- 128 byte RAM .

- 4 port I/O 8 bit.

- 2 bộ định thời 16 bit.

- 64 K không gian bộ nhớ chương trình mở rộng.

- 64 K không gian bộ nhớ dữ liệu mở rộng.

- Một bộ xử lý luận lý (hoạt động trên bít đơn).

- 210 bit được địa chỉ hoá.

- Bộ nhân / chia 4 µs.

 

pdf51 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: tuando | Lượt xem: 679 | Lượt tải: 0download
Tóm tắt nội dung Vi điều khiển 8051 - Chương 1: Giới thiệu AT89C51 - Lê Chí Thông, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 ((Rn)) ← ((Rn)) +1 
INC DPTR : (DPTR) ← (DPTR) +1 
DEC 
DEC A : (A) ← (A) -1 
Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com
 45
DEC direct : (direct) ← (direct) -1 
DEC Ri : (Ri) ← (Ri) -1 
DEC Rn : (Rn) ← (Rn) –1 
MUL AB : (A) ← LOW {(A) x (B)}; có ảnh hưởng cờ OV 
 (B) ← HIGH {(A) x(B)}; cờ Carry được xóa 
DIV AB : (A) ← Integer Result of {(A)/(B)}; cờ Carry xóa 
DA A : Điều chỉnh thanh ghi A thành số BCD đúng 
 trong phép cộng BCD (thường DA A đi kèm với : ADD, 
ADDC). 
 Nếu {(A3 – A0) > 9} và {(AC) =1}→ (A3 ÷ A0) ← (A1 ÷ A0 ) + 6 
 Nếu {(A7 – A4) > 9} và {(AC) =1}→ (A3 ÷ A0) ← (A7 ÷ A4 ) + 6 
2. Các hoạt động logic (Logic Operation) : 
Tất cả các lệnh logic sử dụng thanh ghi A như là một trong những toán hạng 
thực thi một chu kỳ máy, ngoài A ra mất hai chu kỳ mày. Những hoạt động logic 
có thể được thực hiện trên bất kỳ byte nào trong vị trí nhớ dữ liệu nội mà không 
qua thanh ghi A. 
 Các hoạt động logic được tóm tắt như sau : 
ALN 
ALN A, Rn : (A) ← (A) AND (Rn) 
ALN A, direct : (A) ← (A) AND (direct) 
ALN A, @Ri : (A) ← (A) AND (Ri) 
ALN A, # data : (A) ← (A) AND (# data) 
ALN direct, A : (direct) ← (direct) AND (A) 
ALN direct, # data : (direct) ← (direct) AND (# data) 
ORL 
ORL A, Rn : (A) ← (A) OR (Rn) 
ORL A, direct : (A) ← (A) OR (direct) 
ORL A, @Ri : (A) ← (A) OR (Ri) 
ORL A, # data : (A) ← (A) OR (# data) 
ORL direct, A : (direct) ← (direct) OR (A) 
ORL direct, # data : (direct) ← (direct) OR (# data) 
XLR 
Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com
 46
XLR A, Rn : (A) ← (A) ⊕ (Rn) 
XLR A, direct : (A) ← (A) ⊕ (direct) 
XLR A, @Ri : (A) ← (A) ⊕ (Ri) 
XLR A, # data : (A) ← (A) ⊕ (# data) 
XLR direct, A : (direct) ← (direct) ⊕ (A) 
XLR direct, # data : (direct) ← (direct) ⊕ (# data) 
CLR A : (A) ← 0 
CLR C : (C) ← 0 
CLR Bit : (Bit) ← 0 
RL A : quay vòng thanh ghi A qua trái 1 bit 
 (An + 1) ← (An) ; n = 0 ÷ 6 
 (A0) ← (A7) 
RLC A : quay vòng thanh ghi A qua trái 1 bit có cờ carry 
 (An + 1) ← (An) ; n = 0 ÷ 6 
 (C) ← (A7) 
 (A0) ← (C) 
RR A : quay vòng thanh ghi A qua phải 1 bit 
 (An) ← (An + 1) ; n = 0 ÷ 6 
 (A0) ← (A7) 
RLC A : quay vòng thanh ghi A qua trái 1 bit có cờ carry 
 (An) ← (An + 1) ; n = 0 ÷ 6 
 (C) ← (A7) 
 (A7) ← (C) 
SWAP A : đổi chỗ 4 bit thấp và 4 bit cao của A 
 cho nhau (A0 ÷ A3) ↔ (A7 ÷ A4) 
3. Các lệnh rẽ nhánh chương trình (lệnh nhảy) : 
Có nhiều lệnh để điều khiển chương trình bao gồm việc gọi hoặc trả lại từ 
chương trình con hoặc chia nhánh có điều kiện hay không có điều kiện. 
Tất cả các lệnh rẽ nhánh đều không ảnh hưởng đến cờ. Ta có thể định nhãn 
cần nhảy tới mà không cần định rõ địa chỉ , trình biên dịch sẽ đặt lại địa chỉ nơi 
cần nhảy tới vào đúng lệnh đã đưa ra. 
 Sau đây là tóm tắt hoạt động của lệnh nhảy : 
JC rel : nhảy đến “rel” nếu carry set. 
Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com
 47
JNC rel : nhảy đến “rel” nếu carry = 0. 
JB bit,rel : nhảy đến “rel” nếu bit set. 
JNB bit,rel : nhảy đến “rel” nếu bit = 0. 
JBC bit,rel : nhảy đến “rel” nếu bit set và xóa bit. 
ACALL addr11 : lệnh gọi tuyệt đối trong page 2K 
 (PC) ← (PC) + 2 
 (SP) ← (SP) + 1 
 ((SP)) ← (PC7 ÷ PC0) 
 (SP) ← (SP) + 1 
 ((SP)) ← (PC15 ÷ PC8) 
 (PC10 ÷ PC0) ← page Address. 
LCALL addr16 : lệnh gọi dài chương trình con trong 64K 
 (PC) ← (PC) + 3 
 (SP) ← (SP) + 1 
 ((SP)) ← (PC7 ÷ PC0) 
 (SP) ← (SP) + 1 
 ((SP)) ← (PC15 ÷ PC8) 
 (PC) ← Ạddr ÷ Addr0. 
RET : kết thúc chương trình con và quay về chương trình chính 
 (PC15 ÷ PC8) ← ((SP)) 
 (SP) ← (SP) – 1 
 (PC7 ÷ PC0) ← ((SP)) 
(SP) ← (SP) – 1 
RETI :kết thúc thủ tục phục vụ ngắt quay về chương trình chính, 
hoạt động tương tự RET. 
AJMP Addr11:Nhảy tuyệt đối không điều kiện trong 2K. 
 (PC) ← (PC) + 2 
 (PC10 ÷ PC0) ← page Address 
AJMP Addr16: Nhảy dài không điều kiện trong 64K. 
 (PC) ← (PC) + 2 
 (PC15 ÷ PC0) ← page Address 
SJMP rel :nhảy ngắn không điều kiện trong -128 ÷ +127 byte 
 (PC) ← (PC) + 2 
 (PC) ← (PC) + byte 2 
JMP @A + DPTR :nhảy không điều kiện đến add (A) + (DPTR) 
 (PC) ← (A) + (DPTR) 
JZ rel :nhảy đến A=0. Thực hành lệnh kế nếu A # 0 
Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com
 48
 (PC) ← (PC) + 2 
(A) = 0 → (PC) ← (PC) + 2 
JNZ rel :nhảy đến A # 0. Thực hành lệnh kế nếu A = 0 
 (PC) ← (PC) + 2 
(A) # 0 → (PC) ← (PC) + 2byte 
CJNE A,direct,rel :so sánh và nhảy đến rel nếu A # direct 
 (PC ) ← (PC) + 3 
 (A) (direct) → (PC) ← (PC) + Relative Add 
 (A) < (direct) → C = 1 
 (A) > (direct) → C = 0 
(A)= direct. Thực hành lệnh kế tiếp 
CJNE A,#data,rel :tương tự lệnh CJNE A,direct,rel. 
CJNE Rn,#data,rel :tương tự lệnh CJNE A,direct,rel. 
CJNE @Ri,#data,rel :tương tự lệnh CJNE A,direct,rel. 
DJNZ Rn,rel :giảm Rn và nhảy nếu Rn # 0 
 (PC) ← (PC) + 2 
 (Rn) ← (Rn) – 1 
 (Rn) 0 → (PC) ← (PC) + byte 2 
DJNZ direct,rel :tương tự lệnh DJNZ Rn,rel. 
4. Các lệnh dịch chuyển dữ liệu : 
Các lệnh dịch chuyển dữ liệu trong những vùng nhớ nội thực thi 1 hoặc 2 chu 
kỳ máy. Mẫu lệnh MOV cho phép di chuyển dữ liệu bất kỳ 2 
vùng nhớ nào của RAM nội hoặc các vùng nhớ của các thanh ghi chức năng đặc 
biệt mà không thông qua thanh ghi A. 
Vùng stack của 8951 chỉ chứa 128 byte RAM nôi, nếu con trỏ Stack SP được 
tăng quá địa chỉ 7FH thì các byte được PUSH vào sẽ mất đi và các byte POP ra 
sẽ không biết rõ. 
Các lệnh dịch chuyển bộ nhớ nội và bộ nhớ ngoại dùng sự định vị gián tiếp. 
Địa chỉ gián tiếp có thể dùng địa chỉ 1 byte (@Ri) hoặc địa chỉ 2 byte (@DPTR). 
Tất cả các lệnh dịch chuyển hoạt động trên bộ nhớ ngoài thực thi trong hai chu 
kỳ máy và dùng thanh ghi A làm toán hạng SOURCE hoặc toán hạng 
DESTINATION. 
Việc đọc và ghi RAM ngoài (RD và WR) chỉ tích cực trong suốt quá trình 
thực thi của lệnh MOVX, còn bình thường thì RD và WR không tích cực (mức 1). 
Tất cả các lệnh dịch chuyển đều không ảnh hưởng đến cờ. Hoạt động của 
từng lệnh được tóm tắt như sau : 
Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com
 49
MOV A,Rn : (A) ← (Rn) 
MOV A,direct : (A) ← (direct) 
MOV A,@Ri : (A) ← ((Ri)) 
MOV A,#data : (A) ← #data 
MOV Rn,A : (Rn) ← (A) 
MOV Rn,direct : (Rn) ← (direct) 
MOV Rn,#data : (Rn) ← #data 
MOV direct,A : (direct) ← (A) 
MOV direct,Rn : (direct) ← (Rn) 
MOV direct,direct : (direct) ← (direct) 
MOV direct,@Ri : (direct) ← ((Ri)) 
MOV direct,#data : (direct) ← #data 
MOV @Ri,A : ((Ri)) ← (A) 
MOV @Ri,direct : ((Ri)) ← (direct) 
MOV @Ri,#data : ((Ri)) ← #data 
MOV DPTR,#data16 : (DPTR) ← #data16 
MOV A,@A + DPTR : (A) ← (A) + (DPTR) 
MOV A,@A + PC : (PC) ← (PC) + 1 
 (A)← (A) + (PC) 
MOVX A,@Ri : (A) ← ((Ri)) 
MOVX A,@DPTR : (A) ← ((DPTR)) 
MOVX @Ri,A : ((Ri)) ← (A) 
MOVX @DPTR,A : ((DPTR)) ← (A) 
PUSH direct : cất dữ liệu vào stack 
 (SP) ← (SP) + 1 
 (SP) ← (direct) 
POP direct : lấy dữ liệu ra khỏi stack 
 (direct) ← (SP) 
 (SP) ← (SP) - 1 
XCH A,Rn :đổi chỗ nội dung thanh ghi A với Rn 
 A  (Rn) 
XCH A,direct : (A)  (direct) 
XCH A,@Ri : (A)  ((Ri)) 
XCHD A,@Ri : đổi chỗ 4 bit thấp của A với ((Ri)) 
 (A3 ÷ A0)  ((Ri3 ÷ Ri0)) 
Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com
 50
5. Các lệnh luận lý (Boolean Instruction) : 
8951 chứa một bộ xử lý luận lý đầy đủ cho các hoạt động đơn bit, đây là một 
điểm mạnh của họ vi điều khiển MSC-51 mà các họ khác không có. 
RAM nội chứa 128 bit định vị và vùng nhớ các thanh ghi chức năng đặc biệt 
lên đến 128 bit định vị khác. Tất cả các đường port là bit định vị, mỗi đường có 
thể xử lý như một port đơn bit riêng biệt. Các truy xuất các bit này không chỉ là 
các lệnh rẽ nhánh không, mà là một danh mục đầy đủ các lệnh MOVE, SET, 
CLEAR, COMPLEMENT, OR, AND. 
Toàn bộ sự truy xuất của bit dùng sự định vị trực tiếp với những địa chỉ từ 
00H ÷ 7FH trong 128 vùng nhớ thấp và 80H ÷ FFH ở vùng các thanh ghi chức 
năng đặc biệt. 
Bit Carry C trong thanh ghi PSW của từ trạng thái chương trình được dùng 
như một sự tích lũy đơn của bộ xử lý luận lý. Bit carry cũng là một bit định vị và 
có địa chỉ trực tiếp vì nó nằm trong PSW. Hai lệnh CLR C và CLR CY đều có 
cùng tác dụng là xóa cờ Carry nhưng lệnh đầu mất 1 byte còn lệnh sau mất 2 
byte. 
Hoạt động của các lệnh luận lý được tóm tắt như sau : 
CLR C : xóa cờ carry xuống 0, có ảnh hưởng cờ Carry 
CLR BIT : xóa bit xuống 0, không ảnh hưởng cờ Carry 
SET C : set cờ carry lên 1, có ảnh hưởng cờ Carry 
SET BIT : set bit lên 1, không ảnh hưởng cờ Carry 
CPL C : đảo bit cờ carry, có ảnh hưởng cờ carry 
CPL BIT : đảo bit, không ảnh hưởng cờ carry 
ALN C,BIT : (C) ← (C) AND (BIT) : có ảnh hưởng cờ Carry 
ALN C,/BIT: (C) ← (C) AND NOT (BIT) : có ảnh hưởng cờ Carry 
ORL C,BIT : (C) ← (C) OR (BIT) : có ảnh hưởng cờ Carry 
ALN C,/BIT: (C) ← (C) OR NOT (BIT) : có ảnh hưởng cờ Carry 
MOV C,BIT : (C) ← (BIT) : có ảnh hưởng cờ Carry 
MOV BIT,C : (BIT) ← (C) : không ảnh hưởng cờ 
Carry 
6. Các lệnh xen vào (Miscellameous Instruction) : 
NOP : không hoạt động gì cả, chỉ tốn 1 byte và một chu kỳ thực 
 thi máy, ta dùng để DELAY những khoảng thời gian nhỏ. 
Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com
 51
Chú ý : 
(A) : nội dung của thanh ghi A. 
((Ri)) : nội dung của địa chỉ trong RAM nội mà Ri trỏ đến. 
((DPTR)) : nội dung của địa chỉ trong RAM ngoại mà DPTR đang trỏ đến. 
Rn : với n = 0 ÷ 7 (tức R0, R1, R2  : 8 thanh ghi). 

File đính kèm:

  • pdfvi_dieu_khien_8051_chuong_1_gioi_thieu_at89c51_le_chi_thong.pdf