Bài giảng Vi điều khiển Biên soạn: Ths Lê Hoàng Anh
CHƯƠNG II : CẤU TRÚC PHẦN CỨNG
1. Sơ đồ khối chip 8051:
/INT0 /INT1
T2EX
Timer 2
T2
128 bytes RAM
Ti mer 2 Ti mer 1 Ti mer 0 Seria l po rt
Timer 1
T1
ROM 4K 8051 8K 8052
Interrupt control
Orther registers
128 bytes RAM
Timer 0
T0
CPU
Bus control
Serial port
Oscillator
I/O port
/EA RST
ALE /PSEN
TXD RXD
P0 P2 P1 P3
Chip 8051 có các đặc trưng như sau : 4KB ROM 128 byte RAM 4 port xuất nhập (I/O port) 8 bit 2 bộ định thời 16 bit Mạch giao tiếp nối tiếp Không gian nhớ chương trình ngoài 64K Không gian nhớ dữ liệu ngoài 64K Bộ xử lý bit 210 vị trí nhớ được định địa chỉ ,mỗi vị trí 1 bit Nhân/chia trong 4µs
Trang 6
Bài giảng Vi điều khiển Biên soạn: Ths Lê Hoàng Anh
VCC
0 4
C C V
19
XTAL1
33p
M 2 1
18
XTAL2
32 33 34 35 36 37 38 39
P0.7/AD7 P0.6/AD6 P0.5/AD5 P0.4/AD4 P0.3/AD3 P0.2/AD2 P0.1/AD1 P0.0/AD0
33p
30
ALE
29
PSEN
8 7 6 5 4 3 2 1
P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
31
EA
8051
9
RST
21 22 23 24 25 26 27 28
17 P3.7/RD 16 P3.6/WR 15 P3.5/T1 14 P3.4/T0 13 P3.3/INT1 12 P3.2/INT0 11 10 P3.1/TXD P3.0/RXD
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
D N G
0 2
2. Sơ đồ và chức năng các chân của chip 8051:
Thuật ngữ “8051” được dung để chỉ rộng rãi các chip của họ MSC-51
.Vi mạch tổng quát của họ MSC-51 là chip 8051 ,linh kiện đầu tiên của họ này được hãng Intel đưa ra thị trường . Hiện hay nhiều nhà sản xuất IC như Seimens , Advance Micro Devices ( AMD ) , Fujitsu , Philips , Atmel … được cấp phép làm nhà cung cấp thứ hai cho các chip của họ MSC-51. Ở Việt Nam các chip và các biến thể họ MSC-51 của hãng Atmel và Philips được sử dụng rộng rãi như : AT89C2051,AT89C4051,AT89C51,AT8C52,AT89S52,AT89S8252,AT89S 8253,P89C51RDxx,P89V51RDxx … Chip 8051 có 32 chân xuất / nhập ,tuy nhiên có 24 chân trong 32 chân này có 2 mục đích .Mỗi một chân này có thể hoạt động ở chế độ xuất/nhập , hoạt động điều khiển hoặc hoạtđộng như một đường địa chỉ / dữ liệu của bus địa chỉ / dữ liệu đa hợp. 2.1 PORT 0:
Port 0 ( các chân từ 32 - 39 ) được ký hiệu là P0.0 – P0.7 có hai công dụng. Trong các thiết kế có tối thiểu thành phần , port 0 được sử dụng làm nhiệm vụ xuất nhập , với các thiết kế lớn hơn có bộ nhớ ngoài , port 0 trở thành bus địa chỉ và bus dữ liệu đa hợp ( byte địa chỉ thấp )
Trang 7
Bài giảng Vi điều khiển Biên soạn: Ths Lê Hoàng Anh
2.2 PORT 1:
Port 1 (các chân từ 1 - 8 ) chỉ có một công dụng là xuất / nhập được ký hiệu là P1.0 – P1.7 và dùng để giao tiếp với thiết bị bên ngoài. Với chip 8052 ta có thể sử dụng P1.0 và P1.1 hoặc làm các đường xuất /nhập hoặc làm các ngõ vào cho mạch định thời thứ ba.
2.3 PORT 2:
Port 2 ( các chân từ 21-28 ) được ký hiệu là P2.0 – P2.7 có hai công dụng ,hoặc làm nhiệmvụ xuất/nhập hoặc là byte địa chỉ cao của bus địa chỉ 16 bit cho các thiết kế có bộ nhớ chương trình ngoài hoặc các thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệu .
2.4 PORT 3:
Port 3 ( các chân từ 10 - 17 ) được ký hiệu là P3.0 – P3.7 có hai công
Chức năng
dụng. Khi không hoạt động xuất/nhập , các chân của port 3 có nhiều chức năng riêng . Chức năng các chân của Port 3 và Port 1 Bit Tên chân Địa chỉ bit P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P1.0 P1.1
Chân nhận dữ liệu của port nối tiếp Chân phát dữ liệu của port nối tiếp Ngõ vào ngắt ngoài 0 Ngõ vào ngắt ngoài 1 Ngõ vào bộ định thời hoặc bộ đếm 0 Ngõ vào bộ định thời hoặc bộ đếm 1 Điều khiển ghi bộ nhớ dữ liệu ngoài Điều khiển đọc bộ nhớ dữ liệu ngoài Ngõ vào bộ đinh thời hoặc bộ đếm 2 Nạp lại hoặc thu nhận của bộ định thời 2
RxD TxD /INT0 /INT1 T0 T1 /WR /RD T2 T2EX
B0H B1H B2H B3H B4H B5H B6H B7H 90H 91H
2.5 /PSEN :
Chân cho phép bộ nhớ chương trình /PSEN ( Program store enable )
là tín hiệu xuất trên chân 29. Đây là tín hiệu điều khiển cho phép ta truy xuất bộ nhớ chương trình ngoài .Chân này thường nối với chân cho phép xuất /OE ( Output enable ) của EPROM hoặc ROM để cho phép đọc các byte lệnh.Tín hiệu /PSEN ở mức logic 0 trong suốt thời gian tìm nạp lệnh .Các mã nhị phân của chương trình hay Opcode được đọc từ EPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh IR của 8051 để được giải mã.Khi thực thi một chương trình chứa ở ROM nội ,chân /PSEN được duy trỳ ở mức logic không tích cực ( logic 1 ).
Trang 8
Bài giảng Vi điều khiển Biên soạn: Ths Lê Hoàng Anh
2.6 ALE :
Ngõ xuất tín hiệu cho phép chốt địa chỉ ALE ( address latch enable ) dùng để giải đa hợp ( demultiplexing ) bus dữ liệu và bus địa chỉ .Khi port 0 được sử dụng làm bus địa chỉ/dữ liệu đa hợp,chân ALE xuất tín hiệu để chốt địa chỉ ( byte thấp của địa chỉ 16 bit ) vào một thanh ghi ngoài trong suốt ½ đầu của chu kỳ bộ nhớ ( memory cycle ).Sau khi điều này đã được thực hiện, các chân của port 0 sẽ xuất/nhập dữ liệu hợp hệ trong suốt ½ thứ hai của chu kỳ bộ nhớ.Tín hiệu ALE có tần số bằng 1/6 tần số của mạch dao động bên trong chip vi điều khiển .
2.7 /EA :
Ngõ vào /EA có thể được nối với 5V ( logic 1 ) hoặc với GND ( logic
0 ).Nếu chân này nối lên 5V chip 8051 thực thi chương trình trong ROM nội. Nếu chân này được nối với GND ( và chân /PSEN cũng ở logic 0 ) thì chương trình cần được thực thi chứa ở bộ nhớ ngoài.
2.8 RESET ( RST ) :
Ngõ vào RST là ngõ vào xóa chính ( master reset ) của 8051 dùng để thiết lập lại trạng thái ban đầu cho hệ thống hay gọi tắt là reset hệ thống .Khi ngõ vào này được treo ở mức logic 1 tối thiểu 2 chu kỳ máy, các thanh ghi bên trong của 8051 được nạp lại các giá trị thích hợp cho việc khởi động lại hệ thống .
2.9 XTAL1 , XTAL2 :
Mạch dao động trên chip được ghép nối với mạch thạch anh bên ngoài
ở hai chân XTAL1 và XTAL2 , các tụ ổn định cũng đựoc yêu cầu kết nối, giá tri tụ do nhà sản xuất quy định ( 30p – 40p ). 3. Tổ chức bộ nhớ: Các chip vi điều được dùng làm thành phần trung tâm trong các thiết kế hướng điều khiển ,trong đó bộ nhớ có dung lượng giới hạn , không có ổ đĩa và hệ điều hành . Chương trình điều khiển phải thường trú trong ROM nên 8051 có không gian bộ nhớ riêng cho chương trình và dữ liệu , cả hai bộ nhớ chương trình và dữ liệu đều đặt trong chip , tuy nhiên ta có thể mở rộng bộ nhớ chương trình và bộ nhớ dữ liệu bằng cách sử dụng các chip nhớ bên ngoài với dung lượng tối đa là 64K . Bộ nhớ nội trong chip bao gồm ROM và RAM . RAM trên chip bao gồm vùng RAM đa chức năng ( general purpose RAM : 30H-7FH ) , vùng RAM với từng bit được định địa chỉ ( bit address locations gọi tắt là vùng
Trang 9
Bài giảng Vi điều khiển Biên soạn: Ths Lê Hoàng Anh
Bit address General purpose RAM
Byte address 7FH 80 byte 30H 2FH 7F 7E 7D 7C 7B 7A 79 78
72 71 70 77 76 2EH 75 74 73
6F 6E 6D 6C 6B 6A 69 68 2DH
62 61 60 67 66 2CH 65 64 63
5F 5E 5D 5C 5B 5A 59 58 2BH
52 51 50 57 56 2AH 55 54 53
4F 4E 4D 4C 4B 4A 49 48 29H
42 41 40 47 46 28H 45 44 43
3F 3E 3D 3C 3B 3A 39 38 27H RAM định địa chỉ bit : 20H-2FH ) , các dãy thanh ghi ( bank : 00H-1FH) và các thanh ghi chức năng đặc biệt SFR (spectial function register : 80H-FFH ) Bit addressable locations
26H 37 36 35 34 33 32 31 30
25H 2F 2E 2D 2C 2B 2A 29 28
24H 27 26 25 24 23 22 21 20
23H 1F 1E 1D 1C 1B 1A 19 18
22H 17 16 15 14 13 12 11 10
21H 0F 0E 0D 0C 0B 0A 09 08
20H 07 06 05 04 03 02 01 00
1F BANK 3 18
17 BANK 2 10
0F BANK 1 08
07
00 Default register bank for R0-R7 BANK 0
RAM
Trang 10
Bài giảng Vi điều khiển Biên soạn: Ths Lê Hoàng Anh
Byte address FF Bit address
F7 F6 F5 F4 F3 F2 F1 F0 B F0
E7 E6 E5 E4 E3 E2 E1 E0 ACC E0
PSW D0 D7 D6 D5 D4 D3 D2 D1 D0
- - - BC BB BA B9 B8
IP B8
B7 B6 B5 B4 B3 B2 B1 B0
P3 B0
IE A8 AF - - AC AB AA A9 A8
A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
99 Not bit addressable SBUF
98 9F 9E 9D 9C 9B 9A 99 98 SCON
90 97 96 95 94 93 92 91 90 P1
TH1 8D Not bit addressable
TH0 8C Not bit addressable
TL1 8B Not bit addressable
TL0 8A Not bit addressable
89 TMOD Not bit addressable
8F 8E 8D 8C 8B 8A 89
88 87 88 TCON PCON Not bit addressable
DPH 83 Not bit addressable
DPL 82 Not bit addressable
SP 81 Not bit addressable
P0 80 87 86 85 84 83 82 81 80
SPECIAL FUNCTION REGISTERS
Trang 11
Bài giảng Vi điều khiển Biên soạn: Ths Lê Hoàng Anh
Ex: MOV A,5FH MOV R0,5FH MOV A,@R0
Vùng RAM đa mục đích : Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H – 7FH . Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp .
Vùng RAM định địa chỉ bit :
8051 có 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong các byte ở địa chỉ từ 20H - 2FH và phần còn lại chứa trong các thanh ghi chức năng đặc biệt .
Các dãy thanh ghi :
Ex : MOV A,R5 = MOV A,05H
32 vị trí thấp nhất của bộ nhớ nội chứa các dãy thanh ghi . Các lệnh của 8051 hỗ trợ 8 thanh ghi từ R0 – R7 thuộc dãy 0 ( bank 0 ) . Đây là dãy mặc định sau khi reset hệ thống . Các thanh ghi này ở các địa chỉ từ 00H – 07H . Các lệnh sử dụng các thanh ghi từ R0 – R7 là các lệnh ngắn và thực hiện nhanh hơn so với các lệnh tương đương sử dụng kiểu định địa chỉ trực tiếp. Các giá trị thường được sử dụng nên chứa ở một trong các thanh ghi này . Dãy thanh ghi đang được sử dụng được gọi là dãy thanh ghi tích cực . Dãy thanh ghi tích cực có thể được thay đổi bằng cách thay đổi các bit chọn dãy trong thanh ghi PSW . 4. Các thanh ghi chức năng đặc biệt (SFR):
Các thanh ghi nội của 8051 được cấu hình thành một phần của RAM trên chip , do vậy mỗi thanh ghi cũng có một địa chỉ . Cũng như các thanh ghi từ R0 – R7 ta có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của RAM nội từ địa chỉ 80H – FFH . Lưu ý không phải tất cả 128 địa chỉ từ 80H – FFH đều được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa .
Trang 12
Bài giảng Vi điều khiển Biên soạn: Ths Lê Hoàng Anh
Thanh ghi PSW có địa chỉ là D0H chứa các bit trang thái có chức
4.1 Từ trạng thái chương trình PSW ( program status word ) : năng được tóm tắt trong bảng sau: Mô tả bit
Bit PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 Ký hiệu CY AC F0 RS1 RS0 Địa chỉ D7H D6H D5H D4H D3H
Cờ nhớ Cờ nhớ phụ Cờ 0 Chọn dãy thanh ghi ( bit 1) Chọn dãy thanh ghi ( bit 0 ) 00 = bank 0 địa chỉ từ 00H – 07H 01 = bank 1 địa chỉ từ 08H – 0FH 10 = bank 2 địa chỉ từ 10H – 17H 11 = bank 3 địa chỉ từ 18H – 1FH Cờ tràn Dự trữ Cờ kiểm tra chẵn lẻ OV - P D2H D1H D0H
Con trỏ Stack SP ( stack pointer ) là một thanh ghi 8 bit ở địa chỉ 81H.
PSW.2 PSW.1 PSW.0 4.2 Thanh ghi B : Thanh ghi B ở địa chỉ F0H được dùng chung với thanh chứa A trong các phép toán nhân (MUL) , chia (DIV) .Các bit của thanh ghi B được định địa chỉ từ F0H-F7H. 4.3 Con trỏ Stack : SP chứa địa chỉ của dữ liệu hiện đang ở đỉnh của Stack . Các lệnh liên quan đến Stack bao gồm lệnh cất dữ liệu vào Stack ( PUSH ) và lệnh lấy dữ liệu ra khỏi Stack ( POP ). Việc cất dữ liệu vào Satck làm tăng thanh ghi SP trước khi ghi dữ liệu và việc lấy dữ liệu ra Stack sẽ làm giảm thanh ghi SP. Nếu ta không khởi động SP , nội dung mặc định của thanh ghi này là 07H .Các lệnh PUSH và POP sẽ cất dữ liệu vào stack và lấy dữ liệu từ stack , các lệnh gọi chương trình con ( ACALL , LCALL ) và lệnh trở về ( RET , RETI ) cũng cất và phục hồi nội dung của bộ đếm chương trình PC ( program counter ) . 4.4 Con trỏ dữ liệu DPTR :
Con trỏ dữ liệu DPTR ( data pointer ) được dùng để truy xuất bộ nhớ chương trình ngoài hoặc bộ nhớ dữ liệu ngoài . DPTR là thanh ghi 16 bit có địa chỉ là 82H ( DPL , byte thấp ) và 83H ( DPH , byte cao ) .
Ex: MOV A,#55H
MOV DPTR,#1000H MOV @DPTR,A
Trang 13
Bài giảng Vi điều khiển Biên soạn: Ths Lê Hoàng Anh
4.5 Các thanh ghi Port :
Các port xuất nhập của 8051 bao gồm port 0 tại địa chỉ 80H , port 1
tại địa chỉ 90H , port 2 tại địa chỉ A0H và port 3 tại địa chỉ 0BH. Các port 0 , 2 và 3 không được dùng để xuất/nhập nếu ta sử dụng thêm bộ nhớ ngoài hoặc nếu có một số đặc tính của 8051 được sử dụng ( như là ngắt , port nối tiếp ) . Tất cả các port đều được định địa chỉ từng bit nhằm cung cấp các khả năng giao tiếp mạnh . 4.6 Các thanh ghi định thời :
8051 có hai bộ đếm/định thời ( timer/counter ) 16 bit để định các khỏang thời gian hoặc để đếm các sự kiện .Bộ định thời 0 có địa chỉ 8AH ( TL0,byte thấp ) và 8CH ( TH0,byte cao ) , bộ định thời 1 có địa chỉ 8BH ( TL1 ,byte thấp ) và 8DH (TH1,byte cao ) . Họat động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời TMOD ( timer mode register ) ở địa chỉ 89H và thanh ghi điều khiển định thời TCON ( timer control regsiter ) ở địa chỉ 88H. 4.7 Các thanh ghi port nối tiếp :
Bên trong 8051 có một port nối tiếp để truyền thông với các thiết bị
nối tiếp như các thiết bị đầu cuối hoặc moderm , hoặc để giao tiếp với các IC khác. Một thanh ghi đựơc gọi là bộ đệm dữ liệu nối tiếp SBUF ( serial data buffer ) ở địa chỉ 99H lưu trữ dữ liệu truyền đi và dữ liệu nhận về .Việc ghi lên SBUF sẽ nạp dữ liệu để truyền và việc đọc SBUF sẽ lấy dữ liệu đã nhận được . Các chế độ hoạt động khác nhau được lập trình thông qua thanh ghi điều khiển port nối tiếp SCON ( serial port control register ) ở địa chỉ 98H . 4.8 Các thanh ghi ngắt :
8051 có một cấu trúc ngắt với hai mức ưu tiên và năm nguyên nhân
ngắt . Các ngắt bị vô hiệu hóa sau khi reset hệ thống và sau đó được cho phép ngắt bằng cách ghi vào thanh ghi cho phép ngắt IE ( interrupt enable register ) ở địa chỉ A8H. Mức ưu tiên ngắt được thiết lập qua thanh ghi ưu tiên ngắt IP ( interrupt priority register ) ở địa chỉ B8H.Cả hai thanh ghi này đều được định địa chỉ từng bit.
Trang 14
Bài giảng Vi điều khiển Biên soạn: Ths Lê Hoàng Anh
5. Các cải tiến của 8052:
Các vi mạch 8052 ( và các phiên bản CMOS ) có hai cải tiến so với 8051. Một là có thêm 128 byte RAM trên chip từ địa chỉ 80H-FFH . Điều này không xung đột với các thanh ghi chức năng đặc biệt (có cùng địa chỉ) vì 128 byte Ram thêm vào chỉ có thể truy xuất bằng cách dùng kiểu định địa chỉ gián tiếp .
Ex: MOV A,#100
MOV R0,#0F0H ( Trùng với địa chỉ của thanh ghi B ) MOV A,@R0
Cải tiến thứ hai là có thêm bộ định thời 16 bit Timer 2 6. Hoạt động Reset:
8051 được reset bằng cách giữ chân RST ở mức cao tối thiểu 2 chu kỳ
máy và sau đó chuyển về mức thấp. RST có thể được tác động tay hoặc đựơc tác động khi cấp nguồn bằng cách dùng một mạch RC.
Trạng thái của các thanh ghi sau khi reset như sau :
Thanh ghi
Nội dung
Bộ đếm chương trình Thanh chứa A Thanh ghi B PSW SP DPTR Port 0-3 IP
IE
Các thanh ghi định thời SCON SBUF PCON (HMOS) PCON (CMOS)
0000H 00H 00H 00H 07H 0000H FFH xxx00000B (8051) xx000000B (8052) 0xx00000B (8051) 0x000000B (8052) 00H 00H 00H 0xxxxxxxB 0xxx0000B
Trang 15