Căn c\ trên các tín hi u ñi]u khi n này, ALU th1c hi n các thao tác ñã ñưPc xác ñ"nh.M0t chuoi các l nh Opcode k t hPp li v7i nhau ñ th1c hi n m0t công vi c có ý nghĩa ñưPcgei là chương
Trang 3• Bus ñ"a ch#: 12 bit.
• Công ngh ch t(o: PMOS
• Bus ñ"a ch#: 16 bit
• Công ngh ch t(o: NMOS ho c CMOS
• Bus ñ"a ch#: 20 D 24 bit
• Bus ñ"a ch#: 32 bit
• T/c ñ0 th1c hi n l nh: 0,01 – 0,1 5s v7i fCLOCK= 20 – 100 MHz
M0t s/ b0 vi x lý ñ c trưng cho th h này: 68020 / 68030 / 68040 / 68060 (Motorola), 80386 /
Trang 4• KhN năng lưu tr và phXc hYi d li u.
TZng quát, h vi x lý gYm:
• PhVn c\ng (Hardware): các thi t b" ngo(i vi → ñ giao ti p v7i con ngưWi
• PhVn m]m (Software): chương trình → ñ x lý d li u
CPU (Central Processing Unit): ñơn v" x lý trung tâm
RAM (Random Access Memory): b0 nh7 truy xuct ngdu nhiên
ROM (Read Only Memory): b0 nh7 ch# ñec
Interface Circuitry: m(ch ñi n giao ti p
Peripheral Devices (Input): các thi t b" ngo(i vi (thi"t b$ nh%p)
Peripheral Devices (Output): các thi t b" ngo(i vi (thi"t b$ xu't)
Address bus: bus ñ"a ch#
Data bus: bus d li u
Control bus: bus ñi]u khi n
III ðƠN V- X LÝ TRUNG TÂM:
CPU ñóng vai trò ch ñ(o trong h vi x lý, nó quNn lý tct cN các ho(t ñ0ng c a h và th1c hi ntct cN các thao tác trên d li u
CPU là m0t vi m(ch ñi n t có ñ0 tích hPp cao Khi ho(t ñ0ng, CPU ñ,c mã l nh ñưPc ghi dư7id(ng các bit 0 và bit 1 tj b0 nh7, sau ñó nó sk th1c hi n gi/i mã các l nh này thành dãy các xung ñi]ukhi n tương \ng v7i các thao tác trong l nh ñ ñi]u khi n các kh/i khác th0c hi n tjng bư7c các thaotác ñó và tj ñó t(o ra các xung ñi]u khi n cho toàn h
Trang 5IR (Instruction Register): thanh ghi l nh.
PC (Program Counter / Instruction Pointer): b0 ñ m chương trình / con trm l nh
Instruction decode and control unit: ñơn v" giNi mã l nh và ñi]u khi n
ALU (Arithmetic and Logic Unit): ñơn v" s/ hec và logic
Registers: các thanh ghi
Tóm l(i, khi ho(t ñ0ng CPU sk th1c hi n liên tXc 2 thao tác: tìm n=p l nh và gi/i mã – th0c
hi n l nh
• Thao tác tìm n=p l nh:
N0i dung c a thanh ghi PC ñưPc CPU ñưa lên bus ñ"a ch# (1)
Tín hi u ñi]u khi n ñec (Read) chuy n sang tr(ng thái tích c1c (2)
Mã l nh (Opcode) tj b0 nh7 ñưPc ñưa lên bus d li u (3)
Mã l nh ñưPc chuy n vào trong thanh ghi IR trong CPU (4)
N0i dung c a thanh ghi PC tăng lên m0t ñơn v" ñ chunn b" tìm n(p l nh k ti p tj b0 nh7
• Thao tác gi/i mã – th0c hi n l nh:
Mã l nh tj thanh ghi IR ñưPc ñưa vào ñơn v" giNi mã l nh và ñi]u khi n
ðơn v" giNi mã l nh và ñi]u khi n sk th1c hi n giNi mã opcode và t(o ra các tín hi u ññi]u khi n vi c xuct nhQp d li u gi a ALU và các thanh ghi (Registers)
Căn c\ trên các tín hi u ñi]u khi n này, ALU th1c hi n các thao tác ñã ñưPc xác ñ"nh.M0t chuoi các l nh (Opcode) k t hPp l(i v7i nhau ñ th1c hi n m0t công vi c có ý nghĩa ñưPcgei là chương trình (Program) hay phVn m]m (Software)
IV B NH BÁN D=N:
Trang 6Sơ lưPc v] ccu trúc và phân lo(i ROM – RAM:
• ROM (Read Only Memory): b0 nh7 ch# ñec, thông tin trong ROM sk không b" mct ñi ngay
cN khi nguYn ñi n cung ccp cho ROM không còn
Ccu trúc ROM:
Phân lo(i m0t s/ lo(i ROM:
MROM (Mask ROM): ROM m t n(
PROM (Programmable ROM): ROM lQp trình ñưPc
EPROM (Eraseable PROM): ROM lQp trình và xóa ñưPc
UVDEPROM (Ultra Violet EPROM): ROM xóa bsng tia c1c tím
EEPROM (Electric EPROM): ROM lQp trình và xóa bsng tín hi u ñi n
Flash ROM: ROM lQp trình và xóa bsng tín hi u ñi n
• RAM (Random Access Memory): b0 nh7 truy xuct ngdu nhiên (b* nh+ ghi ñ-c), thông tintrong RAM sk b" mct ñi khi nguYn ñi n cung ccp cho RAM không còn
Ccu trúc RAM:
Phân lo(i m0t s/ lo(i RAM:
DRAM (Dynamic RAM): RAM ñ0ngSRAM (Static RAM): RAM tĩnhCách xác ñ"nh dung lưPng b0 nh7 bán ddn 8 bit s dXng cho chip vi ñi]u khi n 8051 như sau:
• D1a vào s/ lưPng chân ñ"a ch#:
Dung lư?ng = 2N, v7i N là s/ ñưWng ñ"a ch# c a b0 nh7
Ví d0: B0 nh7 bán ddn 8 bit có 10 ñưWng ñ"a ch# Cho bi t dung lưPng c a b0 nh7 là bao nhiêu?
N = 10 → Dung lưPng = 210= 1024 = 1 KB
Trang 7256 → Dung lưPng = 256 (Kbit) = 32 (KB)
V CÁC THIKT B- NGOLI VI (CÁC THIKT B- XUMT NHNP):
M(ch ñi n giao ti p (Interface Circuitry) và các thi t b" xuct nhQp hay thi t b" ngo(i vi(Peripheral Devices) t(o ra khN năng giao ti p gi a h vi x lý v7i th gi7i bên ngoài B0 phQn giao
ti p gi a bus h th/ng c a h vi x lý v7i các th gi7i bên ngoài thưWng ñưPc gei là cZng (Port) NhưvQy tùy theo tjng lo(i thi t b" giao ti p mà ta có các cZng nhQp (Input) ñ lcy thông tin tj ngoài vào h
và các cZng xuct (Output) ñ ñưa thông tin tj trong h ra ngoài
TZng quát, ta có 3 lo(i thi t b" xuct nhQp sau:
• Thi t b" lưu tr l7n: băng tj, ñĩa tj, ñĩa quang, …
• Thi t b" giao ti p v7i con ngưWi: màn hình, bàn phím, máy in, …
• Thi t b" ñi]u khi n / ki m tra: các b0 kích thích, các b0 cNm bi n, …
VI H TH+NG BUS:
Bus là tQp hPp các ñưWng dây mang thông tin có cùng ch\c năng Vi c truy xuct thông tin t7im0t m(ch ñi n xung quanh CPU thì nó s dXng 3 lo(i bus: bus ñ"a ch#, bus d li u và bus ñi]u khi n.CPU s dXng h th/ng bus này ñ th1c hi n các thao tác ñec (READ) và ghi (WRITE) thông tin gi aCPU v7i b0 nh7 ho c các thi t b" ngo(i vi
• Bus ñ"a ch# (Address bus):
ð chuy n tNi thông tin c a các bit ñ"a ch#
Là lo(i bus 1 chi]u (CPU→MEM hay I/O)
ð xác ñ"nh b0 nh7 ho c thi t b" ngo(i vi mà CPU cVn trao ñZi thông tin
ð xác ñ"nh dung lưPng b0 nh7 ho c ngo(i vi mà CPU có khN năng truy xuct
• Bus d li u (Data bus):
ð chuy n tNi thông tin c a các bit d li u
Là lo(i bus 2 chi]u (CPU↔MEM hay I/O)
ð xác ñ"nh s/ bit d li u mà CPU có khN năng x lý cùng m0t lúc
• Bus ñi]u khi n (Control bus):
ð chuy n tNi thông tin c a các bit ñi]u khi n (moi ñưWng dây là m0t tín hi u ñi]u khi nkhác nhau)
Là lo(i bus 1 chi]u (CPU MEM5I/O ho6c MEM5I/O CPU)
Trang 8VII VI X LÝ – VI ðI U KHI N:
ð phân bi t b0 vi x lý và b0 vi ñi]u khi n ta có th d1a trên các y u t/ như sau:
Y!u tP phân loSi (Microprocessor)Vi xU lý (Microcontroller)Vi ñiXu khiZn
VIII MINH H[A KIKN TRÚC C A M T H VI ðI U KHI N:
WDT (Watch5Dog Timer): B0 ñ"nh thWi WatchDDog
OSC., OSC/N (Oscillator): B0 dao ñ0ng (N: h s/ chia tVn)
Timer: B0 ñ"nh thWi
Trang 9Program Memory: B0 nh7 chương trình.
EEPROM: B0 nh7 EEPROM
I/O Ports: Các port xuct/nhQp
Instruction Decoder: B0 giNi mã l nh
ALU: đơn v" logic và s/ hec
Accumulator: Thanh ghi tắch lũy
Control Logic: đi]u khi n logic
Program Counter: B0 ự m chương trình
Instructions/Addresses: Các l nh / ự"a ch#
IX L A CH[N B VI đI U KHI N KHI THIKT KK:
Có b/n he vi ựi]u khi n thông dXng trên th" trưWng hi n nay là: 68xxx c a Motorola, 80xxx c aIntel, Z8xx c a Zilog và PIC16xxx c a Microchip Technology Moi lo(i vi ựi]u khi n trên ự]u có m0ttQp l nh và thanh ghi riêng nên chúng không tương thắch ldn nhau VQy khi ta ti n hành thi t k m0t hth/ng s dXng vi ựi]u khi n thì ta cVn d1a trên nh ng tiêu chunn nào? Có ba tiêu chnn chắnh:
Ớ Tiêu chu@n thA nhBt là: đáp \ng yêu cVu tắnh toán m0t cách hi u quN và kinh t Do vQy,trư7c tiên ta cVn phNi xem xét b0 vi ựi]u khi n 8 bit, 16 bit hay 32 bit là thắch hPp nhct M0t s/ tham s/kẠ thuQt cVn ựưPc cân nhyc khi chen l1a là:
TDc ự : t/c ự0 l7n nhct mà vi ựi]u khi n ho trP là bao nhiêu
KiFu IC: là ki u 40 chân DIP, QFP hay là ki u ựóng vm khác (DIP: v8 d9ng hai hàngchân, QFP: v8 vuông d?t) Ki u ựóng vm rct quan treng khi có yêu cVu v] không gian, ki u lyp ráp vàt(o mdu th cho sNn phnm cu/i cùng
Công suBt tiêu thG: là m0t tiêu chunn cVn ự c bi t lưu ý n u sNn phnm dùng pin ho c
ựi n áp lư7i
Dung lưPng b0 nh7 ROM và RAM tắch hPp sẰn trên chip
S/ chân vào/ra và b0 ự"nh thWi trên chip
KhN năng dẶ dàng nâng cao hi u suct ho c giãm công suct tiêu thX
Giá thành trên m0t ựơn v" khi mua s/ lưPng l7n Vì ựây là vcn ự] có Nnh hưẦng ự n giáthành cu/i cùng c a sNn phnm
Ớ Tiêu chu@n thA hai là: Có sẰn các công cX phát tri n phVn m]m, chẨng h(n như các chươngtrình mô phmng, trình biên d"ch, trình hPp d"ch và gẬ r/i
Ớ Tiêu chu@n thA ba là: KhN năng ựáp \ng v] s/ lưPng Ầ hi n t(i cũng như Ầ tương lai đ/iv7i m0t s/ nhà thi t k thì tiêu chunn này thQm chắ còn quan treng hơn cN hai tiêu chunn trên
Trang 11B' nh2 chương trình bên trong: 4 KB (ROM).
B' nh2 d; li<u bên trong: 128 byte (RAM)
B' nh2 chương trình bên ngoài: 64 KB (ROM)
B' nh2 d; li<u bên ngoài: 64 KB (RAM)
4 port xuAt nhBp (I/O port) 8 bit
2 b' ñCnh thDi 16 bit
M ch giao tiEp n)i tiEp
B' xF lý bit (thao tác trên các bit riêng l )
210 vC trí nh2 ñưIc ñCnh ñCa chJ, mLi vC trí 1 bit
Nhân / Chia trong 4 Ps
Ngoài ra, trong h MCS 51 còn có m't s) chip vi ñi u khi n khác có cAu trúc tương ñương như:
2 Các phiên b5n c6a chip vi ñi9u khi;n 8051:
2.1 B vi ñi9u khi;n 8031:
8031 là m't phiên b/n khác c a h 8051 Chip này thưDng ñưIc coi là 8051 không có ROM trênchip ð có th dùng ñưIc chip này cbn ph/i b sung thêm ROM ngoài chca chương trình cbn thiEt cho
8031 8051 có chương trình ñưIc chca d ROM trên chip bC gi2i h n ñEn 4KB, còn ROM ngoài c a
8031 thì có th lên ñEn 64KB Tuy nhiên, ñ có th truy cBp hEt b' nh2 ROM ngoài thì cbn dùng thêmhai c ng (Port 0 và Port 2) , do vBy chJ còn l i có hai c ng (Port 1 và Port 3) ñ sF dfng Nhgm khhcphfc vAn ñ này, chúng ta có th b sung thêm c ng vào/ra cho 8031
2.2 B vi ñi9u khi;n 8052:
Trang 12ð=c tính k? thu@t 8031 8051 8052
2.4 B vi ñi9u khi;n AT8951 c6a Atmel Corporation:
AT8951 là phiên b/n 8051 có ROM trên chip là b' nh2 Flash Phiên b/n này rAt thích hIp chocác cng dfng nhanh vì b' nh2 Flash có th ñưIc xóa trong vài giây Dĩ nhiên là ñ dùng AT8951 cbnph/i có thiEt bC lBp trình PROM hL trI b' nh2 Flash nhưng không cbn ñEn thiEt bC xóa ROM vì b' nh2Flash ñưIc xóa bgng thiEt bC lBp trình PROM ð ti<n sF dfng, hi<n nay hãng Atmel ñang nghiên ccum't phiên b/n c a AT8951 có th ñưIc lBp trình qua c ng COM c a máy tính PC và như vBy sl khôngcbn ñEn thiEt bC lBp trình PROM
Trang 13c a máy tính PC ðây là m't ñi m m nh rAt ñưIc ưa chu'ng Ngoài ra, NV RAM còn có ưu vi<t là chophép thay ñ i n'i dung RAM theo tqng byte mà không cbn ph/i xóa hEt trư2c khi lBp trình như b' nh2EPROM.
2.6 B vi ñi9u khi;n P89V51xx c6a Philips Corporation:
ðây là m't phiên b/n c/i tiEn sF dfng CPU là b' vi ñi u khi n 80C51 v2i nhi u tính năng vưIttr'i: dung lưIng ROM/RAM trên chip rAt l2n, 3 Timer 16 bit + 1 Watch dog Timer, 2 thanh ghi DPTR,
8 ngutn nght, PWM (Pulse Width Modulator), SPI (Serial Peripheral Interface) và ñ*c bi<t là b' nh2chương trình trên chip có tính năng ISP (In9System Programming) và IAP (In9ApplicationProgramming),…
II CÁC CHÂN CSA CHIP 8051:
1 Sơ ñU khKi và chWc năng các khKi c6a chip 8051:
Trang 14CPU (Central Processing Unit): ðơn vC xF lý trung tâm → tính toán và ñi u khi n quátrình ho t ñ'ng c a h< th)ng.
OSC (Oscillator): M ch dao ñ'ng → t o tín hi<u xung clock cung cAp cho các kh)i trongchip ho t ñ'ng
Interrupt control: ði u khi n nght → nhBn tín hi<u nght tq bên ngoài (INT0\, INT1\), tqb' ñCnh thDi (Timer 0, Timer 1) và tq c ng n)i tiEp (Serial port), lbn lưIt ñưa các tín hi<u nght này ñEnCPU ñ xF lý
Other registers: Các thanh ghi khác → lưu tr; d; li<u c a các port xuAt/nhBp, tr ng tháilàm vi<c c a các kh)i trong chip trong su)t quá trình ho t ñ'ng c a h< th)ng
RAM (Random Access Memory): B' nh2 d; li<u trong chip → lưu tr; các d; li<u.ROM (Read Only Memory): B' nh2 chương trình trong chip → lưu tr; chương trình
ho t ñ'ng c a chip
I/O ports (In/Out ports): Các port xuAt/nhBp → ñi u khi n vi<c xuAt nhBp d; li<u dư2i
d ng song song gi;a trong và ngoài chip thông qua các port P0, P1, P2, P3
Serial port: Port n)i tiEp → ñi u khi n vi<c xuAt nhBp d; li<u dư2i d ng n)i tiEp gi;atrong và ngoài chip thông qua các chân TxD, RxD
Timer 0, Timer 1: B' ñCnh thDi 0, 1 → dùng ñ ñCnh thDi gian ho*c ñEm so ki<n (ñ,mxung) thông qua các chân T0, T1
Bus control: ði u khi n bus → ñi u khi n ho t ñ'ng c a h< th)ng bus và vi<c di chuy nthông tin trên h< th)ng bus
Bus system: H< th)ng bus → liên kEt các kh)i trong chip l i v2i nhau
2 Sơ ñU chân và chWc năng các chân c6a chip 8051:
Trang 152.1 Port 0:
Port 0 (P0.0 – P0.7) có s) chân tq 32 – 39
Port 0 có hai chcc năng:
• Port xuAt nhBp d; li<u (P0.0 9 P0.7) → không sF dfng b' nh2 ngoài
• Bus ñCa chJ byte thAp và bus d; li<u ña hIp (AD0 – AD7) → có sF dfng b' nh2ngoài
Lưu ý: Khi Port 0 ñóng vai trò là port xuDt nhEp dF li!u thì phGi s* dHng các ñi!n trI kéo lênbên ngoài
y chE ñ' m*c ñCnh (khi reset) thì các chân Port 0 (P0.0 9 P0.7) ñưIc cAu hình là port xuDtd; li<u Mu)n các chân Port 0 làm port nhEp d; li<u thì cbn ph/i lBp trình l i, bgng cách ghi mcc logiccao (mIc 1) ñEn tAt c/ các bit c a port trư2c khi bht ñbu nhBp d; li<u tq port (vJn ñK này ñưMc trìnhbày O phPn k, ti,p)
Khi lBp trình cho ROM trong chip thì Port 0 ñóng vai trò là ngõ vào c a d; li<u (D0 – D7)(xem sách “HS vi ñiKu khiTn 8051” trang 3339352)
Khi lBp trình cho ROM trong chip thì Port 1 ñóng vai trò là ngõ vào c a ñCa chJ byte thAp(A0 – A7) (xem sách “HS vi ñiKu khiTn 8051” trang 3339352)
2.3 Port 2:
Port 2 (P2.0 – P2.7) có s) chân tq 21 – 28
Port 2 có hai chcc năng:
• Port xuAt nhBp d; li<u (P2.0 – P2.7) → không sF dfng b' nh2 ngoài
• Bus ñCa chJ byte cao (A8 – A15) → có sF dfng b' nh2 ngoài
y chE ñ' m*c ñCnh (khi reset) thì các chân Port 2 (P2.0 – P2.7) ñưIc cAu hình là port xuDtd; li<u Mu)n các chân Port 2 làm port nhEp d; li<u thì cbn ph/i lBp trình l i, bgng cách ghi mcc logiccao (mIc 1) ñEn tAt c/ các bit c a port trư2c khi bht ñbu nhBp d; li<u tq port (vJn ñK này ñưMc trìnhbày O phPn k, ti,p)
Khi lBp trình cho ROM trong chip thì Port 2 ñóng vai trò là ngõ vào c a ñCa chJ byte cao (A8– A11) và các tín hi<u ñi u khi n (xem sách “HS vi ñiKu khiTn 8051” trang 3339352)
2.4 Port 3:
Port 3 (P3.0 – P3.7) có s) chân tq 10 – 17
Port 3 có hai chcc năng:
Port xuAt nhBp d; li<u (P3.0 – P3.7) → không sF dfng b' nh2 ngoài ho*c các
Trang 16Khi lBp trình cho ROM trong chip thì Port 3 ñóng vai trò là ngõ vào c a các tín hi<u ñi ukhi n (xem sách “HS vi ñiKu khiTn 8051” trang 3339352).
Chcc năng c a các chân Port 3:
PSEN (Program Store Enable): cho phép b' nh2 chương trình, chân s) 29
Chcc năng:
• Là tín hi<u cho phép truy xuAt (ñOc) b' nh2 chương trình (ROM) ngoài
• Là tín hi<u xuAt, tích coc mcc thAp
PSEN\ = 0 → trong thDi gian CPU tìm n p l<nh tq ROM ngoài
PSEN\ = 1 → CPU sF dfng ROM trong (không sW dXng ROM ngoài)
Khi sF dfng b' nh2 chương trình bên ngoài, chân PSEN\ thưDng ñưIc n)i v2i chân OE\ c aROM ngoài ñ cho phép CPU ñ c mã l<nh tq ROM ngoài
• Là tín hi<u xuAt, tích coc mcc cao
ALE = 0 → trong thDi gian bus AD0 AD7 ñóng vai trò là bus D0 D7
ALE = 1 → trong thDi gian bus AD0 AD7 ñóng vai trò là bus A0 A7
Khi lBp trình cho ROM trong chip thì chân ALE ñóng vai trò là ngõ vào c a xung lBp trình(PGM\) (xem sách “HS vi ñiKu khiTn 8051” trang 3339352)
Lưu ý:
6
OSC ALE
f
f = →có th dùng làm xung clock cho các m ch khác
fALE(MHz): tbn s) xung t i chân ALE
fOSC(MHz): tbn s) dao ñ'ng trên chip (tbn s) th ch anh)
Khi l<nh lAy d; li<u tq RAM ngoài (MOVX) ñưIc thoc hi<n thì m't xung ALE bC b~ qua(xem gi\n ñ/ trang 38939 sách “HS vi ñiKu khiTn 8051”)
2.7 Chân EA\:
Trang 17• Là tín hi<u nhBp, tích coc mcc thAp.
EA\ = 0 → Chip 8051 sF dfng chương trình c a ROM ngoài
EA\ = 1 → Chip 8051 sF dfng chương trình c a ROM trong
Khi lBp trình cho ROM trong chip thì chân EA ñóng vai trò là ngõ vào c a ñi<n áp lBp trình(Vpp = 12V – 12,5V cho hS 89xx; 21V cho hS 80xx, 87xx) (xem sách “HS vi ñiKu khiTn 8051” trang3339352)
Lưu ý: Chân EA\ ph/i ñưIc n)i lên Vcc (n,u sW dXng chương trình c`a ROM trong) ho*c n)ixu)ng GND (n,u sW dXng chương trình c`a ROM ngoài), không bao giD ñưIc phép b~ tr)ng chân này
XTAL (Crystal): tinh th th ch anh, chân s) 18 19
Chcc năng:
• Dùng ñ n)i v2i th ch anh ho*c m ch dao ñ'ng t o xung clock bên ngoài, cungcAp tín hi<u xung clock cho chip ho t ñ'ng
• XTAL1 → ngõ vào m ch t o xung clock trong chip
• XTAL2 → ngõ ra m ch t o xung clock trong chip
RST (Reset): thiEt lBp l i, chân s) 9
Chcc năng:
• Là tín hi<u cho phép thiEt l*p (ñat) l i tr ng thái ban ñbu cho h< th)ng
• Là tín hi<u nhBp, tích coc mcc cao
f
Trang 18Ví dX: Xác ñCnh chu kỳ máy và thDi gian reset tương cng cho tqng trưDng hIp fOSC = 11,0592MHz,
fOSC = 12MHz và fOSC= 16MHz
Gi\i
• fOSC= 11,0592MHz → TMACHINE= 1,085Ps và tRESET≥ 2,17Ps
• fOSC= 12MHz → TMACHINE= 1Ps và tRESET≥ 2Ps
• fOSC= 16MHz → TMACHINE= 0,75Ps và tRESET≥ 1,5Ps
III CcU TRÚC CÁC PORT XUcT NHeP CHIP 8051:
Kh/ năng fanout (s) lưIng t/i ñbu ra) c a các tqng chân port chip 8051 là:
• Khi Port 0 ñóng vai trò là port xuDt nhEp thì sl không có ñi<n trd kéo lên bên trong → do
ñó ngư i s* dHng c n thêm vào ñi!n trI kéo lên bên ngoài (xem Hình III.1)
• y chE ñ' m*c ñCnh (khi reset) thì tAt c/ các chân c a các port (P0 – P3) ñưIc cAu hình làport xuDt d; li<u
• Mu)n các chân port c a chip 8015 làm port nhEp d; li<u thì ta cbn ph/i ñưIc lBp trình l i,
Trang 19• Các chân trong cùng m't port không nhAt thiEt ph/i có cùng ki u cAu hình (port xuJt hoacport nhcp) Nghĩa là trong cùng m't port có th có chân dùng ñ nhBp d; li<u, có th có chân dùng ñxuAt d; li<u ði u này là tùy thu'c vào nhu cbu và mfc ñích c a ngưDi lBp trình.
Quá trình ghi chân port (xuJt dd lieu ra chân port)
Quá trình ñ c chân port (nhcp dd lieu tf chân port)
Quá trình ñ c b' ch)t (kiTm tra dd lieu tgi chân port)
Trang 20Lưu ý: Vi<c ñ c d; li<u c a bAt kỳ m't port nào có th cho ta hai giá trC khác nhau tùy thu'cvào l<nh mà ta sF dfng ñ ñ c d; li<u tq port (xem thêm trong phPn tcp lenh) X/y ra hi<n tưIngkhông mong mu)n này là do quá trình ñ c d; li<u c a chip 8051 gtm hai quá trình khác nhau: quátrình ñSc chân port và quá trình ñSc b$ ch+t.
Quá trình ñOc chân port: Khi ta sF dfng các l<nh MOV, ADD,… D; li<u nhBnñưIc sau khi thoc hi<n quá trình ñ c là dF li!u hi!n t0i I các chân port
Quá trình ñOc bW chXt: Khi ta sF dfng các l<nh ANL, ORL, XRL, CPL, INC,DEC, DJNZ, JBC, CLR bit, SETB bit, MOV bit D; li<u nhBn ñưIc sau khi thoc hi<n quá trình ñ c là
dF li!u hi!n t0i I các bW chXt (là các dd lieu ñã ñưMc ghi ra port tgi th'i ñiTm trưjc ñó bOi quá trìnhghi chân port), chc không ph/i là d; li<u hi<n t i d các chân port Cho nên, nEu t i thDi ñi m thoc hi<nquá trình ñ c mà d; li<u t i các chân port có bC thay ñ i ñi chăng n;a thì d; li<u ñ c v cũng khôngñưIc cBp nhBt
IV T CH C Bf NHg CSA CHIP 8051:
B' vi xF lý → có không gian b' nh2 chung cho d; li<u và chương trình
→chương trình và d; li<u ngm chung trên RAM trư2c khi ñưa vào CPU ñ thoc thi
B' vi ñi u khi n → có không gian b' nh2 riêng cho d; li<u và chương trình
→chương trình và d; li<u ngm riêng trên ROM và RAM trư2c khi ñưa vào CPU ñ thoc thi
T chcc b' nh2 c a chip 8051:
Trang 211 B nh trong:
Trang 221.1 B nh chương trình (ROM):
Dùng ñ lưu tr; chương trình ñi u khi n cho chip 8051 ho t ñ'ng
Chip 8051 có 4 KB ROM trong, ñCa chJ truy xuAt: 000H – FFFH
1.2 B nh dl li!u (RAM):
Dùng ñ lưu tr; các d; li<u và tham s)
Chip 8051 có 128 byte RAM trong, ñCa chJ truy xuAt: 00H – 7FH
RAM trong c a chip 8051 ñưIc chia ra:
• RAM ña chcc năng:
• RAM ñCnh ñCa chJ bit:
→cho phép xF lý tqng bit d; li<u riêng l† mà không /nh hưdng ñEn các bit khác trong c/ byte
Lưu ý: NEu trong chương trình không sF dfng các bit trong vùng RAM ñCnh ñCa chJ bit này, ta
có th sF dfng vùng nh2 20H – 2FH cho các mfc ñích khác c a ta NgưIc l i, ta ph/i viEt chương trìnhc‡n thBn khi sF dfng vùng nh2 20H – 2FH vì nEu sơ suAt ta có th ghi d; li<u ñè lên các bit ñã ñưIc sFdfng
Ví dX: ViEt l<nh làm cho 8 bit trong ô nh2 có ñCa chJ 20H thu'c RAM n'i có giá trC là 1 (xéttrư'ng hMp ñ&a chm byte và ñ&a chm bit)
Trang 23• Các dãy thanh ghi:
→cho phép truy xuAt d; li<u nhanh, l<nh truy xuAt ñơn gi/n và nghn g n
B/ng s) li<u dư2i ñây minh h a ñCa chJ c a các ô nh2 trong m't dãy và các ký hi<u thanh ghiR0 – R7 ñưIc gán cho tqng ô nh2 trong dãy tích coc
Lưu ý:
y chE ñ' m*c ñCnh thì dãy thanh ghi tích coc (ñang ñưIc sF dfng) là dãy 0 và các thanhghi trong dãy lbn lưIt có tên là R0 o R7 Có th thay ñ i dãy tích coc bgng cách thay ñ i các bit ch ndãy thanh ghi RS1 và RS0 trong thanh ghi PSW (xem phPn thanh ghi PSW)
NEu chương trình c a ta chJ sF dfng dãy thanh ghi ñbu tiên (dãy 0) thì ta có th sF dfngvùng nh2 08H – 1FH cho các mfc ñích khác c a ta Nhưng nEu trong chương trình có sF dfng các dãythanh ghi (dãy 1, 2 hoac 3) thì ph/i rAt c‡n thBn khi sF dfng vùng nh2 tq 1FH trd xu)ng vì nEu sơ suAt
ta có th ghi d; li<u ñè lên các thanh ghi R0 – R7 c a ta
Ví dX 1: Quan h< gi;a ký hi<u thanh ghi R4 v2i các ô nh2 có ñCa chJ tương cng trong dãy thanhghi tích coc?
NEu dãy 0 tích coc: Thanh ghi R4 Ô nh2 04H RAM n'i
NEu dãy 1 tích coc: Thanh ghi R4 Ô nh2 0CH RAM n'i
NEu dãy 2 tích coc: Thanh ghi R4 Ô nh2 14H RAM n'i
NEu dãy 3 tích coc: Thanh ghi R4 Ô nh2 1CH RAM n'i
Ví dX 2: Khi chip 8051 thoc hi<n l<nh MOV R4, #1AH thì giá trC “1AH” sl ñưIc n p vào trong
ô nh2 có ñCa chJ là bao nhiêu thu'c RAM n'i Xét tương cng cho tqng trưDng hIp dãy thanh ghi tíchcoc là Dãy 0 và Dãy 3?
Trang 241.3 Thanh ghi chWc năng ñ=c bi!t (SFR):
Lưu ý:
Không ñưIc phép ñ c hay ghi d; li<u vào các ñCa chJ SFR mà nó chưa ñưIc ñăng ký(nghĩa là các ñ&a chm SFR chưa ñưMc ñat tên) Vì vi<c ñ c hay ghi d; li<u vào các nơi này có th làmphát sinh nh;ng ho t ñ'ng không mong mu)n và ñó có th là nguyên nhân làm cho chương trình c a takhông tương thích v2i các phiên b/n sau c a chip MCS 51 (có thT O các phiên b\n ñó các ñ&a chm SFRnày ñưMc sW dXng cho m$t vài mXc ñích khác)
Chq ñưrc truy xust các SFR bung ki;u ñ0nh ñ0a chq trvc tiwp (tuy!t ñXi không s*dHng ki u ñ^nh ñ^a ch_ gián ti`p trong trư ng hap này)
Ví dX: Cho biEt trư2c (R0)=90H ViEt l<nh dùng ñ xuAt (ghi) giá trC 5AH ra Port1 như sau (xemgi\i thích lenh trong “Chương 3: TEp l!nh cba 8051.”):
SF dfng ki u ñCnh ñCa chJ troc tiEp:
SF dfng ki u ñCnh ñCa chJ gián tiEp:
ði u này không hIp l< ñ)i v2i chip 8051 vì phương pháp ñCnh ñCa chJ gián tiEp như trênchJ sF dfng cho vùng nh2 RAM n'i Trong khi ñó RAM n'i c a chip 8051 chJ có 128 byte (00H –7FH), cho nên khi thoc hi<n l<nh này nó sl tr/ v kEt qu/ không xác ñCnh (Lưu ý: n,u ta dùng phiênb\n chip 8052 thì sr tránh ñưMc ñiKu này)
1.3.1 Thanh ghi A:
! "# " $ % # & #& #
' ( ) * + , -"% #1.3.2 Thanh ghi B:
Phép nhân 2 s) 8 bit không dAu → kEt qu/ là s) 16 bit
Trang 25• Thương s) → chca vào thanh ghi A.
• S) dư → chca vào thanh ghi B
Ví dX: Thoc hi<n phép tính 12H x 2AH H~i (A)=?, (B)=?
Ví dX: Thoc hi<n phép tính A6H : 21H H~i (A)=?, (B)=?
Ví dX: Thoc hi<n phép tính FDH : 0CH H~i (A)=?, (B)=?
1.3.3 Thanh ghi ty PSW:
CD CY (Carry Flag): cD nh2 → báo có nh2/mưIn t i bit 7
• CY = 0: nEu không có nh2 tq bit 7 ho*c không có mưIn cho bit 7
• CY = 1: nEu có nh2 tq bit 7 ho*c có mưIn cho bit 7
CD AC (Auxiliary Carry): cD nh2 phf → báo có nh2/mưIn t i bit 3
• AC = 0: nEu không có nh2 tq bit 3 ho*c không có mưIn cho bit 3
• AC = 1: nEu có nh2 tq bit 3 ho*c có mưIn cho bit 3
Trang 26Bit RS0, RS1 (Register Select): bit ch n dãy thanh ghi → cho phép xác ñCnh dãy thanhghi tích coc (hay dãy thanh ghi mà các thanh ghi có tên là R09R7).
• OV = 0: nEu 128 ≤ kEt qu/ ≤ +127
• OV = 1: nEu kEt qu/ < 128 ho*c kEt qu/ > +127 Nói cách khác là: ð)i v2i phépc$ng thì OV=1 nEu có nh2 tq bit 7 nhưng không có nh2 tq bit 6 ho*c nEu có nh2 tq bit 6 nhưng không
có nh2 tq bit 7 ð)i v2i phép trf thì OV=1 nEu có mưIn cho bit 7 nhưng không có mưIn cho bit 6ho*c nEu có mưIn bit 6 nhưng không có mưIn bit 7
CD P (Parity): cD chŽn l† → báo s) ch; s) 1 trong thanh ghi A là s) chŽn hay s) l† (trongchip 8051 sW dXng ch, ñ$ parity chun)
• P = 0: nEu s) ch; s) 1 trong thanh ghi A là s) chŽn (parity chun)
• P = 1: nEu s) ch; s) 1 trong thanh ghi A là s) l† (parity chun)
Ví dX: Minh h a cách 8051 bi u di•n s) 5
Gi\iCác bư2c thoc hi<n:
VBy s) FBH là bi u di•n s) có dAu d ng bù 2 c a s) 5
Ví dX: Minh h a cách 8051 bi u di•n s) 34H
Các bư2c thoc hi<n:
Trang 27Ví dX: Minh h a cách 8051 bi u di•n s) 128.
Các bư2c thoc hi<n:
VBy s) 80H là bi u di•n s) có dAu d ng bù 2 c a s) 128
Ví dX: Minh h a tr ng thái ho t ñ'ng c a các cD CY, AC, OV và P khi thoc hi<n phép c'ng/trqs) h c hai giá trC v2i nhau
C' nhj (CY):
Minh h a ho t ñ'ng c a cD CY trong trưDng hIp CY = 1:
Xét cD CY trong hai trưDng hIp “7AH+28H” và “9AHe5DH”:
Xét cD CY trong hai trưDng hIp “95H+86H” và “00HeA6H”:
C' nhj phX (AC):
Minh h a ho t ñ'ng c a cD AC trong trưDng hIp AC = 1
Trang 28Xét cD AC trong hai trưDng hIp “92H+28H” và “4AHeE3H”:
Xét cD AC trong hai trưDng hIp “7AH+59H” và “97He5DH”:
C' tràn (OV):
Minh h a ho t ñ'ng c a cD OV trong trưDng hIp OV = 1
Xét cD OV trong các trưDng hIp “B3H+25H”, “BBH+C9H”, “BBHe96H” và “4BHeF3H”:
Xét cD OV trong các trưDng hIp “53H+45H”, “82H+BAH”, “9AHe3EH” và “66HeDAH”:
C' Parity (P):
Xét cD P trong các trưDng hIp “(A)=45H”, “(A)=E7H”, “(A)=00H”:
Trang 29Ví dX: Xác ñCnh n'i dung các ô nh2 thu'c RAM n'i c a ño n chương trình sau:
Ví dX: Xác ñCnh n'i dung các ô nh2 thu'c RAM n'i c a ño n chương trình sau:
1.3.4 Thanh ghi SP:
Ngăn xEp là vùng nh2 dùng ñ lưu tr; t m thDi các d; li<u
ð)i v2i chip 8051 thì vùng nh2 ñưIc dùng ñ làm ngăn xEp ñưIc gi; trong RAM n'i
ð sF dfng ngăn xEp thì ta ph/i khdi ñ'ng thanh ghi SP (nghĩa là ngp giá tr& cho thanhghi SP) → vùng nh2 c a ngăn xEp có ñ&a chm b0t ñPu: (SP)+1 và ñ&a chm k,t thúc: 7FH
NEu không khdi ñ'ng SP → vùng nh2 c a ngăn xEp có ñ&a chm b0t ñPu: 08H và ñ&a chmk,t thúc: 7FH (ch, ñ$ mac ñ&nh)
Trang 30Ví dX: Hãy cho biEt tbm ñCa chJ c a vùng nh2 ngăn xEp trong hai trưDng hIp sau: (SP)=5FH và(SP)=49H.
Theo qui ñCnh thì vùng nh2 c a ngăn xEp có ñ&a chm b0t ñPu: (SP)+1 và ñ&a chm k,t thúc: 7FH.TrưDng hIp (SP)=5FH: tbm ñCa chJ c a vùng nh2 ngăn xEp là 60H o 7FH
TrưDng hIp (SP)=49H: tbm ñCa chJ c a vùng nh2 ngăn xEp là 4AH o 7FH
Ví dX: Hãy cho biEt giá trC cbn ph/i n p cho thanh ghi SP ñ vùng nh2 ngăn xEp có tbm ñCa chJtrong hai trưDng hIp sau: 62H – 7FH và 50H – 7FH
Theo qui ñCnh thì vùng nh2 c a ngăn xEp có ñ&a chm b0t ñPu: (SP)+1 và ñ&a chm k,t thúc: 7FH.TrưDng hIp 62H – 7FH: giá trC cbn n p cho thanh ghi SP là 61H
TrưDng hIp 50H – 7FH: giá trC cbn n p cho thanh ghi SP là 4FH
Ví dX: Minh h a vùng nh2 ngăn xEp trong trưDng hIp không khdi ñ'ng SP (ch, ñ$ mac ñ&nh) và
Trang 31Ví dX: Khi ta mu)n truy xuAt (ghi/ñSc) d; li<u tq m't ô nh2 thu'c RAM ngoài có ñCa chJ là0123H thì ta ph/i làm sao n p ñưIc giá trC 0123H vào thanh ghi DPTR và sau ñó thoc hi<n l<nh truyxuAt MOVX (xem gi\i thích lenh trong “Chương 3: TEp l!nh cba 8051.”).
(DPTR) = 0123H ⇔⇔(DPH) = 01H và (DPL) = 23H
Ví dX: Khi ta mu)n truy xuAt (ñSc) byte mã tq m't ô nh2 thu'c ROM trong có ñCa chJ là0ABCH thì ta ph/i làm sao n p ñưIc giá trC 0ABCH vào thanh ghi DPTR và sau ñó thoc hi<n l<nh truyxuAt MOVC (xem gi\i thích lenh trong “Chương 3: TEp l!nh cba 8051.”)
(DPTR) = 0ABCH ⇔⇔(DPH) = 0AH và (DPL) = BCH1.3.6 Thanh ghi port xust nh@p:
Lưu ý:
Trong trưDng hIp phbn ccng có sF dfng ROM ho*c RAM bên ngoài thì ta không th sFdfng Port 0 và Port 2 ñ xuAt nhBp d; li<u Vì khi ñó chip 8051 sl sF dfng hai port này ñ xác ñCnh ñCachJ và d; li<u cho b' nh2 ngoài Khi ñó, ta chJ có th sF dfng Port 1 và Port 3 ñ xuAt nhBp d; li<u
y chE ñ' m*c ñCnh (khi reset) thì tAt c/ các chân c a các port (P0 – P3) ñưIc cAu hình làport xuDt d; li<u Mu)n các chân port c a chip 8015 làm port nhEp d; li<u thì ta cbn ph/i ñưIc lBptrình l i, bgng cách ghi mcc logic cao (mIc 1) ñEn tAt c/ các bit (các chân) c a port trư2c khi bht ñbunhBp d; li<u tq port
Ví dX 1: Ho t ñ'ng xuAt (ghi) và nhBp (ñSc) d; li<u t i các chân port (Port 0) c a chip 8051(xem hình minh hSa bên dưji)
• Hình phía trái: Minh h a tr ng thái ho t ñ'ng c a port khi thoc hi<n l<nh xuAt(ghi) d; li<u ra Port 0 c a chip 8051
• Hình phía ph\i: Minh h a tr ng thái ho t ñ'ng c a port khi thoc hi<n l<nh nhBp(ñSc) d; li<u tq Port 0 c a chip 8051
Trang 32Ví dX 2: ðo n chương trình dư2i ñây sl cAu hình cho Port 0 làm port nhBp (ñSc) d; li<u Sau ñóliên tfc ñ c d; li<u tq port này và gFi d; li<u ñó ñEn Port 1 (xem gi\i thích lenh trong “Chương 3:TEp l!nh cba 8051.”):
;cách ghi “1” vào tAt c/ các bit
BACK:
Ví dX 3: ðo n chương trình dư2i ñây sl thoc hi<n các thao tác sau (xem gi\i thích lenh trong
“Chương 3: TEp l!nh cba 8051.”):
• Liên tfc ki m tra bit P1.2 cho ñEn khi bit này bgng 1
• Khi P1.2 =1, hãy xuAt (ghi) giá trC 45H ra P0
• GFi m't xung mcc cao t2i P1.3
1.3.7 Thanh ghi port nKi tiwp:
(xem thêm trong “Chương 5: Ho0t ñWng cba port nXi ti`p.”)
Trang 331.3.8 Thanh ghi ñ0nh th1i:
(xem thêm trong “Chương 4: Ho0t ñWng cba bW ñ^nh th i.”)
Trang 341.3.9 Thanh ghi ngIt:
(xem thêm trong “Chương 6: Ho0t ñWng ngjt.”)1.3.10 Thanh ghi ñi9u khi;n nguUn:
(xem thêm trong “Chương 5: Ho0t ñWng cba port nXi ti`p.”)Bit SMOD (Serial Mode) → cho phép tăng gAp ñôi t)c ñ' truy n d; li<u n)i tiEp (t+c ñ$baud) khi SMOD = 1
Bit GF1, GF0 (General Function) → cho phép ngưDi lBp trình dùng v2i mfc ñích riêng(ds trd cho các phiên b\n chip trong tương lai)
Bit PD (Power Down) → dùng ñ qui ñCnh chE ñ' ngutn giãm
Bit IDL (Idle) → dùng ñ qui ñCnh chE ñ' nghĩ
Trang 35Lưu ý: H< th)ng ph/i phfc hti Vcc = 5V trư2c khi thoát kh~i chE ñ' ngutn giãm.
2 B nh ngoài:
Chip 8051 cho ta kh/ năng md r'ng:
• Không gian b' nh2 chương trình lên ñEn 64 KB
• Không gian b' nh2 d; li<u lên ñEn 64 KB
Khi sF dfng b' nh2 ngoài:
• Port 0 → bus ñCa chJ byte thAp và bus d; li<u ña hIp (AD09AD7)
• Port 2 → bus ñCa chJ byte cao (A89A15)
• Port 3 → các tín hi<u ñi u khi n (WR\, RD\)
So khác nhau gi;a ña hIp và không ña hIp bus ñCa chJ và bus d; li<u:
→nhgm làm giãm s) lưIng chân ñưa ra ngoài chip → giãm kích thư2c c a chip
Trang 362.1 Kwt nKi và truy xust b nh chương trình ngoài:
Trang 372.2 Kwt nKi và truy xust b nh dl li!u ngoài:
G5 G4 G3 GI GD G6 G5 G4 G3 GI GD G6
9/G FJ0.J/>0 4
Trang 382.3 Gi5i mã ñ0a chq:
NEu ta trưDng hIp ROM và RAM ñưIc kEt hIp tq nhi u b' nh2 có dung lưIng nh~ ho*c c/ haigiao tiEp v2i chip 8051 thì ta cbn ph/i gi/i mã ñCa chJ Vi<c gi/i mã ñCa chJ này cũng cbn cho hbu hEtcác b' vi xF lý (xem thêm trong “Chương phH lHc 1: GiGi mã ñ^a ch_.”)
Ví df nEu các ROM và RAM có dung lưIng 8KB ñưIc sF dfng thì tbm ñCa chJ mà chip 8051qu/n lý (0000H – FFFFH) cbn ph/i ñưIc gi/i mã thành tqng ño n 8 KB ñ chip có th ch n tqng ICnh2 trên các gi2i h n 8KB tương cng: IC1: 0000H – 1FFFH, IC2: 2000H – 3FFFH, …
IC chuyên dùng cho vi<c t o tín hi<u gi/i mã là 74HC138, các ngõ ra c a IC này lbn lưIt ñưIcn)i v2i các ngõ vào ch n chip CS\ tương cng c a các IC nh2 ñ cho phép các IC nh2 ho t ñ'ng (tgim$t th'i ñiTm chm có m$t IC nhj ñưMc phép hogt ñ$ng) Cbn lưu ý là do các ñưDng cho phép IC nh2
ho t ñ'ng riêng ll cho tqng lo i (PSEN\ cho b$ nhj chương trình, RD\ và WR\ cho b$ nhj dd lieu) nên
8051 có th qu/n lý không gian nh2 lên ñEn 64KB cho ROM và 64KB cho RAM
Trang 392.4 Các không gian nh chương trình và dl li!u gKi nhau:
Trang 40V HO•T ðfNG RESET:
Chân RST = 0 → Chip 8051 ho t ñ'ng bình thưDng
Chân RST = 1 → Chip 8051 ñưIc reset
Lưu ý:
ð hoàn tAt quá trình reset thì chân RST ph/i d mcc cao t)i thi u là 2 chu kỳ máy và sau
ñó chuy n xu)ng mcc thAp
N'i dung c a RAM trong chip không bC /nh hưdng bdi ho t ñ'ng reset
Sau khi reset, vi<c thoc thi chương trình luôn luôn bht ñbu d vi trí ñbu tiên trong b' nh2chương trình: ð^a ch_ 0000H
Tr ng thái c a các thanh ghi sau khi reset h< th)ng:
VI PH N BÀI TeP:
Bài 1: SF dfng m't vi m ch 74138 và các c ng cbn thiEt ñ thiEt kE m ch gi/i mã ñCa chJ t o racác tín hi<u ch n chip tương cng các vùng ñCa chJ sau:
Tín hi<u ch nchip