VI ĐIỀU KHIỂN 89C51
GV: LÊ THỊ KIM LOAN
KHOA : ĐIỆN
GIỚI THIỆU PHẦN CỨNG
Chương 1
• 89C51 thuộc họ MCS51
• 4Kbyte EPROM (1000 chu kỳ ghi/xóa)
• 128 byte RAM
• 32 I/O
• 2 timer/counter 16bit
• 6 nguồn ngắt
SƠ ĐỒ CHÂN
MÔ TẢ CÁC CHÂN
• Port 0: là port 8 bit có 2 chức năng
– Là I/O port đối với các thiết kế cỡ nhỏ ( không
sử dụng bộ nhớ mở rộng)
– Là byte thấp của address/data bus khi thiết kế
có sử dụng bộ nhớ mở rộng
• Port 1: là I/O port 8 bit
• Port 2: là port 8 bit có 2 chức năng
– Là I/O port đối với các thiết kế cỡ nhỏ ( không
sử dụng bộ nhớ mở rộng)
– Là byte cao của address/data bus khi thiết kế
có sử dụng bộ nhớ mở rộng
• Port 3: là port 8 bit có nhiều chức năng
– Là I/O port
– Có công dụng chuyển đổi có liên hệ với các
tính năng đặc biệt của 89C51 được mô tả
bởi bảng sau:
CÁC TÍN HIỆU ĐIỀU KHIỂN
• PSEN ( Program Store Enable)
– Là tín hiệu để cho phép đọc bộ nhớ chương
trình mở rộng ( bộ nhớ ngoài)
– Khi 89C51 đọc mã lệnh từ bộ nhớ chương
trình mở rộng thì PSEN được tích cực (mức
thấp) 2 lần trong mỗi chu kỳ máy
– Khi 89C51 thi hành chương trình trong ROM
nội thì PSEN sẽ ở mức cao.
• ALE/PROG ( Program Store Enable)
– ALE ( Address Latch Enable) là tín hiệu chốt
byte thấp của địa chỉ trong suốt quá trình truy
xuất bộ nhớ ngoài
– Chân này cũng được làm ngõ vào xung lập
trình (PROG) cho EPROM
– Ở chế độ họat động bình thường thì xung
ALE có tốc độ bằng 1/6 tần số dao động trên
chip và có thể được dùng làm nguồn xung
nhịp cho các phần khác của hệ thống
• EA ( External Access)
– Khi truy xuất ROM nội thì chân EA phải được nối
với nguồn +5V
– Khi truy xuất ROM ngoài thì chân EA phải được
nối với GND ( 0V)
• RST ( Reset)
– Khi tín hiệu này được đưa lên mức cao trong ít
nhất 2 chu kỳ máy thì sẽ khởi động lại hệ thống
• XTAL1, XTAL2 :
– Đây là ngõ vào và ngõ ra của bộ dao động tạo
xung nhịp
• Nguồn nuôi:
– Sử dụng nguồn +5V ở chân 40 và GND ở chân
20
TỔ CHỨC BỘ NHỚ
• 89C51 có cả ROM nội và RAM nội, tuy
nhiên có thể mở rộng thêm bằng các thiết
bị nhớ bên ngoài
• RAM nội bao gồm nhiều phần:
– RAM lưu trữ đa dụng
– RAM được địa chỉ hóa từng bit
– Các bank thanh ghi
– Các thanh ghi chức năng đặc biệt
• RAM đa dụng có địa chỉ từ 30H đến 7FH
có thể được truy xuất tự do dùng cách
đánh địa chỉ trực tiếp hoặc gián tiếp.
• RAM được địa chỉ hóa từng bit có địa chỉ
từ 20H đến 2FH và một phần trong các
thanh ghi chức năng đặc biệt. Các bit có
thể được đặt, xóa, and, or…với một lệnh
đơn.
• Có 4 bank thanh ghi, mỗi bank có 8 thanh
ghi từ R0 đến R7.
– Các bit RS1 và RS0 trong thanh ghi
PSW sẽ được dùng để chọn bank thanh
ghi tích cực
– Trạng thái mặc định thì các thanh ghi
này sẽ ở bank 0
– Lệnh sử dụng các thanh ghi này sẽ ngắn
và nhanh hơn các lệnh tương ứng sử
dụng địa chỉ trực tiếp
• Thanh ghi PSW (từ trạng thái chương
trình)
– Cờ carry (CY) được xác lập khi phép cộng có
nhớ ở bit 7 và phép trừ có mượn ở bit 7
• Ví dụ : thanh ghi A đang chứa giá trị FFH, sau khi
thực hiện lệnh ADD A,#1 thì kết quả của phép
tóan là 00H được chứa trong thanh ghi A đồng thời
bit CY của thanh ghi PSW sẽ được xác lập (đặt lên
mức 1)
– Cờ AC được xác lập khi phép cộng trên số
BCD có nhớ
– Cờ F0 là cờ có công dụng tổng quát dành cho
các ứng dụng của người lập trình
– Cờ báo tràn OV được xác lập khi có sự tràn
số học trong các phép toán cộng, trừ. Khi
thực hiện các phép toán với số không dấu thì
không cần quan tâm đến cờ này.
– Bit parity chẵn P: tổng số các bit 1 trong thanh
ghi A và bit P phải là một số chẵn
• Thanh ghi B:
– Được sử dụng cùng với thanh ghi A cho các
phép tóan nhân và chia
• Con trỏ dữ liệu DPTR :
– Được dùng khi truy xuất bộ nhớ ngoài. DPTR
dùng để xác định địa chỉ của bộ nhớ ngoài
cần truy xuất
• Các thanh ghi port
– P0, P1, P2, P3
– Tất cả các port này đều được địa chỉ hóa
từng bit
• Thanh ghi định thời gian
– 89C51 có 2 timer/counter 16 bit có chức năng
định thời gian và đếm sự kiện
– Timer 0 có 2 thanh ghi TH0 (byte cao) và TL0
(byte thấp)
– Timer 1 có 2 thanh ghi TH1 (byte cao) và TL1
(byte thấp)
– Hoạt động của timer được thiết lập bởi thanh
ghi chế độ TMOD và thanh ghi điều khiển
TCON
TẬP LỆNH
Chương 2
Các cách định địa chỉ
Định địa chỉ thanh ghi
Định địa chỉ trực tiếp
Định địa chỉ gián tiếp thanh ghi
Định địa chỉ tức thời
Tập lệnh
Nhóm lệnh di chuyển dữ liệu
Nhóm lệnh số học và luận lý
Nhóm lệnh điều khiển
Nhóm lệnh thực hiện trên bit
CÁC CÁCH ĐỊNH ĐỊA CHỈ
• Định địa chỉ thanh ghi (Rn):
– 89C51 có 8 thanh ghi làm việc được kí hiệu
từ R0 đến R7.
– Trong định địa chỉ thanh ghi, mã lệnh luôn
luôn có 3 bit để chỉ thị một thanh ghi
– Ví dụ: MOV A, R0
• Định địa chỉ trực tiếp (direct):
– Lệnh hiện hành sẽ cung cấp địa chỉ tuyệt đối
của ô nhớ sử dụng
– Lệnh có ít nhất 2 byte, trong đó địa chỉ ô nhớ
chiếm 1byte
– Ví dụ : MOV A, 40H
• Định địa chỉ gián tiếp thanh ghi (@Ri):
– i = 0,1
– Ri hoạt động như một con trỏ thanh ghi, nội
dung của Ri chỉ ra một ô nhớ trong Ram nội
– Mã lệnh có bit thấp nhất được dùng để xác
định con trỏ thanh ghi nào được sử dụng
– Ví dụ : MOV A, @R0