cẤu trÚc vi xỬ lÝ vÀ vi ĐiỀu khiỂn
DESCRIPTION
CẤU TRÚC VI XỬ LÝ VÀ VI ĐIỀU KHIỂN. PHAN HẢI PHONG Khoa Vật Lý – Trường ĐH Khoa Học Huế [email protected]. Mở đầu. 1971: tập đoàn Inter đã giới thiệu 8080. Sau đó các tập đoàn như Motorola, MOS-Technology, Zilog cũng giới thiệu các bộ vi xử lý tương tự: 6800, 6520, Z80... - PowerPoint PPT PresentationTRANSCRIPT
PHAN H I PHONGẢKhoa V t Lý – Tr ng ĐH Khoa H c Huậ ườ ọ ế
Mở đầu 1971: t p đoàn Inter đã gi i thi u 8080. ậ ớ ệ
Sau đó các t p đoàn nh Motorola, MOS-Technology, Zilog cũng ậ ưgi i thi u các b vi x lý t ng t : 6800, 6520, Z80...ớ ệ ộ ử ươ ự
1976: Inter gi i thi u b vi đi u khi n 8748, chip đ u ớ ệ ộ ề ể ầtiên trong h VĐK MCS-48.ọ
8748 bao g m: 1 CPU, 1Kb EPROM, 64 Byte RAM, 27 chân xu t ồ ấnh p và m t b đ nh th i 8 bit. ậ ộ ộ ị ờ
1980: Inter công b 89C51, VĐK đ u tiên c a h MSC-ố ầ ủ ọ51.
89C51 ch a trên 60000 transistor bao g m 4Kb ROM, 128 byte ứ ồRAM, 32 đ ng IO, 1 port n i ti p, 2 b đ nh th i 16 bit. ườ ố ế ộ ị ờ
04/20/2304/20/23 22
Ch ng Iươ
04/20/2304/20/23 33
Sơ đồ khối một hệ vi xử lý
04/20/2304/20/23 44
Vi xử lý (μP)
Th c hi n các thao tác tính toán trên d li uự ệ ữ ệ Đ a ra tín hi u đi u khi n ho t đ ng cho toàn b h ư ệ ề ể ạ ộ ộ ệ
th ngố G m các m ch lô-gíc th c hi n liên t c vi c n p l nh và ồ ạ ự ệ ụ ệ ạ ệ
th c hi n l nhự ệ ệ Ho t đ ng theo m t chu i các l nh máy có s n -> ạ ộ ộ ỗ ệ ẵ
ch ng trìnhươ
04/20/2304/20/23 55
Phân loại vi xử lý
Theo s bit có th đ c x lý đ ng th i: 4 bit, 8 bit, 16 ố ể ượ ử ồ ờbit, 32 bit…
Theo t p l nh: ậ ệ t p l nh ph c h p (CISC: Complex Instruction Set Computer) ậ ệ ứ ợ t p l nh thu g n (RISC: Reduced Instruction Set Computer)ậ ệ ọ
Theo ki n trúc:ế ki n trúc Von Neumann: vùng nh d li u và ch ng trình ế ớ ữ ệ ươ
không đ c phân chia đ c l p (truy c p trên cùng m t đ ng ượ ộ ậ ậ ộ ườđ a ch )ị ỉ
ki n trúc Harvard: vùng nh cho ch ng trình và cho d li u ế ớ ươ ữ ệđ c phân bi t rõ ràngượ ệ
04/20/2304/20/23 66
Cấu trúc một vi xử lý
Lu ng d li u (Datapath): l u gi và x lý (tính toán) ồ ữ ệ ư ữ ửd li u, tác đ ng tr c ti p trên thông tinữ ệ ộ ự ế
Đ n v đi u khi n (Control Unit): đ a ra nh ng tín hi u ơ ị ề ể ư ữ ệđi u khi n đ đi u khi n ho t đ ng c a Datapathề ể ể ề ể ạ ộ ủ
o Hai thành ph n này cùng đ c xây d ng t các m ch ầ ượ ự ừ ạdãy và m ch lô-gíc t h pạ ổ ợ
04/20/2304/20/23 77
Kiến trúc chung của vi xử lý
04/20/2304/20/23 88
Cấu trúc Datapath
Kh i tính toán s h c lô-gíc (ALU: Arithmetic Logic ố ố ọUnit): x lý thông tin (th c hi n các phép toán trên d ử ự ệ ữli u)ệ
Kh i nh : l u tr d li u đ u vào, đ u ra, các bi n t m ố ớ ư ữ ữ ệ ầ ầ ế ạth i, các tham s …ờ ố
Đ ng bus d li u: v n chuy n d li u gi a các ph n t ườ ữ ệ ậ ể ữ ệ ữ ầ ửnh và t các ph n t nh đ n kh i tính toánớ ừ ầ ử ớ ế ố
04/20/2304/20/23 99
Khối tính toán số học và logic
G m:ồ B c ngộ ộ B trộ ừ B ghi d chộ ị Kh i th c hi n phép toán lô-gícố ự ệ B nhân chiaộ
Các m ch tính toán là m ch lô-gíc t h p (không ch a ạ ạ ổ ợ ứcác ph n t nh ) => đ ng vào c a các toán h ng và ầ ử ớ ở ườ ủ ạ ởl i ra cho k t qu /tr ng thái luôn ph i có thêm các ố ế ả ạ ảm ch ch t đ l u các giá tr này.ạ ố ể ư ị
04/20/2304/20/23 1010
Khối nhớ
Các thanh ghi (register) chung: l u d li u t m th iư ữ ệ ạ ờ Các thanh ghi có ch c năng đ c bi t:ứ ặ ệ
thanh ghi l nh (instruction register): l u tr mã l nh c a l nh ệ ư ữ ệ ủ ệ(opcode)
thanh ghi b đ m ch ng trình (Program counter): cung c p ộ ế ươ ấđ a ch hi n t i mà vi x lý đang truy nh p t i b nh ch ng ị ỉ ệ ạ ử ậ ớ ộ ớ ươtrình
thanh ghi con tr ch a đ a ch d li u (DPTR: Data Pointer)ỏ ứ ị ỉ ữ ệ đ a ch vùng ngăn x p (SP: Stack Pointer)ị ỉ ế
Các thanh ghi đ c đánh đ a ch và đ c qu n lý nh ượ ị ỉ ượ ả ưm t vùng nh đ c bi t.ộ ớ ặ ệ
04/20/2304/20/23 1111
Cấu trúc và hoạt động của đơn vị điều khiển
Đ c th c thi b ng m t máy tr ng thái (SM), k t h p ượ ự ằ ộ ạ ế ợv i các m ch logic đi u khi n.ớ ạ ề ể
Tín hi u ra c a SM: đi u khi n Datapathệ ủ ề ể Tín hi u vào c a SM: các l nh đi u khi nệ ủ ệ ề ể
L nh đ c l u trong b nh ch ng trìnhệ ượ ư ộ ớ ươ Quá trình th c thi m t l nh:ự ộ ệ
N p l nhạ ệ Gi i mã l nhả ệ Th c hi n l nhự ệ ệ
04/20/2304/20/23 1212
Quá trình nạp lệnh
Đ n v đi u khi n đ a n i dung c a b đ m ch ng ơ ị ề ể ư ộ ủ ộ ế ươtrình lên bus đ a ch c a b nh ch ng trình và cho ị ỉ ủ ộ ớ ươphép đ c b nh này.ọ ộ ớ
D li u đ c đ c ra t b nh ch ng trình sẽ đ c ữ ệ ượ ọ ừ ộ ớ ươ ượđ a lên bus l i vào c a vi x lý. D li u này chính là mã ư ố ủ ử ữ ệl nh (opcode).ệ
Opcode đ c ch t vào thanh ghi l nh c a vi x lý và b ượ ố ệ ủ ử ộđ m ch ng trình đ c tăng lên m t đ n v , tr t i byte ế ươ ượ ộ ơ ị ỏ ớmã ch ng trình ti p theo.ươ ế
04/20/2304/20/23 1313
Hoạt động bus cho chu kì tìm nạp lệnh
04/20/2304/20/23 1414
N
Opcode
Thanh ghi lệnh
Bộ đếm chương trình
Bus địa chỉ
Bus dữ liệu
Opcode N
N+1
N-1
N+2
RAM
Clock
Read
Bộ nhớ bán dẫn
Các ch ng trình và d li u đ c l u gi trong b nh . ươ ữ ệ ượ ư ữ ộ ớ Các b nh đ c truy xu t tr c ti p b i CPU: ROM, ộ ớ ượ ấ ự ế ở
RAM, flash. RAM:
B nh có th đ c/ghi ộ ớ ể ọ M t n i dung khi m t ngu n nuôi.ấ ộ ấ ồ Ch ng trình và d li u c a ng i dùng sẽ đ c n p vào RAM ươ ữ ệ ủ ườ ượ ạ
đ th c thi.ể ự ROM:
B nh ch đ c ộ ớ ỉ ọ Không m t n i dung khi không có ngu n nuôi. ấ ộ ồ
Flash: B nh đ c/ghi, không m t d li u khi m t ộ ớ ọ ấ ữ ệ ấngu n nuôiồ
04/20/2304/20/23 1515
BUS: địa chỉ, dữ liệu và điều khiển
Bus: t p các dây d n mang nh ng thông tin có cũng m t ậ ẫ ữ ộm c đích. ụ
Vi c truy c p đ n m t m ch quanh CPU s d ng ba bus: ệ ậ ế ộ ạ ử ụbus đ a ch , bus d li u, bus đi u khi n.ị ỉ ữ ệ ề ể
Thao tác đ c/ghi:ọ CPU xác đ nh v trí c a d li u b ng cách đ t m t đ a ch lên ị ị ủ ữ ệ ằ ặ ộ ị ỉ
bus đ a chị ỉ Xu t tín hi u đi u khi n lên bus đi u khi n đ xác đ nh thao ấ ệ ề ể ề ể ể ị
tác là đ c hay ghiọ L y byte d li u t b nh đ a ch xác đ nh, đ t byte này lên ấ ữ ệ ừ ộ ớ ở ị ỉ ị ặ
bus d li u.ữ ệ CPU đ c d li u và đ a vào các thanh ghi n i ho c CPU xu t d ọ ữ ệ ư ộ ặ ấ ữ
li u lên bus d li uệ ữ ệ
04/20/2304/20/23 1616
CPUCPU
Bus địa chỉ
Bus dữ liệu
Bus điều khiển
RAM ROMMạch giao tiếp
Thiết bị ngoại vi
Cấu trúc chung của một VĐK
04/20/2304/20/23 1717
Ch ng IIươ
04/20/2304/20/23 1818
Tổng quát
Vi m ch đ c tr ng c a h MSC-51 là chip 89C51. ạ ặ ư ủ ọ 4 KB b nh Flashộ ớ 128 byte RAM 4 port xu t nh p 8 bitấ ậ 2 b đ nh th i 16 bitộ ị ờ M ch giao ti p n i ti p UARTạ ế ố ế Không gian nh ch ng trình ngoài 64Kbyteớ ươ Không gian nh d li u ngoài 64Kbyteớ ữ ệ B x lý bitộ ử 210 v trí nh đ c đánh đ a ch , m i v trí 1 bitị ớ ượ ị ỉ ỗ ị
04/20/2304/20/23 1919
Sơ đồ chân của VĐK 89C51
04/20/2304/20/23 2020
CPU
On-chip RAM
On-chip ROM for program code
4 I/O Ports
Timer 0
Serial PortOSC
Interrupt Control
External interrupts
Timer 1
Timer/Counter
Bus Control
TxD RxDP0 P1 P2 P3
Address/Data
Counter Inputs
Sơ đồ khối tổng quát của chip 89C51
04/20/2304/20/23 2121
Sơ đồ khối chi tiết của chip 89C51
04/20/2304/20/23 2222
Các cổng vào ra của VĐK 89C51
Port 0 (các chân t 32-39): làm nhi m v xu t/nh p ừ ệ ụ ấ ậho c làm bus đ a ch và bus d li u đa h p (byte th p ặ ị ỉ ữ ệ ợ ấc a bus đ a ch ). ủ ị ỉ
Port 1 (các chân t 1-8): làm nhi m v xu t/nh p đ ừ ệ ụ ấ ậ ểgiao ti p v i thi t b ngoài.ế ớ ế ị
Port 2 (các chân t 21-28): làm nhi m v xu t/nh p ừ ệ ụ ấ ậho c làm byte đ a ch cao c a bus đ a ch 16-bit.ặ ị ỉ ủ ị ỉ
Port 3 (các chân t 10 đ n 17): N u không làm ch c ừ ế ế ứnăng xu t nh p thì m i chân c a port 3 có nh ng ch c ấ ậ ỗ ủ ữ ứnăng riêng khác nhau
04/20/2304/20/23 2323
Bit Tên Địa chỉ bit
Chức năng
P3.0 RxD B0h Nhận dữ liệu của port nối tiếp
P3.1 TxD B1h Phát dữ liệu của port nối tiếp
P3.2 /INT0 B2h Ngõ vào ngắt ngoài 0
P3.3 /INT1 B3h Ngõ vào ngắt ngoài 1
P3.4 T0 B4h Ngõ vào của bộ định thời/đếm 0
P3.5 T1 B5h Ngõ vào của bộ định thời/đếm 1
P3.6 /WR B6h Điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7 /RD B7h Điều khiển đọc bộ nhớ dữ liệu ngoài
P1.0 T2 90h Ngõ vào của bộ định thời/đếm 2
P1.1 T2EX 91h Nạp lại/thu nhận tín hiệu của bộ định thời 2
Chức năng các chân của P3 và P1
04/20/2304/20/23 2424
Chân cho phép bộ nhớ chương trình PSEN
Cho phép truy xu t b nh ch ng trình ngoài. ấ ộ ớ ươ Chân này th ng đ c n i v i chân cho phép xu t OE ườ ượ ố ớ ấ
c a EPROM (ho c ROM) đ cho phép đ c các byte l nh.ủ ặ ể ọ ệ Có m c tích c c th p.ứ ự ấ Khi th c hi n ch ng trình RAM n i, chân này đ c ự ệ ươ ở ộ ượ
duy trì m c logic 1.ở ứ
04/20/2304/20/23 2525
Chân cho phép chốt địa chỉ ALE
Xu t tín hi u cho phép ch t đ a ch đ gi i đa h p bus ấ ệ ố ị ỉ ể ả ợd li u và bus đ a ch .ữ ệ ị ỉ
Khi port 0 đ c 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 và m t thanh ghi ấ ệ ể ố ị ỉ ộngoài trong su t ½ chu kì đ u c a chu kì b nh . Sau đó, ố ầ ủ ộ ớcác chân c a port 0 sẽ xu t nh p d li u h p l trong ½ ủ ấ ậ ữ ệ ợ ệchu kì ti p theo.ế
ALE có f=1/6 fclock.
04/20/2304/20/23 2626
Chân truy xuất ngoài EA
N u m c logic “1” thì VĐK th c thi ch ng trình trong ế ở ứ ự ươROM n i.ộ
N u m c logic “0” thì VĐK th c thi ch ng trình ế ở ứ ự ươ ởtrên b nh ngoài.ộ ớ
04/20/2304/20/23 2727
Các chân khác
Chân Vcc (chân 40) n i v i ngu n +5Vố ớ ồ Chân GND (chân 20) n i v i đ tố ớ ấ Chân RESET (chân 9) dùng đ thi t l p l i tr ng thái ể ế ậ ạ ạ
ban đ u cho h th ng. ầ ệ ố Khi đ c treo logic 1 trong th i gian t i thi u 2 chu kì máy, ượ ở ờ ố ể
các thanh ghi bên trong 89C51 đ c n p l i các giá tr thích h p ượ ạ ạ ị ợcho vi c kh i đ ng l i h th ngệ ở ộ ạ ệ ố
Chân XTAL1 và XTAL2 (chân 18-19) n i v i th ch anh ố ớ ạcung c p dao đ ng ngo i cho VĐK, ho c là nh n dao ấ ộ ạ ặ ậđ ng t ngu n xung clock TTL. ộ ừ ồ
04/20/2304/20/23 2828
Mạch dao động
04/20/2304/20/23 2929
XTAL1
XTAL2
Dao động TTL
89C51
XTAL1
XTAL2
89C51
Ghép với mạch dao động TTL ngoài
Ghép với mạch dao động thạch anh
Tổ chức bộ nhớ
B nh n i c a chip 89c51 bao g m ROM và RAMộ ớ ộ ủ ồ RAM trên chip bao g m: ồ
Vùng RAM đa ch c năngứ Vùng RAM đ nh đ a ch bitị ị ỉ Các dãy thanh ghi Các thanh ghi ch c năng đ c bi tứ ặ ệ
Hai đ c tính c n chú ý:ặ ầ Các thanh ghi và các port xu t/nh p đ c đ nh đ a ch theo ấ ậ ượ ị ị ỉ
ki u ánh x b nh và đ c truy xu t nh m t v trí trong b ể ạ ộ ớ ượ ấ ư ộ ị ộnh .ớ
Vùng Stack th ng trú trong RAM n i thay vì trong RAM ngoài ườ ộ ởnh đ i v i vi x líư ố ớ ử
04/20/2304/20/23 3030
Sơ đồ địa chỉ RAM nội
04/20/2304/20/23 3131
R0 –R7
Bank 1
Bank 2
Bank 3
Vùng RAM định địa chỉ bit
Vùng RAM đa mục đích
00h
07h
08h
0Fh10h
17h18h
1Fh20h
2Fh30h
7Fh
Vùng RAM đa mục đích
G m 80 byte t đ a ch 30h đ n 7Fhồ ừ ị ỉ ế Vùng RAM t đ a ch 00h đ n 2Fh: vùng có th đ nh đ a ừ ị ỉ ế ể ị ị
ch đ n t ng bit.ỉ ế ừ Vi c truy xu t m t v trí nh đ c th c hi n b ng cách ệ ấ ộ ị ớ ượ ự ệ ằ
s d ng ki u đ nh đ a ch tr c ti p ho c gián ti p.ử ụ ể ị ị ỉ ự ế ặ ế Ví d : đ c n i dung t i đ a ch 5Fh c a RAM n i vào ụ ọ ộ ạ ị ỉ ủ ộ
thanh ghi A Đ nh đ a ch tr c ti p: ị ị ỉ ự ế
MOV A,5Fh Đ nh đ a ch gián ti p:ị ị ỉ ế
MOV R0, #5FH
MOV A,@R0
04/20/2304/20/23 3232
Vùng RAM định địa chỉ bit
89C51 ch a 210 v trí bit đ c đ nh đ a ch tr c ti p:ứ ị ượ ị ị ỉ ự ế 128 bit đ c ch a trong các byte t 20h đ n 2Fh. ượ ứ ừ ế Ph n còn l i n m trong các thanh ghi đ c bi t (trong kho ng ầ ạ ằ ặ ệ ả
đ a ch t 80h đ n FFh).ị ỉ ừ ế Vi c đ nh đ a ch đ n t ng bit cho phép các bit có th đ c đ t ệ ị ị ỉ ế ừ ể ượ ặ
và xóa...b ng m t l nh.ằ ộ ệ Các port c a 89C51 cũng đ c đ nh đ a ch bitủ ượ ị ị ỉ
Ví d : đ set bit 67h ta dùng l nh: SETB 67hụ ể ệ N u không đ c đ nh đ a ch bit (v i vi x lí) thì ta ph i dùng ế ượ ị ị ỉ ớ ử ả
l nhệMOV A,2Ch
OR A,#10000000b
MOV 2Ch,A
04/20/2304/20/23 3333
Các dãy thanh ghi
Ch a trong 32 v trí th p nh t c a RAM, g m 4 dãy ứ ị ấ ấ ủ ồthanh ghi. M i dãy g m 8 thanh ghi t R0 đ n R7. ỗ ồ ừ ế
L nh s d ng các thanh ghi trong dãy là l nh ng n và ệ ử ụ ệ ắth c hi n nhanh h n so v i ki u đ nh đ a ch tr c ti p. ự ệ ơ ớ ể ị ị ỉ ự ế
Ví d : l nh đ c n i dung t i đ a ch 05h vào thanh ch a ụ ệ ọ ộ ạ ị ỉ ứA
MOV A,R5 ;l nh 1 byteệho c:ặ MOV A,05h ;l nh 2 byteệ
04/20/2304/20/23 3434
Các dãy thanh ghi
Dãy thanh ghi đang ho t đ ng đ c g i là dãy thanh ghi ạ ộ ượ ọtích c c và có th thay đ i b ng cách thay đ i các bit ự ể ổ ằ ổch n dãy trong thanh ghi t tr ng thái ch ng trình ọ ừ ạ ươPSW. Dãy thanh ghi m c đ nh sau khi reset h th ng là ặ ị ệ ốdãy 0.
Ví d : gi s dãy 3 đang tích c c, l nh ghi n i dung c a ụ ả ử ự ệ ộ ủthanh ch a A vào v trí 18h làứ ị
MOV R0,A
04/20/2304/20/23 3535
Các thanh ghi chức năng đặc biệt (SFR)
VĐK 89C51 có 21 thanh ghi đ c bi t SFR chi m ph n ặ ệ ế ầtrên c a RAM n i t đ a ch 80h đ n FFh (Chú ý: không ủ ộ ừ ị ỉ ếph i t t c các đ a ch đ u đ c đ nh nghĩa).ả ấ ả ị ỉ ề ượ ị
04/20/2304/20/23 3636
Bit Kí hiệu
Địa chỉ
Mô tả
PSW.7 CY D7h Cờ nhớ
PSW.6 AC D6h Cờ nhớ phụ
PSW.5 F0 D5h Cờ 0
PSW.4 RS1 D4h Chọn dãy thanh ghi (bit 1)
PSW.3 RS0 D3h Chọn dãy thanh ghi (bit 0)00 = bank 0: địa chỉ từ 00h - 07h01 = bank 1: địa chỉ từ 08h - 0Fh10 = bank 2: địa chỉ từ 10h - 17h11 = bank 3: địa chỉ từ 18h - 1Fh
PSW.2 OV D2h Cờ tràn
PSW.1 - D1h Dự trữ
PSW.0 P D0h Cờ kiểm tra chẵn lẻ
Thanh ghi từ trạng thái chương trình PSW
04/20/2304/20/23 3737
Thanh ghi B
Đ a ch : F0h – F7hị ỉ Thanh ghi B có đ a ch F0h đ c dùng chung v i thanh ị ỉ ượ ớ
ghi A trong các phép toán nhân, chia. L nh MUL AB: nhân hai s 8 bit không d u ch a trong A ệ ố ấ ứ
và B. K t qu 16 bit đ c ch a trong c p thanh ghi B:A ế ả ượ ứ ặ(thanh ghi A ch a byte th p, thanh ghi B ch a byte cao).ứ ấ ứ
L nh DIV AB:chia A b i B, th ng s c t trong thanh ệ ở ươ ố ấch a A và d s c t trong thanh ghi B.ứ ư ố ấ
04/20/2304/20/23 3838
Con trỏ Stack
Con tr Stack (Stack pointer – SP) là 1 thanh ghi 8 bit ỏ ởđ a ch 81h. SP ch a đ a ch c a d li u hi n đang đ nh ị ỉ ứ ị ỉ ủ ữ ệ ệ ở ỉc a Stack.ủ
N u ta không kh i đ ng SP, n i dung m c đ nh c a ế ở ộ ộ ặ ị ủthanh ghi này là 07h.
04/20/2304/20/23 3939
Con trỏ dữ liệu DPTR
Con tr d li u DPTR (data pointer) đ c dùng đ truy ỏ ữ ệ ượ ểxu t b nh ch ng ngoài ho c b nh d li u ngoài. ấ ộ ớ ươ ặ ộ ớ ữ ệ
DPTR là 1 thanh ghi 16 bit có đ a ch là 82h (DPL, byte ị ỉth p) và 83h (DPH, byte cao).ấ
Ví d : ghi giá tr 55h vào đ a ch 1000h RAM ngoàiụ ị ị ỉ ởMOV A,#55h
MOV DPTR,#1000h
MOV @DPTR,A
04/20/2304/20/23 4040
Các thanh ghi cổng
Các port xu t nh p c a 89C51 bao g m: port 0 (đ a ch ấ ậ ủ ồ ị ỉ80h), port 1 (đ a ch 90h), port 2 (đ a ch A0h), port 3 ị ỉ ị ỉ(đ a ch B0h).ị ỉ
Các port 0, 2, 3 không đ c dùng đ xu t/nh p n u ta ượ ể ấ ậ ếs d ng b nh ngoài ho c các ch c năng đ c bi t c a ử ụ ộ ớ ặ ứ ặ ệ ủ89C51.
Các port đ u đ c đ nh đ a ch t ng bit.ề ượ ị ị ỉ ừ
04/20/2304/20/23 4141
Các thanh ghi định thời
89C51 có 2 b đ nh th i/đ m 16 bit: ộ ị ờ ế 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). Ho t đ ng c a b đ nh th i đ c thi t l p b i:ạ ộ ủ ộ ị ờ ượ ế ậ ở
Thanh ghi ch đ đ nh th i TMOD (time mode register) đ a ế ộ ị ờ ở ịch 89h.ỉ
Thanh ghi đi u khi n đ nh th i TCON (time control register) ề ể ị ờ ởđ a ch 88h. ị ỉ
04/20/2304/20/23 4242
Các thanh ghi của cổng nối tiếp
Thanh ghi đ m d li u n i ti p SBUF (serial data ệ ữ ệ ố ếbuffer):
Có đ a ch 99H. ị ỉ N i l u d li u truy n đi và d li u nh n vơ ư ữ ệ ề ữ ệ ậ ề
Thanh ghi đi u khi n port n i ti p SCON (serial port ề ể ố ếcontrol register) đ a ch 98H. ở ị ỉ
04/20/2304/20/23 4343
Các thanh ghi ngắt
89C51 có m t c u trúc ng t v i 2 m c u tiên và 5 ộ ấ ắ ớ ứ ưnguyên nhân ng t.ắ
Ng t b vô hi u hóa khi reset h th ng và sau đó đ c ắ ị ệ ệ ố ượcho phép b ng cách ghi vào thanh ghi cho phép ng t IE ằ ắ(interrupt enable register - A8h).
M c u tiên ng t đ c thi t l p thông qua thanh ghi u ứ ư ắ ượ ế ậ ưtiên ng t IP (interupt priority register - B8h).ắ
04/20/2304/20/23 4444
Thanh ghi điều khiển nguồn PCON (87h)
04/20/2304/20/23 4545
Bit Kí hiệu Mô tả
7 SMOD Tăng gấp đôi tốc độ baud
6 - Không định nghĩa
5 - Không định nghĩa
4 - Không định nghĩa
3 GF1 Bit cờ đa mục đích 1
2 GF0 Bit cờ đa mục đích 2
1 PD Chế độ nguồn giảm
0 IDL Chế độ nguồn nghỉ
Bộ nhớ ngoài
C u trúc c a MCS-51 cho phép m r ng không gian b ấ ủ ở ộ ộnh và không gian d li u lên đ n 64 Kbyte.ớ ữ ệ ế
Khi s d ng b nh ngoài, port 0 tr thành bus đ a ch ử ụ ộ ớ ở ị ỉ(A0-A7) và bus d li u (D0-D7) đa h p. Port 2 th ng ữ ệ ợ ườđ c dùng làm byte cao c a bus đ a ch .ượ ủ ị ỉ
04/20/2304/20/23 4646
Đa hợp và không đa hợp
04/20/2304/20/23 4747
A0-A15 Địa chỉ
D0-D7 Dữ liệu
Không đa hợp
Chu kì máy
A8-A15 Địa chỉ
Địa chỉAD0-AD7 Dữ liệu
Đa hợp (Multiplex)
Chu kì máy
D
74LS373ALE
P0.0
P0.7
PSEN
A0
A7
D0
D7
P2.0
P2.7
A8
A15
OE
OC
EA
G
89C51 ROM
1. Send address to ROM
2. 74373 latches the address and send to
ROM
Address
Đọc ROM (1)
04/20/2304/20/23 4848
D
74LS373ALE
P0.0
P0.7
PSEN
A0
A7
D0
D7
P2.0
P2.7
A8
A15
OE
OC
EA
G
89C51 ROM
2. 74373 latches the address and send to ROM
Address
3. ROM send the instruction back
Đọc ROM (2)
04/20/2304/20/23 4949
D
74LS373ALE
P0.0
P0.7
RS
A0
A7
D0
D7P2.0
P2.1
A8
A9
OE
EA
G
89C51 RAM
Address
WR WCS
Đọc RAM
04/20/2304/20/23 5050
Ch ng 3ươ
04/20/2304/20/23 5151
Các kiểu định địa chỉ
Thanh ghi (register) Tr c ti p (direct)ự ế Gián ti p (indirect)ế T c th i (immediate)ứ ờ T ng đ i (relative)ươ ố Tuy t đ i (absolute)ệ ố Dài (long) Ch s (indexed)ỉ ố
04/20/2304/20/23 5252
opcode n n n
Định địa chỉ thanh ghi
L nh s d ng ki u đánh đ a ch thanh ghi đ c mã hóa ệ ử ụ ể ị ỉ ượb ng cách dùng 3 bit th p nh t c a mã l nh (opcode) ằ ấ ấ ủ ệđ ch ra m t thanh ghi bên trong không gian đ a ch ể ỉ ộ ị ỉlogic
Mã l nh và đ a ch toán h ng (3 bit) k t h p thành 1 ệ ị ỉ ạ ế ợl nh ng n (1 byte)ệ ắ
Truy xu t tr c ti p 8 thanh ghi R0 – R7ấ ự ế Ví d : ụ ADD A,R7 (opcode: 00101111b) 00101: l nh c ngệ ộ 111: thanh ghi R7
04/20/2304/20/23 5353
Định địa chỉ trực tiếp
Đ c s d ng đ truy xu t các bi n nh ho c các thanh ượ ử ụ ể ấ ế ớ ặghi trên chip
Mã l nh và đ a ch toán h ng k t h p thành 1 l nh 2 ệ ị ỉ ạ ế ợ ệbyte
Ví d : chuy n n i dung c a thanh ghi A vào đ a ch 90h ụ ể ộ ủ ị ỉ(P1)
MOV P1,A (opcode: 10001001 - 10010000) 10001001: opcode 10010000: đ a ch c a P1 (90h)ị ỉ ủ
04/20/2304/20/23 5454
Định địa chỉ gián tiếp
Các thanh ghi R0 và R1 ho t đ ng nh là các con trạ ộ ư ỏ N i dung c a chúng ch ra đ a ch trong RAM, n i d ộ ủ ỉ ị ỉ ơ ữ
li u đ c đ c ho c ghi.ệ ượ ọ ặ Bit có ý nghĩa th p nh t trong opcode xác đ nh thanh ấ ấ ị
ghi đ c dùng làm con tr .ượ ỏ Đ c nh n bi t nh vào kí t @ đ t tr c R0 ho c R1.ượ ậ ế ờ ự ặ ướ ặ Ví d : n u R1 ch a 40h và đ a ch 40h ch a 55h, l nh:ụ ế ứ ị ỉ ứ ệ
MOV A,@R1
N p 55h cho Aạ
04/20/2304/20/23 5555
Định địa chỉ tức thời
Dùng khi toán h ng ngu n là m t h ng s thay vì m t ạ ồ ộ ằ ố ộbi n.ế
Nh n bi t nh vào kí t # đ t tr c toán h ng.ậ ế ờ ự ặ ướ ạ Ví d : MOV A, #12; ụ N p giá tr 12 (0Ch) vào thanh ghi Aạ ị
04/20/2304/20/23 5656
Các loại lệnh
Nhóm l nh s h cệ ố ọ Nhóm l nh logicệ Nhóm l nh di chuy n d li u ệ ể ữ ệ Nhóm l nh x lí bitệ ử Nhóm l nh rẽ nhánhệ
04/20/2304/20/23 5757
Một số phương pháp định địa chỉ
Đ nh đ a ch thanh ghi: truy xu t tr c ti p các thanh ghi ị ị ỉ ấ ự ết R0 – R7ừ
Đ nh đ a ch tr c ti p: truy c p đ n đ a ch đ c tr b i ị ị ỉ ự ế ậ ế ị ỉ ượ ỏ ởtoán h ng.ạ
Đ nh đ a ch gián ti p:ị ị ỉ ế Địa chỉ của toán hạng sẽ được chứa trong một thanh ghi con trỏ
(R0 hoặc R1 đối với RAM trong, DPTR đối với RAM ngoài). Nh n bi t b ng kí t @ đ t tr c thanh ghiậ ế ằ ự ặ ướ
Đ nh đ a ch t c th i: ị ị ỉ ứ ờ Giá trị của toán hạng được nêu ra rõ ràng ngay trong câu lệnh. Đặc điểm : luôn kèm theo ký tự “#” phía trước toán h ngạ . MOV A, 4Fh (Ram o 4Fh đang có 14h)
04/20/2304/20/23 5858
Ví dụ
MOV R0, #4Fh; đang ch a 14hứ MOV A,@R0 ; A ch a 14hứ
04/20/2304/20/23 5959
Cú pháp
[Nhãn]:
[L nh] [Toán h ng đích],[Toán h ng ngu n] ;[chú thích]ệ ạ ạ ồ Ví d : ụ
Lenhcong: ADD A,#30H ; cong thanh ghi A voi gia tri 30H
04/20/2304/20/23 6060
Các lệnh tính toán số học
04/20/2304/20/23 6161
Các lệnh tính toán số học
04/20/2304/20/23 6262
Các lệnh thực hiện các phép toán lôgic
04/20/2304/20/23 6363
4Fh: n i dung 03h;11ộ A: n i dung 02h; trong RAM 02h có 01hộ ở ANL 4Fh, @A -> 4Fh:02h; ANL 4Fh,#01 -> 01
A: 00000001b RL A -> 0011 1011b SWAP A -> 1011 0011b
04/20/2304/20/23 6464
Các lệnh thực hiện các phép toán lôgic
04/20/2304/20/23 6565
Các lệnh trao đổi dữ liệu
04/20/2304/20/23 6666
Các lệnh trao đổi dữ liệu
04/20/2304/20/23 6767
Các lệnh trao đổi dữ liệu
04/20/2304/20/23 6868
Các lệnh thao tác xử lý đại số Boolean
04/20/2304/20/23 6969
Các lệnh rẽ nhánh
04/20/2304/20/23 7070
Các lệnh rẽ nhánh chương trình
04/20/2304/20/23 7171
Các lệnh rẽ nhánh chương trình
04/20/2304/20/23 7272
Chương trình ASM mẫu
#include <sfr51.inc> ; đầu chương trình, khai báo file chứa địa chỉ của các thanh ghi SFR
; định nghĩa tên gọi cho các chân cổng vào/ra (nếu muốn)
#define led1 P1.0
#define led2 P1.1
...
; khai báo các biến dạng byte (nếu có)
var1 data 0x30
var2 data 0x31
...
04/20/2304/20/23 7373
Chương trình ASM mẫu (tt)
; khai báo các biến dạng bit (nếu có)
flag1 bit 0x00
flag2 bit 0x01
...
; định nghĩa các hằng số (nếu có)
constant1 equ 123
constant2 equ 456
04/20/2304/20/23 7474
Chương trình ASM mẫu (tt)
org 0x0000 ; tạo mã đặt tại địa chỉ reset
ajmp main
; tạo mã đặt tại các vector ngắt (nếu sử dụng ngắt)
org 0x0003
ljmp ChuongTrinhXuLyNgatNgoai0
org 0x000B
ljmp ChuongTrinhXuLyNgatTimer0
...
04/20/2304/20/23 7575
Chương trình ASM mẫu (tt)
; đặt địa chỉ đầu cho chương trình chính
org 0x0030
main:
; bắt đầu viết các lệnh cho chương trình chính từ đây
mov SP,#0x6F
; viết các thủ tục khởi tạo hệ thống
...
; viết thân chương trình chính (vòng lặp chính)
main_loop:
...
sjmp main_loop
04/20/2304/20/23 7676
Chương trình ASM mẫu (tt)
; viết các chương trình con và các chương trình xử lý ngắt (nếu có)
ChuongTrinhCon1:
; các lệnh xử lý của chương trình con 1
...
; kết thúc bằng lệnh ret
ret
ChuongTrinhCon2:
; các lệnh xử lý của chương trình con 2
...
ret ; kết thúc bằng lệnh ret
...
04/20/2304/20/23 7777
Chương trình ASM mẫu (tt)
; định nghĩa các bảng hằng số lưu sẵn trong bộ nhớ chương trình
Bang1:
db 0,1,0x02,0x86
Bang2:
db 156,235,8,9
...
; chỉ dẫn báo hiệu kết thúc toàn bộ đoạn chương trình
end
04/20/2304/20/23 7878
Chương trình ASM mẫu (tt)
ChuongTrinhXuLyNgatNgoai0:
; các lệnh xử lý của chương trình xử lý ngắt ngoài 0
...
; kết thúc bằng lệnh reti
reti
ChuongTrinhXuLyNgatTimer0:
; các lệnh xử lý của chương trình xử lý ngắt timer 0
...
; kết thúc bằng lệnh reti
reti
...
04/20/2304/20/23 7979
Ch ng 4ươ
04/20/2304/20/23 8080
Giới thiệu
89C51 có 2 b đ nh th i 16 bít, m i b có 4 ch đ ho t ộ ị ờ ỗ ộ ế ộ ạđ ngộ
Các b đ nh th i đ c dùng đ :ộ ị ờ ượ ể Đ nh th i trong m t kho ng th i gian.ị ờ ộ ả ờ Đ m s ki n.ế ự ệ T o t c đ baud cho port n i ti p c a chip 89C51ạ ố ộ ố ế ủ
04/20/2304/20/23 8181
Bộ định thời 3-bit
04/20/2304/20/23 8282
XUNG NHỊP
Q0Q0
Q1Q1
Q2Q2
FLAGFLAG
Giản đồ thời gian
D /QD /Q
Q0Q0
D /QD /Q
Q1Q1
D /QD /Q
Q2Q2
D /QD /Q
FLIP-FLOP
CỜ
TIMER FLIP-FLOPS (3 bit)
XUNG NHỊP
Sơ đồ logic
cờ
Các SFR của bộ định thời
Thanh ghi
Mục đích Địa chỉ Định địa chỉ bit
TCON Điều khiển 88H Có
TMOD Chọn chế độ 89H Không
TL0 Byte thấp của bộ định thời 0
8AH Không
TL1 Byte thấp của bộ định thời 1
8BH Không
TH0 Byte cao của bộ định thời 0
8CH Không
TH1 Byte cao của bộ định thời 1
8DH Không
04/20/2304/20/23 8383
Thanh ghi chế độ định thời (TMOD)
04/20/2304/20/23 8484
Bit Tên Bộ định thời
Mô tả
7 GATE 1 Bit điều khiển cổng. Khi được set lên 1, bộ định thời chỉ hoạt động trong khi INT1 ở mức cao và TRx = 1.
6 1 Bit chọn chức năng đếm hoặc định thời: 1 = đếm sự kiện 0 = định thời trong một khoảng thời gian.
5 M1 1 Bit chọn chế độ thứ nhất.
4 M0 1 Bit chọn chế độ thứ hai.
3 GATE 0 Bit điều khiển cổng cho bộ định thời 0.
2 0 Bit chọn chức năng đếm hoặc định thời cho bộ định thời 0.
1 M1 0 Bit chọn chế độ thứ nhất.
0 M0 0 Bit chọn chế độ thứ hai.
Thanh ghi điều khiển định thời (TCON)
04/20/2304/20/23 8585
Bit Ký Hiệu
Địa chỉ bit
Mô tả
TCON.7 TF1 8FH Cờ tràn của bộ định thời 1.
TCON.6 TR1 8EH Bit điều khiển hoạt động của bộ định thời 1.
TCON.5 TF0 8DH Cờ tràn của bộ định thời 0.
TCON.4 TR0 8CH Bit điều khiển hoạt động của bộ định thời 0.
TCON.3 IE1 8BH Cờ ngắt bên ngoài 1 (kích khởi cạnh).
TCON.2 IT1 8AH Cờ ngắt bên ngoài 1 (kích khởi cạnh hoặc mức).
TCON.1 IE0 89H Cờ ngắt bên ngoài 0 (kích khởi cạnh).
TCON.0 IT0 88H Cờ ngắt bên ngoài 0 (kích khởi cạnh hoặc mức).
Các chế độ hoạt động
04/20/2304/20/23 8686
M1 M0 Chế độ Mô tả
0 0 0 Chế độ định thời 13 bit
0 1 1 Chế độ định thời 16 bit
1 0 2 Chế độ tự động nạp lại 8 bit
1 1 3 Chế độ định thời chia sẻ
Chế độ định thời 13 bit
Byte cao THx đ c ghép v i 5 bit th p c a TLx đ t o ượ ớ ấ ủ ể ạthành b đ nh th i 13-bit.ộ ị ờ
Khi có xung clock đ n, b đ nh th i đ m lên t giá tr ế ộ ị ờ ế ừ ịđ m đ c n p.ế ượ ạ
Tràn sẽ xu t hi n khi chuy n s đ m t 2000H xu ng ấ ệ ể ố ế ừ ố0000H và set c tràn TFx b ng 1.ờ ằ
04/20/2304/20/23 8787
TLxTLx
(5 (5 bit)bit)
THxTHx
(8 (8 bit)bit)
TFxTFxTime Time clockclock
Chế độ định thời 16 bit
Có c u hình gi ng ch đ đ nh th i 13 bitấ ố ế ộ ị ờ Thanh ghi đ nh th i TLx/THx có th đ c đ c/ghi t i ị ờ ể ượ ọ ạ
b t kì th i đi m nàoấ ờ ể
04/20/2304/20/23 8888
TLxTLx
(8 (8 bit)bit)
THxTHx
(8 (8 bit)bit)
TFxTFxTime Time clockclock
Chế độ tự nạp lại 8 bit
Byte th p c a b đ nh th i (TLx) ho t đ ng đ nh th i 8 ấ ủ ộ ị ờ ạ ộ ị ờbit.
Byte cao TFx l u gi giá tr n p l i.ư ữ ị ạ ạ Khi s đ m tràn t FFH xu ng 00H, c tràn đ c set và ố ế ừ ố ờ ượ
giá tr trong THx đ c n p vào TLx.ị ượ ạ
04/20/2304/20/23 8989
TLxTLx(8 (8
bit)bit)THxTHx(8 (8
bit)bit)
TFxTFxTime Time clockclock
Chế độ định thời chia sẻ
B đ nh th i 0:ộ ị ờ Đ c chia thành 2 b đ nh th i 8 bit TL0 và TH0. ượ ộ ị ờ M i b sẽ set c tràn t ng ng là TF0 và TF1.ỗ ộ ờ ươ ứ
B đ nh th i 1:ộ ị ờ Không ho t đ ng ch đ 3 nh ng có th chuy n qua ch đ ạ ộ ở ế ộ ư ể ể ế ộ
khác. C tràn TF1 không b nh h ng.ờ ị ả ưở
04/20/2304/20/23 9090
Chế độ định thời chia sẻ
04/20/2304/20/23 9191
TL0TL0
(8 (8 bit)bit)
TH0TH0
(8 (8 bit)bit)
TF1TF1
Time Time clockclock TF0TF0
Time Time clockclock
TL1TL1
(8 (8 bit)bit)
TH1TH1
(8 (8 bit)bit)
Time Time clockclock
Nguồn xung clock định thời
C/T = 0: Ngu n xung clock do m ch dao đ ng trong chip t o ra.ồ ạ ộ ạ Đ c dùng đ đ nh m t kho ng th i gian.ượ ể ị ộ ả ờ
C/T = 1: Đ c c p xung clock t ngu n ngoài (trên 2 chân P3.4 và P3.5)ượ ấ ừ ồ Đ c dùng đ đ m s ki n. Các thanh ghi đ nh th i tăng khi có ượ ể ế ự ệ ị ờ
chuy n tr ng thái t 1 ->0 ngõ vào Tx.ể ạ ừ ở
04/20/2304/20/23 9292
Điều khiển các bộ định thời
S d ng bit TRx trong thanh ghi TCON:ử ụ TRx = 1: kh i đ ngở ộ TRx = 0 : d ngừ
S d ng bit GATE và ngõ vào INTx:ử ụ Khi INTx m c cao, b đ nh th i nh n xung clock.ở ứ ộ ị ờ ậ Khi INTx m c th p, b đ nh th i b khoá, không nh n xung ở ứ ấ ộ ị ờ ị ậ
n a.ữ
04/20/2304/20/23 9393
Ví dụ
MOV TMOD,#xxxxH ;thi t l p ch đ ho t đ ngế ậ ế ộ ạ ộ MOV TL1,#xxH ;ghi giá tr đ m vào TLxị ế MOV TH1,#XXH ;ghi giá tr đ m vào THxị ế SETB TRx ;b đ nh th i ho t đ ngộ ị ờ ạ ộ ..... CLR TR1 ;ng ng b đ nh th iừ ộ ị ờ CLR TF1 ;xoá c trànờ
04/20/2304/20/23 9494
Đọc bộ định thời đang hoạt động
Sai pha có th x y ra khi đ c 2 thanh ghi đ nh th i, do ể ả ọ ị ờkhông th đ c 2 thanh ghi b ng 1 l nhể ọ ằ ệ
Gi i pháp:ả Đ c byte caoọ Đ c byte th pọ ấ Đ c l i byte caoọ ạ N u byte cao đ i giá tr thì th c hi n l i thao tác đ c trênế ổ ị ự ệ ạ ọ
04/20/2304/20/23 9595
Ví dụ
LAP: MOV A,TH1 MOV R6, TL1 CJNE A,TH1,LAP MOV R7,A
04/20/2304/20/23 9696
Ch ng 5ươ
04/20/2304/20/23 9797
Mở đầu
Chip 89C51 có 1 c ng n i ti p v i 4 ch đ ho t đ ng ổ ố ế ớ ế ộ ạ ộkhác nhau.
Vi c truy xu t port n i ti p đ c th c hi n thông qua ệ ấ ố ế ượ ự ệchân TxD và RxD
Đ c tr ng c a port n i ti p là kh năng ho t đ ng song ặ ư ủ ố ế ả ạ ộcông (full duplex)
Các thanh ghi liên quan: SBUF: đ c dùng đ truy xu t giá tr trên c ng n i ti pượ ể ấ ị ổ ố ế SCOM: đ c dùng đ đi u khi n port n i ti p.ượ ể ề ể ố ế PCON: s d ng bit PCON.7 (SMOD) đ xác đ nh t c đ truy nử ụ ể ị ố ộ ề
SMOD = 0: truy n v i t c đ th ngề ớ ố ộ ườ SMOD = 1: truy n v i t c đ g p đôiề ớ ố ộ ấ
04/20/2304/20/23 9898
SBUF(write only) Shift register
SBUF(read only)
CLK
Q
CLK
D
Baud rate clock (transmit)
Baud rate clock (receive)
TxD RxD
89C51 internal bus
Sơ đồ khối port nối tiếp
04/20/2304/20/23 9999
Thanh ghi điều khiển port nối tiếp SCON
04/20/2304/20/23 100100
Bit Kí hiệu Địa chỉ Mô tả
SCON.7 SM0 9FH Bit 0 chọn chế độ của port nối tiếp
SCON.6 SM1 9EH Bit 1 chọn chế độ của port nối tiếp
SCON.5 SM2 9DH Bit 2 chọn chế độ của port nối tiếp, cho phép truyền thông đa xử lí ở chế độ 2 và 3.
SCON.4 REN 9CH Cho phép nhận dữ liệu. Phải bằng 1 để nhận kí tự
SCON.3 TB8 9BH Bit dữ liệu thứ 9 được phát ở chế độ 2 và 3 (9 bit)
SCON.2 RB8 9AH Bit dữ liệu thứ 9 trong trường hợp nhận 9 bit
SCON.1 TI 99H Cờ ngắt phát, được set ngay khi kết thúc việc phát một khung dữ liệu
SCON.0 RI 98H Cờ ngắt nhận, được set ngay khi kết thúc việc nhận một khung dữ liệu
Các chế độ hoạt động
04/20/2304/20/23 101101
SM0 SM1 Chế độ Mô tả Tốc độ baud
0 0 0 Đồng bộ 8 bit
Cố định (fOSC/12)
0 1 1 UART 8-bit
Thay đổi (thiết lập bởi bộ định thời)
1 0 2 UART 9-bit
Cố định (fOSC/32 hoặc fOSC/64)
1 1 3 UART 9-bit
Thay đổi (thiết lập bởi bộ định thời)
Chế độ 0
Là chế độ truyền đồng bộ duy nhất. Chân RxD sẽ là tín hiệu truyền/nhận dữ liệu, chân TxD là tín hiệu xung nhịp. Bit LSB (bit 0) của dữ liệu đ c phát đ u tiênượ ầ
T c đ baud c đ nh và b ng fOSC/12ố ộ ố ị ằ Phát d li u đ c kh i đ ng b ng m t l nh ghi d li u ữ ệ ượ ở ộ ằ ộ ệ ữ ệ
vào SBUF Nh n d li u đ c kh i đ ng khi bit REN m c 1 và RI ậ ữ ệ ượ ở ộ ở ứ
m c 0.ở ứ
04/20/2304/20/23 102102
Chế độ 1
Port n i ti p ho t đ ng nh m t b thu phát không ố ế ạ ộ ư ộ ộđ ng b UARTồ ộ
D li u g m 10 bit: ữ ệ ồ 1 bit start (m c 0)ứ 8 bit d li uữ ệ 1 bit stop (m c 1)ứ
Khi thu, bit stop đ c đ a đ n RB8 c a SCONượ ư ế ủ Vi c phát đ c kh i đ ng b ng cách ghi vào SBUFệ ượ ở ộ ằ T c đ baud đ c thi t l p b i t c đ tràn c a b đ nh ố ộ ượ ế ậ ở ố ộ ủ ộ ị
th i 1.ờ
04/20/2304/20/23 103103
Chế độ 2 và 3
D li u g m 11 bit:1 bit start, 8 bit d li u, 1 bit stop, 1 ữ ệ ồ ữ ệbit l p trình đ c (bit th 9)ậ ượ ứ
Khi phát, bit 9 là bit đ c đ t vào TB8 c a SCONượ ặ ủ Khi thu, bit 9 nh n đ c sẽ đ t vào RB8ậ ượ ặ T c đ baud b ng fOSC/32 ho c fOSC/64ố ộ ằ ặ
04/20/2304/20/23 104104
Bit cho phép thu
Bit REN trong thanh ghi SCON ph i set b ng 1 đ cho ả ằ ểphép nh n kí tậ ự
L nh: ệ SETB REN Ho cặ MOV SCON,#xxx1xxxxB
04/20/2304/20/23 105105
Bit dữ liệu thứ 9
Bit d li u th 9 đ c phát ch đ 2 và 3 ph i đ c ữ ệ ứ ượ ở ế ộ ả ượn p cho bit TB8 b ng ph n m mạ ằ ầ ề
Bit d li u th 9 thu đ c ph i đ t vào bit RB8 c a ữ ệ ứ ượ ả ặ ủSCON
04/20/2304/20/23 106106
Bit chẵn lẻ
Bit th 9 th ng đ c dùng làm bit ch n l (s d ng bit ứ ườ ượ ẵ ẻ ử ụP c a PSW)ủ
L nh phát 8 bit v i bit ki m tra ch n:ệ ớ ể ẵMOV C,P
MOV TB8,C
MOV SBUF,A L nh phát 8 bit v i bit ki m tra l :ệ ớ ể ẻ
MOV C,P
CPL C
MOV TB8,C
MOV SBUF,A
04/20/2304/20/23 107107
Các cờ ngắt
C ng t thu RI đ c set khi k t thúc nh n kí t và ch ra ờ ắ ượ ế ậ ự ỉb đ m thu đ yộ ệ ầ
WAIT: JNB RI,WAIT
CLR RI
MOV A,SBUF C ng t phát TI đ c set khi k t thúc vi c phát 1 kí t và ờ ắ ượ ế ệ ự
b đ m phát r ngộ ệ ỗWAIT: JNB TI,WAIT
CLR TI
MOV SBUF,A
04/20/2304/20/23 108108
Truyền thông đa xử lý
Các ch đ 2 và 3 đ c ng d ng đ t o thành m t môi ế ộ ượ ứ ụ ể ạ ộtr ng m ng s d ng nhi u VĐK 89C51 s p x p theo ườ ạ ử ụ ề ắ ếmô hình master/slaver
04/20/2304/20/23 109109
89C51 Master 89C51 Slaver 1 89C51 Slaver 2
I/OI/O I/OI/O
Tốc độ baud của port nối tiếp
Mode 0:
Baud rate = fOSC/12 Mode 2:
Baud rate = (2SMOD/64)*fOSC Mode 1,3:
04/20/2304/20/23 110110
Sử dụng cổng nối tiếp
Chọn chế độ cho cổng nối tiếp (đồng bộ/dị bộ, 8bit/9bit...), từ đó chọn được giá trị cho các bit trong thanh ghi SCON. Lưu ý xóa các bit TI và RI.
Chọn tốc độ truyền mong muốn, từ đó tính ra giá trị của thanh ghi TH1. Cho timer1 chạy ở chế độ Auto Reload 8bit (không dùng ngắt tràn timer1).
Đặt mức ưu tiên ngắt và cho phép ngắt cổng nối tiếp nếu muốn.
04/20/2304/20/23 111111
Sử dụng cổng nối tiếp
Bắt đầu quá trình truyền dữ liệu bằng một lệnh ghi dữ liệu muốn truyền vào thanh ghi SBUF. Quá trình truyền kết thúc thì cờ TI sẽ tự động đặt lên 1.
Khi một khung dữ liệu đã được nhận đầy đủ, cờ RI sẽ tự động đặt lên 1 và người lập trình lúc này có thể dùng lệnh đọc thanh ghi SBUF để lấy dữ liệu nhận được ra xử lý.
04/20/2304/20/23 112112
Khởi động port nối tiếp
Baud rate = 2400 S d ng b đ nh th i 1 đ c p xung clockử ụ ộ ị ờ ể ấ
04/20/2304/20/23 113113
SM0 SM1 SM2 REN TB8 RB8 TI RI
SCON 0 1 0 1 0 0 1 0
GTE C/T M1 M0 GTE C/T M1 M0
TMOD 0 0 1 0 0 0 0 0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TCON 0 1 0 0 0 0 0 0
TH1 1 1 1 1 0 0 1 1
Lệnh khởi động port nối tiếp
ORG 8100H
INIT: MOV SCON,#52H ;port n i ti p, ch đ 1ố ế ế ộMOV TMOD,#20H ;b đ nh th i 1, ch đ 2ộ ị ờ ế ộMOV TH1,#F4H ;giá tr n p l i đ có 2400 ị ạ ạ ể
baud
SETB TR1 ;b đ nh th i 1 ho t đ ngộ ị ờ ạ ộEND
04/20/2304/20/23 114114
Ch ng 6ươ
04/20/2304/20/23 115115
Giới thiệu
Ng t là vi c x y ra m t s ki n làm cho ch ng trình ắ ệ ả ộ ự ệ ươhi n hành b t m ng ng trong khi m t đi u ki n khác ệ ị ạ ư ộ ề ệđ c th c hi n.ượ ự ệ
04/20/2304/20/23 116116
Main programMain program
timetime
Chương trình không có ngắtChương trình không có ngắt
MaiMainn
MaiMainn MainMain MaiMai
nn
ISRISR ISRISR ISRISR
timetimeChương trình có ngắtChương trình có ngắt
Tổ chức ngắt
89C51 có 5 nguyên nhân ng t:ắ 2 ng t ngoàiắ 2 ng t do b đ nh th iắ ộ ị ờ 1 ng t do port n i ti pắ ố ế
Có 2 s đ x lý ng t:ơ ồ ử ắ S đ chu i vòngơ ồ ỗ S đ hai m c u tiênơ ồ ứ ư
04/20/2304/20/23 117117
Thanh ghi cho phép ngắt (IE)
04/20/2304/20/23 118118
M i nguyên nhân ng t đ c cho phép ho c không thông ỗ ắ ượ ặqua thanh ghi cho phép ng t IE có đ a ch 0A8Hắ ị ỉ
Bit Kí hiệu Địa chỉ Mô tả
IE.7 EA AFH Cho phép/không cho phép toàn cục
IE.6 - AEH Không sử dụng
IE.5 ET2 ADH Cho phép ngắt do bộ định thời 2
IE.4 ES ACH Cho phép ngắt do port nối tiếp
IE.3 ET1 ABH Cho phép ngắt do bộ định thời 1
IE.2 EX1 AAH Cho phép ngắt từ bên ngoài (1)
IE.0 EX0 A8H Cho phép ngắt từ bên ngoài (0)
IE.1 ET0 A9H Cho phép ngắt do bộ định thời 0
Ưu tiên ngắt
M i nguyên nhân ng t đ c l p trình đ có m t trong ỗ ắ ượ ậ ể ộhai m c u tiên ng t thông qua thanh ghi u tiên ng t IE ứ ư ắ ư ắcó đ a ch 0B8Hị ỉ
04/20/2304/20/23 119119
Bit Kí hiệu Địa chỉ Mô tả
IP.7 - Không sử dụng
IP.6 - Không sử dụng
IP.5 PT2 BDH Ưu tiên ngắt do bộ định thời 2
IP.4 PS BCH Ưu tiên ngắt do port nối tiếp
IP.3 PT1 BBH Ưu tiên ngắt do bộ định thời 1
IP.2 PX1 BAH Ưu tiên ngắt từ bên ngoài (1)
IP.1 PT0 B9H Ưu tiên ngắt do bộ định thời 0
IP.0 PX0 B8H Ưu tiên ngắt từ bên ngoài (0)
Chuỗi vòng
Chu i vòng xác đ nh ng t nào đ c u tiên ph c v ỗ ị ắ ượ ư ụ ụtr c.ướ
M c đ u tiên:ứ ộ ư Ng t ngoài 0ắ Ng t do b đ nh th i 0ắ ộ ị ờ Ng t ngoài 1ắ Ng t do b đ nh th i 1ắ ộ ị ờ Ng t do port n i ti pắ ố ế
04/20/2304/20/23 120120
Xử lý ngắt
Quá trình x lý ng t:ử ắ Hoàn t t vi c th c thi l nh hi n hànhấ ệ ự ệ ệ B đ m ch ng trình PC đ c c t vào stackộ ế ươ ượ ấ Tr ng thái c a ng t hi n hành đ c l u gi l iạ ủ ắ ệ ượ ư ữ ạ Các ng t đ c ch n l i m c ng tắ ượ ặ ạ ở ứ ắ B đ m ch ng trình PC đ c n p đ a ch vector c a trình ộ ế ươ ượ ạ ị ỉ ủ
ph c v ng t ISRụ ụ ắ ISR đ c th c thiượ ự
Vi c th c thi ISR k t thúc khi g p l nh RETI.L nh này ệ ự ế ặ ệ ệl y l i giá tr cũ c a b đ m ch ng trình PC t stack và ấ ạ ị ủ ộ ế ươ ừph c h i tr ng thái c a ng t cũụ ồ ạ ủ ắ
04/20/2304/20/23 121121
Các vector ngắt
Giá tr đ c n p cho b đ m ch ng trình đ c g i là ị ượ ạ ộ ế ươ ượ ọvector ng t.ắ
Vector ng t chính là đ a ch b t đ u c a trình ph c v ắ ị ỉ ắ ầ ủ ụ ụng t c a nguyên nhân t ng ngắ ủ ươ ứ
Khi trình gây ng t đ c tr t i, c gây ng t t đ ng b ắ ượ ỏ ớ ờ ắ ự ộ ịxóa b i ph n c ng, ngo i tr c RI và TIở ầ ứ ạ ừ ờ
04/20/2304/20/23 122122
Địa chỉ các vector ngắt
Ngắt Cờ Địa chỉ
Reset hệ thống RST 0000H
Ngắt ngoài 0 IE0 0003H
Bộ định thời 0 TF0 000BH
Ngắt ngoài 1 IE1 0013H
Bộ định thời 1 TF1 001BH
Port nối tiếp RI hoặc TI 0023H
04/20/2304/20/23 123123
Chương trình sử dụng ngắt
ORG 000H ;đi m nh p sau khi resetể ậLJMP MAIN
... ;các đi m nh p c a ISRể ậ ủORG 0030H;đi m nh p ch ng trình chínhể ậ ươ
MAIN: ;ch ng trình chính b t đ uươ ắ ầ...
04/20/2304/20/23 124124
Trình phục vụ ngắt kích thước nhỏ Các trình ph c v ph i đ c b t đ u g n đáy c a b nh .ụ ụ ả ượ ắ ầ ở ầ ủ ộ ớ Ch có 8 byte gi a các đi m nh p c a trình ph c ng t -> ỉ ữ ể ậ ủ ụ ắ
trình ph c v ng t t ng ng có đ dài không quá 8 byte.ụ ụ ắ ươ ứ ộ Ví d : ng t do b đ nh th i 0ụ ắ ộ ị ờ
ORG 0000H; reset
LJMP MAIN
ORG 000BH; đi m nh p c a ng t do b đ nh th i ể ậ ủ ắ ộ ị ờ0
T0_ISR: ;b t đ u ISR cho b đ nh th i 0ắ ầ ộ ị ờRETI ;tr v ch ng trình chínhở ề ươMAIN:
04/20/2304/20/23 125125
Trình phục vụ ngắt kích thước lớn
V i trình ph c v ng t l n h n 8 byte, ta ph i chuy n ớ ụ ụ ắ ớ ơ ả ểch ng trình này đ n m t n i khác trong b nh ươ ế ộ ơ ộ ớch ng trình ho c l n qua đi m nh p c a ISR khácươ ặ ấ ể ậ ủ
Ví d : kh o sát b đ nh th i 0ụ ả ộ ị ờORG 0000H ;reset
LJMP MAIN
ORG 000BH ;đi m nh p b đ nh th i 0ể ậ ộ ị ờLJMP T0_ISR
ORG 0030H ;phía trên các vector ng tắMAIN:
T0_ISR: ;ISR c a b đ nh th i 0ủ ộ ị ờRETI ;quay v ch ng trình chínhề ươ
04/20/2304/20/23 126126
Ngắt do port nối tiếp
Xu t hi n khi c ng t phát TI ho c c ng t thu RI đ c ấ ệ ờ ắ ặ ờ ắ ượset b ng 1ằ
Ng t phát xu t hi n khi vi c phát m t kí t đã ghi vào SBUF ắ ấ ệ ệ ộ ựhoàn t t(SBUF r ng).ấ ỗ
Ng t thu xu t hi n khi m t kí t đ c thu đ y đ và đang ắ ấ ệ ộ ự ượ ầ ủ ởtrong SBUF (SBUF đ y).ầ
C ng t do port n i ti p gây ra không đ c xóa b i ờ ắ ố ế ượ ởph n c ng. Nguyên nhân ng t ph i đ c xác đ nh trong ầ ứ ắ ả ượ ịtrình ph c v ng t và c ng t ph i đ c xóa b i ph n ụ ụ ắ ờ ắ ả ượ ở ầm mề
04/20/2304/20/23 127127
Các ngắt ngoài
Ng t ngoài x y ra khi có m c th p ho c c nh âm trên ắ ả ứ ấ ặ ạchân /INT0 và /INT1
C t o ra các ng t: bit IE0 và IE1 c a thanh ghi TCONờ ạ ắ ủ C t o ra ng t đ c xóa b i ph n c ng n u là ng t th c lo i tác ờ ạ ắ ượ ở ầ ứ ế ắ ộ ạ
đ ng c nh.ộ ạ N u ng t thu c lo i tác đ ng m c, nguyên nhân ng t sẽ đi u ế ắ ộ ạ ộ ứ ắ ề
khi n m c c a c .ể ứ ủ ờ Vi c ch n lo i tác đ ng ng t là c nh hay m c đ c th c ệ ọ ạ ộ ắ ạ ứ ượ ự
hi n thông qua bit IT0 và IT1 c a TCONệ ủ
04/20/2304/20/23 128128