Tải bản đầy đủ (.pdf) (27 trang)

Bài giảng Vi điều khiển: Chương 1 - Cấu trúc phần cứng của AT89C51

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 (820.38 KB, 27 trang )

MÔN HỌC VI ĐIỀU KHIỂN

  MỤC TIÊU
- Nắm được cấu trúc phần cứng VI Điều
Khiển AT89C51
- Tập lệnh hợp ngữ
- Khung chương trình hợp ngữ viết cho
AT89C51
- Viết chương trình ứng dụng


NOI DUNG MON HOẽC
D a ó n n h a ọ p
Ch ử ụ n g 1 :Ca ỏ u t ru ự c p h a n c ử ự n g c u ỷ a
AT8 9 C5 1
Ch ử ụ n g 2 :Ta ọ p le ọ n h AT8 9 c 5 1
Ch ử ụ n g 3 :la ọ p t rỡn h h ụ ùp n g ử ừ
Ch ử ụ n g 4 :Bo ọ ủ ũ n h t h ụ ứ i( t im e r)
Ch ử ụ n g 5 :N g a ộ t ( In t e rru p t )
Ch ử ụ n g 6 :P o rt n o ỏ it ie ỏ p ( s e ria lp o rt )
Ch ử ụ n g 7 :Gia o t ie ỏ p


TỔNG QUAN

- Sơ lược quá trình hình thành quá
phát triển của VĐK
-Từ Vi xử lý đến Vi đĐiều khiển
- Cấu trúc chung của một Vi đĐiều
khiển



Chương 1: CẤU TRÚC PHẦN CỨNG
INT 1.
INT0.
Timer 2(8052/8032)
Timer1
Timer0
serial port

interrupt
control

other register

128 byte RAM
8032/8052

ROM
0K-8031/8032
4K-8051
8K-8052

Time 2
8032/8052

Time 1

128 byte RAM

Time 0


CPU

oscillatior

bus control

EA
RST

I/O port

ALE
PSEN

P0
P1
P2
address/data

Hình 1.9 Cấu trúc bên trong 89C51

serial port

P3

TXD*

RXD*



ĐẶC ĐIỂM PHẦN CỨNG
- 4 KB ROM nội.
- 128 Byte RAM nội.
- 4 Port xuất /nhập I/O 8 bit.
- 1 bộ giao tiếp Giao tiếp nối tiếp.
- 2 bộ đònh thời 16 bit
- 64 KB bộ nhớ chương trình ngoài
( bộ nhớ chương trình = program =
code memory)
- 64 KB bộ nhớ dữ liệu ngoàiRAM
ngoài ( Bộ nhớ dữ liệu = Data)
- 210 vò trí nhớ có thể đònh đòa
chỉ bit.


I. CPU

Gồm ALU và Control unit được
đóng gói. Đây là CPU 8 bit.
Chúng ta chỉ nắm các chế độ
đòa chỉ mà CPU cung cấp (phần
tập lệnh)


II. I/O (INPUT/OUTPUT)


1. Chức năng các chân
+ Port 0 : P0.0 – P0.7: Port I/O 8 bit có 2 chức năng

8 đường dữ liệu: D0 – D7
8 đường đòa chỉthấp: A0 – A7 ( khi dùng với bộ nhớ
mở rộng bên ngoài )
+ Port 1 : 8 chân : P1.0 – P1.7 : Port I/O 8 bit : dùng để giao tiếp
với các thiết bò bên ngoài.
+ Port 2 : 8 chân P2.0 – P2.7 : Port I/O 8 bit: có 2 chức năng
8 đường dữ liệu: D0 – D7
8 đường đòa chỉcao: A8 – A15 ( khi dùng với bộ nhớ mở
rộng bên ngoài )
+ Port 3 : P3.O – P3.7 : Port I / O 8 bit: có 2 chức năng
Port I / O 8 bit
Các chân điều khiển : T0, T1, WR,RD, INT0, INT1,
TxD, RxD


5V

: Dùng để khởi động lại hệ thống

10U F

100
S1

8K2

0

Hình 1.2  Mạch reset


XTAL1 và XATL2 : dùng để ghép với thạch anh bên ngòai.
Tần số danh đònh của thạch anh là 12Mhz (đôi lúc dùng 11.059
Mhz)
ALE (Cho phép chốt đòa chỉ Address Latch Enable) :
Chân này xuất tín hiệu cho phép chốt đòa chỉ(byte thấp)
của đòa chỉngoài vào 1 thanh ghi ngoài(bộ đệm). Chân này
được nối với chân cho phép của vi mạch chốt bên ngoài.


89C51

Memmory
   P0

D0­D7

74CH373
D             Q
ALE

A0­A7

G

  P2

A8-A15

        


Hình 1.3 Kết nối bộ nhớ ngòai

- ALE = 1 : Port 0 trở thành Address. P0.0 – P0.7 =
A0 - A7 ( byte đ/c thấp )
- ALE = 0 : Port 0 trở thành Port data.P0.0 – P0.7 =
D0 - D7
- Nếu ta không dùng bộ nhớ ngoài thì chân
ALE nối đất.


      : (cho phép truy xuất ngòai External Access)  dùng cho cả 
EA
ROM và RAM: 

EA
= 0: Cho phép truy xuất bộ nhớ ngoài P2.0
– P2.7 = A8 – A15 ( byte đòa chỉ cao)
EA = 1 : sử dụng 4KROM + 128 byte RAM nội
EA = 21 V : Ghi chương trình vào ROM nội (lập
PSEN trình)
        (cho phép bộ nhớ chương trình Program Store Enable)
Dùng cho ROM: 
Cho phép bộ nhớ chương trình ngoài. Nối với Chân của
PSEN
Eprom
PSEN
=0: Cho phép bộ nhớ chương trình ngoài.
ù : Các PIN=của
89C51
hướng.

Đểở
truy
xuất
ta phải :
1 : Khi
thựclà
thi2chương
trình
Rom
nội.
c khi xuất 1 bit ta phải xóa bit đó =0.
c khi nhập ta phải set bit đó =1.


III. BỘ NHỚ (MEMORY)
89C51 có 2 loại bộ nhớ : bộ nhớ trong (ON-CHIP
Memmory) và bộ nhớ ngoài (External Memmory)
Bộ nhớ nội : Ở bên trong chip (On-Chip Memory) ROM nội và
RAM nội. ROM nội (4K) dùng để chứa chương trình khi ta nạp
chương trình. RAM nội (128 byte) dùng để chứa dữ liệu.
Vùng stack thường trú trong RAM trên chip (Ram nội).
Bộ nhớ ngoài : ROM ngoài và RAM ngoài.
– ROM ngoài : Nằm bên ngoài chip, thường
dùng EPROM (64 K)
– RAM ngoài : Nằm bên ngoài chip, thường
dùng RAM tónh (64K). Khi dùng RAM ngoài thì
việc truy xuất không được linh hoạt, và tốc
tộ truy xuất thấp.Tuy nhiên nó cho ta khả
năng là tăng dung lượng RAM, ROM.



1 .  Bo ä  n h ơ ù  n o ä i   
ROM: 4K chứa chương trình
RAM: có128 byte bao gồm Các dãy thanh ghi,
vùng RAM đònh đòa chỉ bit, vùng RAM đa chức
năng, các thanh ghi có chức năng đặt biệt
FFH
(SFR) 7FH
Vùng Ram
Đa dụng

Các thanh
ghi có chức
năng đặc
biệt

30H
2FH
Vùng Ram
Đònh đòa
chỉ bit
20H
1FH
00H

Các bank
Ram
80H

Tóm tắt bộ nhớ dữ liệu trên chip



Các bank RAM  :
Có đòa chỉtừ 00 – 1FH. 32 byte được chia làm 4 bank. Bank 0,
bank 1, bank 2 và bank 3
8051 hổ trợ 8 thanh ghi R0, R1, …,R7. 1 thanh ghi là 1 byte nhớ
RAM. Được xem như 1 số thanh ghi phụ. Mặc đònh 8 thanh ghi phụ
thuộc bank 0
8 thanh ghi R0 - R7 thuộc bank nào được thể hiện qua 2 bit
RS1 RS0 trong thanh ghi PSW
RS1
=1
RS0
= 1 chọn bank
RS1
RS0 Bank được chọn
3
0
0
Bank 0
Các lệnh sử dụng các 
0
1
1
thanh ghi R0 – R7 thực hiện 
nhanh hơn những lệnh tương 
1
0
2
đương dùng sự đònh đòa chỉ trực 

1
1
3
tiếp


• Vu ø n g  RAM  đ /c  h o a ù  b it  (  Bit  Ad d re s a b le  
Lo c a t io n  )
• Có 210 vò trí . Trong đó ( 20h – 2Fh ) = 16
byte* 8 bit = 128 bit. Phần còn lại chứa
trong các thanh ghi chức năng đặc biệt.
Trong vùng nhớ này ta có thể tác động
đến từng bit. Đây là 1 đặt trưng mạnh
của các bộ vi điều khiển. Các đòa chỉ
trong vùng nhớ này có thể truy xuất
từng byte hay từng bit tùy theo từng lệnh
cụ thể.
• Ví dụ :
• SETB
00h ; bit có đ/c bit 00h thuộc đòa
chỉ byte 20h được set = 1
• RAM đ a  d u ïn g :
• 80 byte có đòa chỉ từ 30h – 7Fh : dùng
để truy xuất thường xuyên với tần số
cao, làm stack.


Các thanh ghi chức năng đặc biệt SFR (Special Function
Register):
Thanh ghi là 1 byte nhớ hay 1 từ nhớ. Có một đòa chỉ,

thường được gán cho 1 cái tên gắn liền với 1 hoặc vài chức
năng cụ thể.
Các thanh ghi nội là 1 phần của RAM nội . Do đó mỗi
thanh ghi có 1 đòa chỉ. Có 21 thanh ghi có chức năng đặc biệt.
Trong đó có 1 số thanh ghi có khả năng đònh đòa chỉbit.
Hầu hết các thanh ghi chức năng đặc biệt được truy
xuất bằng cách sử dụng sự đònh đòa chỉđòa chỉtrực tiếp.


+4 thanh ghi port P0, P1, P2, P3 : dùng cho các port xuất
nhập P0, P1, P2 và P3
+6 thanh ghi cho time TMOD, TCON, TH0, TL0, TH1, TL1:
dùng cho timer0 và timer 1
+2 thanh ghi cho port nối tiếp SBUF, SCON : dùng cho port
nối tiếp)
+2 Thanh ghi dùng cho ngắt IE, IP : dùng cho ngắt
+1 thanh ghi con trỏ dữ liệu ngòai DPTR: là thanh ghi 2
buyte DPH +DPL dùng truy xuất bộ nhớ ngòai
+1 thanh ghi tích lũy A : là thanh ghi được dùng nhiều
nhất. Chứa kết quả các phép tóan.
+1 Thanh ghi phụ B : Dùng chung với thanh chứa A trong
các lệnh nhân và chia. Ngoài ra thanh ghi B được dùng như
thanh ghi phụ R
+1thanh ghi bộ đếm chương trình PC (Program Counter) :
Là thanh ghi 2 byte, chỉra đòa chỉcủa lệnh tiếp theo được thực
hiện. Đối với 89c51, khi bắt đầu thì đòa chỉcủa lện đầu tiên
là 0000h. Ta không thể thay đổi giá trò trong bộ đếm chương
trình.



+ 1 thanh ghi điều khiển nguồn PCON (Power
Control) : dùng cho việc tăng đôi tốc độ baud
port nối tiếp và thiết lập chế độ giảm nguồn
(power down)
+ 1 thanh ghi con trỏ ngăn xếp SP (Stack
Pointer): Nội dung của thanh ghi SP chính là đỉnh
hiện hành của Stack ( vùng stack có 32 byte. Nếu ta 
không khởi tạo stack thì nó mặc đònh là 07h). Tốt nhất là 
ta khai báo vùng stack lớn hơn 2FH.
+ 1 thanh ghi từ trạng thái chương trình PSW
(Program Status Word)



Đòa chỉ byte – đòa chỉ bit
A8: Đ/c byte của thanh ghi IE = đ/c bit bo ( bit LSB
) của IE
MOV A, 26H; chuyển 1 byte dữ liệu từ đòa chỉ
byte ( of Ram ) 26H vào thanh ghi tích lũy A
SETB 26H; lập bit có đ/c bit là 26, ( tức bit b6
của đ/c byte 24 lên 1
Ta có 3 cách để xác đònh đòa chỉ bit trong 1 câu lệnh:
- đòa chỉđã biết trước
SETB 0E7H
- Sử dụng toán tử dot (.) giữa đòa chỉbyte và vò trí bit
SETB ACC.7
- Sử dụng ký hiệu tiền đònh nghóa JNB TI,$


2. Bộ nhớ 

ngòai 89C51 cho phép mở rộng bộ nhớ chương trình ngoài 
64K ROM, bộ nhớ dữ liệu ngoài RAM 64K. ROM và RAM
ngoài được thêm vào khi cần. Khi dùng bộ nhớ ngoài, bộ
nhớ trong bò vô hiệu hoá.
Khi bộ nhớ ngòai được sử dụng, port 0 không làm
nhiệm vụ của port xuất nhập mà trở thành byte đòac chỉthấp
A0-A7 và byte dữ liệu D0-D7 đa hợp. Port 2 được dùng làm byte
đòa chỉcao
Memory cycle

A8-A15

AD0-AD7

Address

Address

Data


Trong ½ chu kỳ đầu của chu kỳ bộ nhớ, byte thấp của
đòa chỉđược cung cấp bởi P0 và được chốt nhờ tín hiệu ALE.
Mạch chốt 74CH373 giữ cho byte thấp của đòa chỉổn đònh trong
cả chu kỳ bộ nhớ. trong ½ chu kỳ sau của bộ nhớ, P0 được sử
dụng làm bus dữ liệu và dữ liệu được đọc hay ghi.
Các IC giao tiếp ngọai vi cũng có thể được thêm vào
để mở rộng khả năng xuất nhập. Chúng trở thành 1 phần
của không gian bộ nhớ dữ liệu ngòai.



TRUY XUẤT BỘ NHỚ NGÒAI
Truy xuất bộ nhớ chương trình 
89C51
ngòai
   
P0

EA

ALE

74CH373
D             Q

EPROM
D0­D7
A0­A7

G
A8­A15

  
P2

,

  

      


OE

PSEN

Hình 1.4 Kết nối bộ nhớ chương trình
ngòai

Bộ nhớ chương trình ngoài là bộ nhớ chỉ đọc,
được cho phép bởi tín hiệu PSEN, khi PSEN = 0 cho
phép thực thi chương trình chứa ở bộ nhớn ROM
ngòai


Truy xuất bộ nhớ dữ liệu 
ngòai Bộ nhớ dữ liệu ngoài là bộ nhớ đọc/ghi được cho
phép bởi các tín hiệu RD và WR ở các chân P3.7 và P3.6.
Lệnh dùng để truy xuất bộ nhớ dữ liệu ngoài là MOVX, sử
dụng con trỏ dữ liệu 16 bit DPTR hoặc R0, R1 làm thanh ghi
chứa đòa chỉ
.
89C51
RAM
D0-D7
P0
EA

D

74CH373

Q

A0-A7

G
ALE
A8-A15
P2

RD

OE

WR

W


Ví dụ : Gửi giá trò 50 ra vùng RAM bên ngoài có
đ/c 16 bit
50 là 1234h
RAM
A
DPL

34h

DPH

12h


RAM

1234h

89c51

Nạp giá trò 50 vào thanh ghi A
MOV
A, # 50
Cho thanh ghi DPTR chứa đòa chỉ 1234h
MOV
DPTR , # 1234h
Gửi ra :
MOVX @ DPTR, A
Dữ liệu phải để trong thanh ghi A; Đòa chỉ
ngoài phải để trong thanh ghi DPTR.


×