ụ ụ M c L c
ể ề ể I)Tìm hi u vi đi u khi n 8051
ươ ề ể ể ắ ị
II) Ch ứ ng trình đi u khi n công t c và hi n th lên tám ệ ạ ứ ứ ắ i (Led sáng = m c cao, Led t t = m c th p )
ớ ấ ượ Led m c logic hi n t ắ ạ ủ c a tám công t c g t (SWITCH) đ ượ nối v i Port 0, Led đ c c
ố ớ n i v i Port 1
Ứ ụ ề ể III) ng d ng vi đi u khi n 8051
Ờ
Ầ
L I NÓI Đ U:
ớ ọ ụ ữ ứ i
ế ệ ổ
ữ ạ
ạ ố ộ ủ ự ạ ộ ẹ ệ ừ ế ầ ạ
ế ớ ủ Ngày nay ,v i nh ng ng d ng c a khoa h c tiên ti n ,th gi ự ạ ơ ộ chúng ta đã và đang ngày m t thay đ i văn minh và hi n đ i h n.S ể ế ị ớ ệ ự ậ ỹ phát tri n k thu t đi n t t b v i các đã t o ra hàng lo t nh ng thi ế ặ ọ ư ự ỗ ậ ể đ c đi m n i b t nh s chính xác cao,t c đ nhanh ,g n nh là y u ả ố ầ t t góp ph n cho s ho t đ ng c a con ng oi đ t hi u qu c n thi cao.
ộ ề ể ử ụ ư
ả ơ ứ ạ ử ụ ể ề Các b đi u khi n s d ng vi đi u khi n tuy đ n gi n nh ng đ ộ ậ v n hành và s d ng đ ể ề ấ i là m t đi u r t ph c t p . ượ ạ c l
ộ ề
ệ ừ ớ ự ộ ể ủ ể ề các b vi đi u khi n 4 bít
ơ ẫ ế ờ ể ấ ề ể
ả ở ồ ệ
ữ ự
ờ ố ế ệ ử ứ ụ ệ ử đã đáp ng ư các lĩnh v c côngnônglâmng ạ ộ t trong ho t đ ng đ i s ng
ể Các b vi đi u khi n qua th i gian cùng v i s phát tri n c a công ế ngh bán d n đã ti n tri n r t nhanh ,t ộ đ n gi n đ n các b vi đi u khi n 32 bít ,r i sau này là 64 bít.Đi n t ọ ộ đang tr thành m t nghành khoa h c đa nhi m v .Đi n t ỏ ừ ừ ượ c nh ng đòi h i không ng ng t đ ầ ầ ế ệ nghi p cho các đ n các nhu c u c n thi hàng ngày.
ế ụ ứ ự ụ t th c đó là ng d ng và nhi ệ ế ệ t k đi n
ọ ế ị ề ể ồ ớ
ứ ề ể ắ ị
ắ ắ
ấ ứ ượ ố ớ ể ứ ố ớ ữ ứ ộ M t trong nh ng ng d ng thi .ử t ớ V i các môn h c Vi đi u khi n này,em đã quy t đ nh làm đ án v i ề đ tài : ươ ‘Ch ệ ạ hi n t ạ g t (SWITCH) đ ng trình đi u khi n công t c và hi n th lên tám Led m c logic ủ t = m c th p ) c a tám công t c i (Led sáng = m c cao, Led t c n i v i Port 1 c ượ n i v i Port 0, Led đ ’’
Hà Nội,ngày 13 tháng 9 năm 2015
Sinh viên thực hiện
Ể
Ề
Ể
I TÌM HI U VI ĐI U KHI N 8051
Giới thiệu về họ 8051.
1. L ch s c a vi đi u khi n 8051.
ử ủ ề ể ị
ượ ắ
ể ấ ươ c hãng Intel cho ra m t vào năm 1980 ạ ộ ề B vi đi u khi n 8051 đ ắ ầ ả và b t đ u s n xu t th ng m i năm 1981.
ơ ả ư
ng trình bên trong: 4 KB (ROM).
ớ ươ ớ ữ ệ ộ ộ ộ ố ặ Chip 8051 có m t s đ c tr ng c b n sau: B nh ch B nh d li u bên trong: 128 byte (RAM).
ng trình bên ngoài: 64 KB (ROM).
ộ ộ
ờ ế
ẻ
ớ ượ ị ỗ ị ị ỉ c đ nh đ a ch , m i v trí 1 bit.
ớ ươ B nh ch ớ ữ ệ B nh d li u bên ngoài: 64 KB (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. ộ ử B x lý bit (thao tác trên các bit riêng l ). ị 210 v trí nh đ Nhân / Chia trong 4 µs.
ấ ả ề ượ ặ ượ ệ ố c đ t trên cùng 1 chip => đ c coi là 1 h th ng trên
T t c đ u đ chip
ệ ớ ờ
ơ ế ữ ệ i 1 th i đi m. N u d li u ặ ể ể ử
c chia ra thành các d li u 8 bit đ x lí. M c dù ả ự ạ ư
ấ ưở ấ ạ ể ỉ ể ữ ệ ạ ỉ CPU ch có th làm vi c v i 8 bit d li u t ữ ệ ượ ớ l n h n 8 bit đ 8051 có th có 1 ROM trên chip c c đ i là 64 K byte, nh ng nhà s n ỉ ớ xu t l ng ch v i 4K byte ROM trên chip. i ch cho xu t x
ấ ả
ớ ế ủ ọ
ế ớ ả ề ổ ế ấ ở ng thích v i 8051 => 8051 tr nên r t ph bi n, l n l
ớ
ư
ề ệ ầ
ả ấ ệ ầ ượ ượ ng ROM trên ớ ng thích v i 8051 ươ ế ng trình t 1 ch ẽ ng trình đó cũng s
ạ ượ ệ ấ ả ấ Hãng Intel đã cho phép các nhà s n xu t khác s n xu t và bán b t kì ả ể ọ ạ d ng bi n th nào c a 8051 mà h thích v i đi u ki n h ph i đ mã ươ t t các phiên ờ ớ ố ộ ả b n m i cũng ra đ i v i t c đ khác nhau và dung l ề ươ ậ ặ chip khác nhau. M c dù v y, nh ng chúng đ u t ế ề ban đ u v các l nh. Đi u này có nghĩa là, n u ta vi ươ trên 1 phiên b n nào đó thì nghi m nhiên ch ch y đ ễ c trên các phiên b n khác mà không phân bi ả t hãng s n xu t.
ặ ầ ủ Các đ c tính c a 8051 đ u tiên:
ộ ố ề ể
ọ ươ ươ Ngoài ra, trong h MCS51 còn có m t s chip vi đi u khi n khác có ấ c u trúc t ư sau : ng nh ng đ
ề ể 2. Họ vi đi u khi n 8051:
ể ộ
ề ộ ả ủ ọ ấ ả ố ỹ t c các thông s k
ậ ủ
ộ ộ ị
ờ ữ ộ ị ổ ộ ờ
ộ ề ể 2.1 B vi đi u khi n 8052: 8052 là m t phiên b n c a h 8051. 8052 có t thu t c a 8051, ngoài ra còn ư ậ có thêm 128 byte RAM, 4KB ROM và m t b đ nh th i n a. Nh v y, 8052 có t ng c ng 256 byte RAM, 8KB ROM và ba b đ nh th i. 2.2 B vi đi u khi n 8031:
ượ
ả ổ
ẽ ạ ệ
ng trình mà 8031 s n p và th c hi n. ROM ngoài đ ư ậ ế
ổ ế ấ ể ớ ể ể ổ ổ
ổ ề ớ ộ ể ả ố ổ
ạ ớ ể c coi là không có ROM vì nó có 0 K byte ROM trên chip. Đ 8031 đ ả ử ụ ứ s d ng thì ta ph i b sung ROM ngoài cho nó. ROM ngoài ph i ch a ượ ắ ự ươ c g n vào ch ỉ 8031 có th l n đ n 64K byte. Khi b sung c ng nh v y thì ch còn ạ i quy t v n đ này, ta có th b sung i 2 c ng đ thao tác. Đ gi l ớ ổ c ng vào ra cho 8031. Ph i ghép 8031 v i b nh và c ng vào ra ẳ ch ng h n v i 8255.
ỹ ặ
ậ Đ c tính k thu t ROM trên chip(KB) RAM trên chip(byte) ờ ộ ị B đ nh th i Chân vào/ra ố ế ổ C ng n i ti p ắ ồ Ngu n ng t 8031 0 128 2 32 1 5 8051 4 128 2 32 1 5 8052 8 256 3 32 1 6
ố ủ ư ả ộ ườ
ề ươ ợ ng h p riêng c a ể ạ ượ c trên 8052
ư i có th là không đúng.
ề ộ
ể ử ụ
ể ộ ộ ố ế
ộ ầ ể
ủ ộ ạ i nó. Do ROM trên chip c a 8751 là UV c khi ta có th l p trình l
ướ
ể ẫ ế ề ả ấ i. Đi u này đã d n đ n nhi u nhà s n xu t gi ể c khi nó có th ớ i
ủ ệ
ể ậ ả ầ ở ạ c l p trình tr l ả ả ớ ố ộ ề ấ Nh b ng thông s trên ta th y 8051 là m t tr ế ọ t cho 8051 đ u có th ch y đ ng trình vi 8052. M i ch ể ợ ạ ề nh ng đi u ngu c l ể 2.4 B vi đi u khi n 8751: ớ ỉ Chip 8751 ch có 4K b nh UVEPROM trên chip. Đ s d ng chip ư ậ ể này đ phát tri n yêu c u truy c p đ n m t b đ t PROM, cũng nh ộ b xóa UVEPROM đ xóa n i dung UVEPROM bên trong 8751 ướ tr ấ EPROM, nên ph i c n m t 20 phút đ xóa 8751 tr ề ượ ậ đ thi u các phiên b n FLASH ROM và UVRAM c a 8051. Ngoài ra còn có nhi u phiên b n v i t c đ khác nhau.
ủ ộ ề ể 2.5 B vi đi u khi n AT8951 c a Atmel Corporation:
ộ ả
ớ ộ ợ ấ ụ ứ
ớ ầ ể
ỗ ợ ộ ầ
ế ị ậ ế ị ượ ớ ư ằ c xóa b ng thi t b xóa ROM vì b nh Flash đ
t b l p trình ộ ứ
ả ủ
ệ ể ượ ậ ế ầ ư ậ ẽ ế ị ậ AT8951 là phiên b n 8051 có ROM trên chip là b nh Flash. ả Phiên b n này r t thích h p cho các ng d ng nhanh vì b nh Flash ể ượ ả c xóa trong vài giây. Dĩ nhiên là đ dùng AT8951 c n ph i có th đ ế ớ ế ị ậ t b l p trình PROM h tr b nh Flash nh ng không c n đ n có thi ộ thi ể ệ ử ụ PROM. Đ ti n s d ng, hi n nay hãng Atmel đang nghiên c u m t phiên b n c a AT8951 có th đ tính PC và Nh v y s không c n đ n thi ủ ổ c l p trình qua c ng COM c a máy t b l p trình PROM.
ố Ký hi uệ I/O Timer Ngắ Vcc S chân IC
ROM RA M 4KB 128 4KB 128 64 1KB 32 32 15 t 5 5 3 2 2 1 5V 3V 3V 40 40 20
2KB 128 15 AT89C51 AT89LV51 AT89C105 1 AT89C205 5 2 3V 20
1 AT89C52 8KB 256 AT89LV52 8KB 256 32 32 3 3 6 6 5V 3V 40 40
ừ ọ 2.6 H 8051 t hãng Phillips:
ấ ả
ớ ộ
ọ ả ự ẩ ề ặ
ề ả ổ ở ộ ả ổ
ộ ủ ọ M t nàh s n xu t quan tr ng khác c a h 8051 là Phillips Corporation. ậ ậ ọ ộ Th t v y, hãng này có 1 d i l a ch n r ng l n cho các b vi đi u ọ ể ủ khi n h 8051. Nhi u s n ph m c a hãng đã có kèm theo các đ c tính ể ộ ư nh các b chuy n đ i ADC, DAC c ng I/0 m r ng và c các phiên ả b n OTP và Flash.
ề ộ
ộ
ể ổ ế ộ
ủ ả
ươ ẫ ở ng trình vào ROM trên chip trong khi nó v n
ự ầ
ể ạ ộ ạ ệ ố trong h th ng mà ủ ổ ệ ượ ư c a chu ng,Ngoài ra NVRAM
ề ư ừ
ỏ ộ ậ ế ướ ư ộ ớ ủ 2.7 B vi đi u khi n DS5000 c a Dallas Semiconductor: ủ ữ ủ ả M t phiên b n ph bi n khác n a c a 8051 là DS5000 c a hãng ớ Dallas Semiconductor. B nh ROM trên chip c a DS5000 là NVRAM. DS5000 có kh năng n p ch ả ấ không c n ph i l y ra. Cách th c hi n là dùng qua c ng COM c a máy tính PC. Đây là đi m m nh đ ệ còn có nhi u u vi ả byte mà không ph i xóa h t tr t là cho phép thay đ i n i dung RAM theo t ng c khi l p trình nh b nh EPROM.
ố
ROM RAM I/O Timer Ng tắ 32 32 128 32KB 128 2 2 6 6 S chân IC 40 40 Vcc 5V 5V
8KB 128 32 2 6 40 5V
32 2 32KB 128 6 40 5V
Ký hi uệ DS50008 8KB DS5000 32 DS5000T 8 DS5000T 32
ộ ộ ề ả ả ế ử ụ ể
ợ ề
ớ ộ
ấ ớ ồ ắ
ệ ặ ộ t là b
ớ ươ ng trình trên chip có tính năng ISP (InSystem Programming)
Đây là m t phiên b n c i ti n s d ng CPU là b vi đi u khi n 80C51 v i nhi u tính năng vu t ượ ng ROM/RAM trên chip r t l n, 3 Timer 16 bit + 1 tr i: dung l Watchdog Timer, 2 thanh ghi DPTR, 8 ngu n ng t, PWM (Pulse Width Modulator), SPI (Serial Peripheral Interface) và đ c bi nh ch và IAP (InApplication Programming),…
ơ ượ
ầ ứ
ể
ề
c ph n c ng vi đi u khi n
II, S l
ơ ồ ố ủ ọ ề ể 1) S đ kh i chung c a h vi đi u khi n 8051.
CPU (Central Processing Unit): Đ n v x 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 ạ ộ ố ạ ấ c p cho các kh i trong chip ho t đ ng.
ề ắ ừ ệ ắ ậ
ờ b đ nh th i (Timer 0, Timer 1) và t bên ừ
ệ ắ
ố ế ể ử ể Interrupt control: Đi u khi n ng t >nh n tín hi u ng t t ừ ộ ị ngoài (INT0\, INT1\), t ế ợ ầ ổ c ng n i ti p (Serial port), l n lu t đua các tín hi u ng t này đ n CPU đ x lý.
ư
ữ ữ ệ ủ ố ậ ấ
Other registers: Các thanh ghi khác L u tr d li u c a các port ố ệ ủ xu t/nh p, tr ng thái là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 nh d li u trong chip l u
ớ ữ ệ ư ộ
ữ ệ ữ tr các d li u.
ROM (Read Only Memory): B nh ch
ớ ươ ư ng trình trong chip l u
ữ ươ ộ ủ
ạ ộ ng trình ho t đ ng c a chip. ấ ệ ề ể ậ
ậ ữ ệ ớ ạ ữ
tr ch ấ I/O ports (In/Out ports): Các port xu t/nh p đi u khi n vi c xu t nh p d li u du i 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 ti p đi u khi n vi c xu t nh p d li u du i ạ d ng n i ti p gi a trong và ngoài chip thông qua các chân TxD, RxD.
Timer 0, Timer 1: B đ nh th i 0, 1 dùng đ đ nh th i gian ho c
ể ị ộ ị ặ ờ
ự ệ ờ ế đ m s ki n (đ m xung) 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 n thông tin trên h th ng bus. Bus system: H th ng bus liên k t các kh i trong chip l i v i
ầ ứ ề ể ấ nhau. 2.1.C u trúc ph n c ng Vi đi u khi n MCS51
ủ ọ ể ặ
ư Các thành viên c a h MCS51 (Atmel) có các đ c đi m chung nh sau:
ể ư ươ ộ ề ạ ả ng ằ ươ ng trình b ng
ế ệ ầ ớ Có 4/8/12/20 Kbyte b nh FLASH ROM bên trong đ l u ch ể ờ ậ trình. Nh v y Vi đi u khi n có kh năng n p xoá ch đi n đ n 10000 l n.
(cid:0)
(cid:0) ậ 128 Byte RAM n iộ ấ 4 Port xu t/nh p 8 bit
(cid:0) ừ
(cid:0) ế ố ế ề ữ ệ
ớ ươ ớ
ươ ng trình ngoài 64KByte (b nh i l p trình vi
ớ ng
ộ ơ ng l n h n dung l ớ ớ ơ ế ộ t ra có dung ươ c ch ề ế ố i quy t là k t n i Vi đi u
ừ ạ ọ ớ bên ngoài (hay còn g i là ROM ngo i).
ạ ớ ể ề ớ ể ế ấ ng b nh ROM ngo i l n nh t mà Vi đi u khi n có th k t
ớ ữ ệ ộ
ấ ế ừ ể ế ờ ộ ị T 2 đ n 3 b đ nh th i 16bit ả Có kh năng giao ti p truy n d li u n i ti p ể ở ộ Có th m r ng không gian nh ch ườ ậ ế ROM ngo i):ạ khi ch ng trình do ng ể ư ượ ộ ộ ượ ượ ng b nh ROM n i, đ l u đ l ầ ả ớ trình này c n b nh ROM l n h n, cách gi ớ ộ ể khi n v i b nh ROM t ộ ượ Dung l ố n i là 64KByte ớ ể ở ộ Có th m r ng không gian nh d li u ngoài 64KByte (b nh RAM ngo i)ạ ẽ ộ ử B x lí bit (thao tác trên các bit riêng r ) 210 bit có th truy xu t đ n t ng bit.
ơ ồ ả 2.2.Kh o sát s đ chân
ặ ề ể ủ ọ có nhi u ki u đóng v khác
ẳ ạ ỏ ạ
ạ
ứ
ỉ ữ ệ ư ắ ọ ị
ể ế ớ ỏ
ể ề ớ
M c dù các thành viên c a h MSC51 và ư nhau, ch ng h n nh hai hàng chân DIP (Dual InLine Pakage) d ng ỡ ỏ ẹ v d t vuông QFP (Quad Flat Pakage) và d ng chíp không có chân đ ề LLC (Leadless Chip Carrier) và đ u có 40 chân cho các ch c năng khác nhau nh vào ra I/0, đ c , ghi , đ a ch , d li u và ng t. Tuy nhiên, vì ụ ầ h u h t các nhà phát tri n chính d ng chíp đóng v 40 chân v i hai ả hàng chân DI, nên chúng ta cùng kh o sát Vi đi u khi n v i 40 chân ạ d ng DIP.
Ơ Ồ S Đ CHÂN CHIP 8051
ừ ứ ế 2.2.1. Port 0 (P0) ồ Port 0 g m 8 chân (t chân 32 đ n 39) có hai ch c năng:
ấ ứ ệ ừ ượ
ậ c dùng đ nh n tín hi u t ấ ặ
ể ử ệ ể ề ể ấ ắ ơ ậ các chân này đ Ch c năng xu t/nh p : ẳ ể bên ngoài vào đ x lí, ho c dùng đ xu t tín hi u ra bên ngoài, ch ng ạ h n xu t tín hi u đ đi u khi n led đ n sáng t ể ệ t.
ứ ị
ặ
ế ể ị ượ ớ 8 chân này (ho cặ ạ ROM ho c RAM ngo i (n u c dùng đ đ nh
ế ố ớ ộ ớ ỉ ủ ộ ỉ ữ ệ Ch c năng là bus d li u và bus đ a ch (AD7AD0) : ụ ấ ữ ệ ừ ệ Port 0) còn làm nhi m v l y d li u t ờ ồ có k t n i v i b nh ngoài), đ ng th i Port 0 còn đ ị đ a ch c a b nh ngoài.
ấ ậ ữ ệ
ở ệ
Ở ế ộ ặ ị ch đ m c đ nh (khi reset) thì các chân Port 0 (P0.0 P0.7)
ố c c u hình là port xu t d li u. Mu n các chân Port 0 làm port
ạ
ắ ầ ấ ữ ệ ả ậ ủ
ượ ế ế c trình bày ứ ằ i, b ng cách ghi m c logic cao ậ ữ ệ ừ ớ t c các bit c a port tru c khi b t đ u nh p d li u t ầ ph n k ti p).
ừ 1 – 8.
ử ụ ử ụ ặ ộ
ượ ch đ m c đ nh (khi reset) thì các chân Port 1 (P1.0 – P1.7) đ c
ầ ố
ằ
ậ ữ ệ ứ i, b ng cách ghi m c logic cao (m c 1) đ n t ề ớ ứ ậ ữ ệ ừ ượ ấ ế ấ ả port (v n đ này đ
ế ế ầ ở
ấ ỉ
ừ 21 – 28.
(cid:0) L u ýư : Khi Port 0 đóng vai trò là port xu t nh p d li u thì ph i s ả ử ụ d ng các đi n tr kéo lên bên ngoài. ượ ấ đ ậ ữ ệ ầ nh p d li u thì c n ph i l p trình l ế ấ ả ứ (m c 1) đ n t ề ở ấ port (v n đ này đ ậ Khi l p trình cho ROM trong chip thì Port 0 đóng vai trò là ngõ ủ ữ ệ vào c a d li u (D0 – D7). 2.2.2 Port 1: ố Port 1 (P1.0 – P1.7) có s chân t ộ ứ Port 1 có m t ch c năng: ậ ữ ệ ấ Port xu t nh p d li u (P1.0 – P1.7) s d ng ho c không s d ng b ớ nh ngoài. Ở ế ộ ặ ị ấ ấ c u hình là port xu t ả ậ ữ ệ d li u. Mu n các chân Port 1 làm port nh p d li u thì c n ph i l p ủ ạ trình l t c các bit c a ắ ầ port tru c khi b t đ u nh p d li u t c trình ph n k ti p). bày ậ Khi l p trình cho ROM trong chip thì Port 1 đóng vai trò là ngõ vào ủ ị c a đ a ch byte th p (A0 – A7). 2.2.3 Port 2: ố Port 2 (P2.0 – P2.7) có s chân t ứ Port 2 có hai ch c năng: ậ ữ ệ ấ ộ ớ ử ụ = >không s d ng b nh
Port xu t nh p d li u (P2.0 – P2.7) ngoài. ị ỉ ử ụ ớ ộ
ả ậ ủ ắ ầ ấ port (v n
(cid:0) Bus đ a ch byte cao (A8 – A15) có s d ng b nh ngoài. ượ Ở ế ộ ặ ị c ch đ m c đ nh (khi reset) thì các chân Port 2 (P2.0 – P2.7) đ ậ ữ ấ ữ ệ ấ ố c u hình là port xu t d li u. Mu n các chân Port 2 làm port nh p d ứ ứ ạ ầ ệ i, b ng cách ghi m c logic cao (m c 1) li u thì c n ph i l p trình l ế ấ ả ậ ữ ệ ừ ớ đ n t ượ ề đ này đ
ầ ở ằ t c các bit c a port tru c khi b t đ u nh p d li u t ế ế ph n k ti p). c trình bày
ậ
ể ề ệ ỉ Khi l p trình cho ROM trong chip thì Port 2 đóng vai trò là ngõ vào ủ ị c a đ a ch byte cao (A8 – A11) và các tín hi u đi u khi n.
ừ 10 – 17.
(cid:0) ử ụ ộ
ứ ặ t.
ứ ể ặ ộ ớ 2.2.4. Port 3: ố Port 3 (P3.0 – P3.7) có s chân t ứ Port 3 có hai ch c năng: ớ ậ ữ ệ ấ Port xu t nh p d li u (P3.0 – P3.7) không s d ng b nh ệ ngoài ho c các ch c năng đ c bi ử ụ ề (cid:0) Các tín hi u đi u khi n có s d ng b nh ngoài ho c các ch c
ặ
ch đ m c đ nh (khi reset) thì các chân Port 3 (P3.0 – P3.7) đ ượ c
ặ ệ ệ t. năng đ c bi Ở ế ộ ặ ị ấ ấ c u hình là port xu t
ạ ứ
ậ ữ ệ ế ấ ả ứ ấ ậ ữ ệ ừ port (v n đ này
ắ ầ ế ế ầ ả ầ ố ữ ệ d li u. Mu n các chân Port 3 làm port nh p d li u thì c n ph i ằ ậ t c các l p trình l i, b ng cách ghi m c logic cao (m c 1) đ n t ớ ủ ề bit c a port tru c khi b t đ u nh p d li u t ở ượ c trình bày đ ph n k ti p).
ậ
ể ề ệ ể ề ọ
Khi l p 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 u khi n (xem sách “H vi đi u khi n 8051” trang 333352). ứ ủ Ch c năng c a các chân Port 3:
ị
Bit P3.0 Tên RxD ỉ Đ a ch bit B0H
P3.1 TxD B1H
ờ ế P3.2 P3.3 P3.4 INT0 INT1 T0 B2H B3H B4H ứ Ch c năng ố ậ ữ ệ ủ 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 c a b ñ nh th i/ñ m 0.
ờ ế ủ ộ ị
ề P3.5 P3.6 T1 WR B5H B6H ði u khi n ghi vào RAM
Ngõ vào c a b ñ nh th i/ñ m 1. ể ngoài. ọ ừ ề P3.7 RD B7H ể ði u khi n ñ c t RAM ngoài.
ộ ớ ươ ng trình, chân
(cid:0) Là tín hi u cho phép truy xu t (đ c) b nh ch
2.2.5. Chân PSEN: PSEN (Program Store Enable): cho phép b nh ch ố s 29. ứ Ch c năng: ệ ấ ộ ọ ớ ươ ng trình (ROM)
ngoài.
(cid:0) Là tín hi u xu t, tích c c m c th p.
ứ ự ệ
ấ ạ ệ ROM ngoài.
ấ ờ ử ụ ừ ử ụ
ộ ớ ươ ườ ng
ng trình bên ngoài, chân PSEN\ th ọ ủ ể ệ c n i v i chân OE\ c a ROM ngoài đ cho phép CPU đ c mã l nh
ố ị ố ỉ
ứ PSEN = 0 : trong th i gian CPU tìm n p l nh t PSEN = 1 : CPU s d ng ROM trong (không s d ng ROM ngoài). ử ụ Khi s d ng b nh ch ượ ố ớ đ ừ ROM ngoài. t 2.2.6. Chân ALE: ALE (Address Latch Enable): cho phép ch t đ a ch , chân s 30. Ch c năng:
ỉ ể ự ệ ệ ả ợ ố ị (cid:0) Là tín hi u cho phép ch t đ a ch đ th c hi n vi c gi i đa h p
ệ ị
(cid:0) Là tín hi u xu t, tích c c m c cao.
ệ ỉ cho bus đ a ch ữ ệ ấ byte th p và bus d li u đa h p (AD0 – AD7). ự
ấ ờ ờ
ậ ủ
ạ ợ ứ ALE = 0 : trong th i gian bus AD0 AD7 đóng vai trò là bus D0 D7. ALE = 1 : trong th i gian bus AD0 AD7 đóng vai trò là bus A0 A7. Khi l p trình cho ROM trong chip thì chân ALE đóng vai trò là ngõ ậ vào c a xung l p trình (PGM). ể fALE=fOSC/6 có th dùng làm xung clock cho các m ch
ư L u ý: khác.
i chân ALE. f
ầ ố ạ ạ ầ ố (MHz): t n s xung t ộ ầ ố (MHz): t n s dao đ ng trên chip (t n s th ch anh).
ệ ượ ự ệ RAM ngoài (MOVX) đ c th c hi n thì
ộ
ấ ố
ứ
(cid:0) Là tín hi u cho phép truy xu t (s d ng) b nh ch
ấ ữ ệ ừ Khi l nh l y d li u t ị ỏ m t xung ALE b b qua. 2.2.7. Chân EA: EA (External Access): truy xu t ngoài, chân s 31. Ch c năng: ệ ấ ử ụ ộ ớ ươ ng trình
(ROM) ngoài.
(cid:0) Là tín hi u nh p, tích c c m c th p.
ấ ậ ệ ự
ử ụ ử ụ ủ ủ ng trình c a ROM ngoài. ng trình c a ROM trong.
ậ ọ
ứ ươ EA = 0 =>Chip 8051 s d ng ch ươ EA = 1 =>Chip 8051 s d ng ch ậ Khi l p trình cho ROM trong chip thì chân EA đóng vai trò là ngõ vào ọ ệ ủ c a đi n áp l p trình(Vpp = 12V – 12,5V cho h 89xx; 21V cho h 80xx, 87xx).
ế ử ụ
ươ ng trình ủ ng trình c a
c n i lên Vcc (n u s d ng ch ế ử ụ ươ ỏ ố c phép b tr ng chân này.
ả ượ ố ư L u ý: Chân EA\ ph i đ ố ặ ố ủ c a ROM trong) ho c n i xu ng GND (n u s d ng ch ờ ượ ROM ngoài), không bao gi đ 2.2.8 Chân XTAL1, XTAL2:
ố ể ạ XTAL (Crystal): tinh th th ch anh, chân s 1819.
ứ Ch c năng:
(cid:0) Dùng đ n i v i th ch anh ho c m ch dao đ ng t o xung ạ
ể ố ớ ạ ạ ạ ộ
ệ ấ
ặ clock bên ngoài, cung c p tín hi u xung clock cho chip ho t đ ng.ộ
(cid:0) XTAL1 : ngõ vào m ch t o xung clock trong chip.
ạ ạ
ạ ạ (cid:0) XTAL2 : ngõ ra m ch t o xung clock trong chip.
TYP=12MHz fTYP (MHz): t n s danh đ nh.
ư ầ ố ị L u ý: f
ố ế ậ ạ t l p l i, chân s 9.
ứ
(cid:0) Là tín hi u cho phép thi
2.2.9. Chân RST: RST (Reset): thi Ch c năng: ệ ế ặ ặ ạ ạ ầ t l p (đ t) l i tr ng thái ban đ u cho h ệ
th ng.ố
ệ ậ
(cid:0) Là tín hi u nh p, tích c c m c cao. RST = 0 > Chip 8051 ho t đ ng bình th
ứ ự ạ ộ ườ ng.
ượ ế ặ ạ ạ ầ RST = 1 > Chip 8051 đ c thi t l p l i tr ng thái ban đ u.
Reset≥2×TMachine TMachine=12/fOSC.
ư L u ý: t
OSC=(MHz):t n s th ch anh.
ờ ầ ố ạ tRESET(µs):th i gian reset. f
ỳ TMACHINE(µs):chu k máy.
ồ ấ ệ ố
ứ
(cid:0) Cung c p ngu n đi n cho chip 8051 ho t đ ng.
(cid:0) Vcc = +5V – –– – 10% v à GND = 0V.
2.2.10. Chân Vcc, GND: Vcc, GND: ngu n c p ñi n, chân s 40 và 20. Ch c năng: ấ ạ ộ ệ ồ
ế ố ớ 2.3) K t n i các Port v i led.
ấ ệ ở ứ ườ m c logic 1 th
ộ ạ ế ấ ấ ng không đ t đ n 5V mà ỏ ướ i
ả ấ ả
3.5V đ n 4.9V và dòng xu t ra r t nh d ả ấ ủ ể ấ ể ậ Các Port khi xu t tín hi u ế ừ dao đ ng trong kho ng t 5mA(P0,P2 dòng xu t kho ng 1mA; P1,P3 dòng xu t ra kho ng 1mA ế đ n 5mA ) vì v y dòng xu t này không đ đ có th làm led sáng
ệ ở ứ ệ m c logic 0 dòng đi n cho phép
ớ
m c 0:
ớ ớ ấ Tuy nhiên khi các Port xu t tín hi u ơ ấ ề đi qua l n h n r t nhi u: ở ứ ể ề Chân Vi đi u khi n khi ấ Dòng l n nh t qua P0 : 25mA ấ Dòng l n nh t qua P1,P2,P3 : 15mA
ặ ế ị
ở ạ ế ố ớ ộ ế ề
ể
ệ ả ắ
ể ẽ ặ ề Do đó khi k t n i v i led ho c các thi t b khác Vi đi u khi n s g p ấ ở ứ ể m c 1, tr ng i là n u tác đ ng làm led sáng khi Vi đi u khi n xu t ỏ ở ủ ể lúc này dòng và áp ra không đ đ led có th sáng rõ (led đ sáng ụ ằ đi n áp 1.6V2.2V và dòng trong kho ng 10mA). Kh c ph c b ng cách sau:
Cho led sáng khi Vi đi u khi n
ể ở ứ ề m c 0:
ấ ủ ụ Px.x thay cho các chân xu t c a các Port. Ví d : Chân P1.1, P2.0, v.v...
ở ứ Khi Px.x
ở ứ m c 1 led không sáng m c 0 led sáng Khi Px.x
Hình 2.2.5
Cho led sáng khi Vi đi u khi n xu t
ể ề ấ ở ứ : m c 1
ư ể ề
ượ ầ ể ặ ủ ấ ở ứ m c 1 không đ ở ệ ộ c c n đ t thêm m t đi n tr kéo lên
ệ ở ồ Nh đã trình bày vì ngõ ra Vi đi u khi n khi xu t ể đ cho led sáng, đ led sáng đ ọ ngu n VCC(g i là đi n tr treo).
Hình 1.2.6
ườ ể ợ ớ ọ ợ ng h p mà ch n R2 đ dòng và áp phù h p v i thi ế ị t b
ỳ ừ Tu t ng tr nh n.ậ
ự ệ ồ
m c 0, có s chênh l ch áp gi a ngu n VCC và chân Px.x ề ừ ệ ệ ữ ế VCC qua R2 và Px.x v Mass, do đó hi u đi n th
ư ằ ữ ầ ở ứ Khi Px.x ệ dòng đi n đi t gi a hai chân led g n nh b ng 0, led không sáng.
ở ứ ề
m c 1 (+5V),dòng đi n không ch y qua chân Vi đi u ệ ượ ữ ạ c, có s l ch áp gi a hai chân led, dòng đi n
ợ Khi Px.x ể ề ể khi n đ v mass đ ườ trong tr ệ ự ệ ề ng h p này qua led v Mass do đó led sáng.
Ω ườ ị ừ ng đ
4.7K đ n 10K . N u t ệ ộ ế ấ ả ế t c ở ở ứ m c cao thì đi n tr
ớ c s d ng v i giá tr t ế ố ể ở
ể ễ ơ ệ Ω ượ ử ụ R2 th ề các chân trong 1 Port đ u k t n i đ tác đ ng ệ ử ằ R2 có th thay b ng đi n tr thanh 9 chân vì nó có hình dáng và s ạ ụ d ng d h n khi làm m ch đi n.
ệ ở ử ụ Ngoài cách s d ng đi n tr treo
ổ ụ ổ ườ ệ cũng có tác d ng thay đ i c
ấ ở ứ ệ ổ ộ ng đ dòng ệ ở ứ m c 1, c ng đ m xu t ra tín hi u
ứ
ệ ầ ọ ớ i thi
ượ ư ơ ệ ử ụ c ng đ m vi c s d ng ệ ấ đi n xu t ra khi ngõ ra m c 1 ặ ở ệ ớ v i áp và dòng l n khi có tín hi u m c 1 đ t ngõ vào. Tùy theo yêu ế ế ề ườ ế ầ ủ t mà ch n IC đ m cho c u c a ng t k v dòng và áp c n thi ề ạ ừ ộ ẳ ợ m t ngõ ra P0.0 làm nhi u led sáng cùng lúc phù h p. Ch ng h n t ệ ệ ử ụ thì vi c s d ng IC đ m đ c u tiên h n.
ể ử ụ ượ ặ
ễ ơ c 74HC244 nên vi c s d ng 74HC245 d dàng h n trong
ế ế ạ Có th s d ng 74HC244 ho c 74HC245, tuy nhiên 74HC245 đ ệ ử ụ ả ế ừ c i ti n t thi t k m ch.
Hình 1.2.7
ấ
ể
ề
A, C u trúc bên trong Vi đi u khi n 8051
Ấ
Ấ ả ầ Ậ ủ ố ợ ừ i đ u ra) c a các t ng chân port chip
1) C U TRÚC CÁC PORT XU T NH P CHIP 8051: ả Kh năng fanout (s lu ng t 8051 là: (cid:0) ả Port 0: 8 t i TTL.
(cid:0) ả Port 1: 4 t i TTL.
(cid:0) ả Port 2: 4 t i TTL.
(cid:0) ả Port 3: 4 t i TTL.
ẽ ệ ậ
ờ ử ụ ệ ở
ư L u ý: ở ấ Khi Port 0 đóng vai trò là port xu t nh p thì s không có đi n tr kéo ầ lên bên trong đó ngu i s d ng c n thêm vào đi n tr kéo lên bên ngoài (xem Hình III.1).
ch đ m c đ nh (khi reset) thì t ủ t c các chân c a các port (P0 –
ấ ữ ệ ấ ả Ở ế ộ ặ ị ợ ấ P3) đu c c u hình là port xu t d li u.
ố ậ ữ ệ
ả ạ ằ
ứ ậ ữ ệ ừ ứ ắ ầ
ế ế ớ ầ ề ợ ở ầ ủ Mu n các chân port c a chip 8015 làm port nh p d li u thì ta c n ế ấ ợ ậ i, b ng cách ghi m c logic cao (m c 1) đ n t ph i đu c l p trình l t ủ ả port c các bit (các chân) c a port tru c khi b t đ u nh p d li u t ấ (v n đ này đu c trình bày ph n k ti p).
ế ả ấ t ph i có cùng ki u c u
ấ ặ ộ
ấ ữ ệ ể ể ể
ậ ậ ữ ệ ộ ờ ậ ủ ụ ề ầ ể ấ ộ Các chân trong cùng m t port không nh t thi ể hình (port xu t ho c port nh p). Nghĩa là trong cùng m t port có th có chân dùng đ nh p d li u, có th có chân dùng đ xu t d li u. Đi u này là tùy thu c vào nhu c u và m c đích c a ngu i l p trình.
ấ ữ ệ Quá trình ghi chân port (xu t d li u ra chân port).
Hình III.3 Thao tác ghi chân port.
ậ ữ ệ ừ ọ Quá trình đ c chân port (nh p d li u t chân port).
ọ Hình III.2 Thao tác đ c chân port.
ọ ộ ố ữ ệ ạ ể Quá trình đ c b ch t (ki m tra d li u t i chân port).
ọ ộ ố Hình III.2 Thao tác đ c b ch t.
ể ệ ọ ữ ệ ủ ấ ỳ ộ
ư ị ử ụ
ệ ượ
ố ọ ữ ệ ủ
ọ ồ ọ ộ ố
ệ
ệ ự ệ ạ ở ữ ệ ọ i
ọ ộ ố ệ
ự ữ ệ i
ữ ệ ờ
i
ự ể ờ i th i đi m th c hi n quá trình đ c mà d li u t
ệ ạ ở ộ ữ ệ các b ở ớ ể i th i đi m tru c đó b i quá ệ ạ ở các chân port. ữ ệ ạ ọ i các ọ ề ữ ệ ổ
L u ý: Vi c đ c d li u c a b t k m t port nào có th cho ta hai giá ể ọ ữ ệ ừ ệ ộ port tr khác nhau tùy thu c vào l nh mà ta s d ng đ đ c d li u t ả ầ ậ ệ (xem thêm trong ph n t p l nh). X y ra hi n t ng không mong mu n này là do quá trình đ c d li u c a chip 8051 g m hai quá trình khác nhau: quá trình đ c chân port và quá trình đ c b ch t. ọ ữ ử ụ Quá trình đ c chân port: Khi ta s d ng các l nh MOV, ADD,… D ệ ợ ậ li u nh n đu c sau khi th c hi n quá trình đ c là d li u hi n t các chân port. ử ụ Quá trình đ c b ch t: Khi ta s d ng các l nh ANL, ORL, XRL, CPL, INC, DEC, DJNZ, JBC, CLR bit, SETB bit, MOV bit. D li u ọ ệ ậ ượ nh n đ c sau khi th c hi n quá trình đ c là d li u hi n t ạ ượ ố c ghi ra port t ch t (là các d li u đã đ ữ ệ ả ứ trình ghi chân port), ch không ph i là d li u hi n t ế ạ ệ Cho nên, n u t ị ữ chân port có b thay đ i đi chăng n a thì d li u đ c v cũng không ậ ượ ậ c c p nh t. đ
ổ ứ ộ ớ ủ 2)T ch c b nh c a 8051 :
ữ ệ ử ớ ươ ng
ộ ộ B vi x lý có không gian b nh chung cho d li u và ch trình.
ươ ữ ệ ư ằ ớ
ữ ệ ộ ớ
ộ ươ ch ng trình và d li u n m chung trên RAM tru c khi đ a vào ể ự CPU đ th c thi. ề ể B vi đi u khi n có không gian b nh riêng cho d li u và ng trình. ch
ớ ươ ằ ng trình và d li u n m riêng trên ROM và RAM tru c khi
ể ự ớ ủ ổ ứ ộ ữ ệ ch ư đ a vào CPU đ th c thi. T ch c b nh c a chip 8051:
ớ ộ Không gian b nh trong chip 8051
RAM SFR
ứ ặ ệ (SPECIALFUNCTION REGISTER:Thanh ghi ch c năng đ c bi t).
ộ ớ ữ ệ 3) B nh d li u trên chip 8051 ộ ớ A) B nh trong:
ộ ớ ươ 3.1 B nh ch ng trình B nh ộ ớ ROM
ươ ườ ể ư t ch
ế i vi ể ệ ớ t ra. Ch
ườ i quy t các công vi c c th , ch
i thi ủ
ng ng trình do ng ậ ệ ng trình là t p h p các câu l nh th hi n các thu t ế ươ t ng trình do ng ư c đ a vào l u trong ROM c a vi ấ ừ ạ ộ ệ
ể ứ ố ệ ủ ệ ố ươ ệ ố ệ ố ố ệ ố ị
ố ị ở ế ộ ể ặ ạ ộ ổ ươ
ch đ xóa ho c n p ch ệ ệ ạ ươ ộ B nh ROM dùng đ l u ch ậ ợ ươ ế trình vi ệ ụ ể ế ể ả toán đ gi ượ ư ế ế t trên máy vi tính, sau đó đ k vi ể ể ề ề đi u khi n, khi ho t đ ng, vi đi u khi n truy xu t t ng câu l nh trong ể ự ng trình. ROM còn dùng đ ch a s li u các ROM đ th c hi n ch ả b ng, các tham s h th ng, các s li u c đ nh c a h th ng. Trong ộ ổ ạ ộ quá trình ho t đ ng n i dung ROM là c đ nh, không th thay đ i, n i ỉ ng trình dung ROM ch thay đ i khi ROM ự ệ (do các m ch đi n riêng bi t th c hi n).
ộ ượ ợ ớ B nh ROM đ ớ ể v i dung
ề vi đi u khi n ố ớ ạ ủ ẳ c tích h p trong chip ạ ầ ng tùy vào ch ng lo i c n dùng, ch ng h n đ i v i 89S52 là
ớ ượ l 8KByte, v i 89S53 là 12KByte.
ộ ớ
ề ằ ể ệ ộ ớ ớ
ề ầ ể ạ ệ ớ ộ B nh bên trong Vi đi u khi n 89Sxx là b nh Flash ROM cho ươ ạ ng trình m i cũng phép xóa b nh ROM b ng đi n và n p vào ch ằ b ng đi n và có th n p xóa nhi u l n
ượ ị ượ ỉ ừ c đ nh đ a ch theo t ng Byte, các byte đ c đánh
ố ỉ
ị ố ậ ụ ầ ắ ầ ừ ị ỉ ớ đ a ch 0000H, khi ươ ươ ế ấ ớ B nh ROM đ ị đ a ch theo s hexs th p l c phân, b t đ u t ế vi ị ng trình c n chú ý đ n đ a ch l n nh t trên ROM, ộ ỉ t ch ch ng
ỉ ư ượ ụ ị
t qua vùng này. Ví d : ỉ ớ ấ ớ
c l u s b m t khi đ a ch l u v ị ơ ộ ớ ươ ượ ư ẽ ị ấ ộ t ra có dung l
ng trình vi ỉ ớ ơ trình đ ế AT89S52 có 8KByte b nh ROM n i, đ a ch l n nh t là 1FFFH, n u ượ ế ng l n h n 8KByte các byte trong các ch ẽ ị ấ ị đ a ch l n h n 1FFFH s b m t.
ể ộ ớ
ở ộ ế ế ệ ớ ị
ề ớ ả Ngoài ra Vi đi u khi n còn có kh năng m r ng b nh ROM v i ỉ ừ ớ ộ vi c giao ti p v i b nh ROM bên ngoài lên đ n 64KByte(đ a ch t ế 0000H đ n FFFFH).
ộ ớ ữ ệ ộ ớ 3.2 B nh d li u – B nh RAM
ữ ể ư ữ ệ ố
ấ ị
ượ c chia ra:
ứ Dùng đ l u tr các d li u và tham s . ỉ Chip 8051 có 128 byte RAM trong, đ a ch truy xu t: 00H – 7FH. ủ RAM trong c a chip 8051 đ (cid:0) RAM đa ch c năng:
(cid:0) RAM đ nh đ a ch bit: ử
ị ị
ữ ệ ẻ ả ưở ỉ cho phép x lý t ng bit d li u riêng l mà không nh h ế ng đ n
ừ ả các bit khác trong c byte.
L u ý:ư
ế N u trong ch
ươ ỉ ị
ị ụ ả vùng RAM đ nh đ a ch bit này, ta có th s d ng vùng nh 20H ủ – 2FH cho các m c đích khác c a ta. Ng ử ụ ng trình không s d ng các bit trong ể ử ụ ượ ạ c l ớ ế i, ta ph i vi t
ế ử ụ ậ ớ ng trình c n th n khi s d ng vùng nh 20H – 2FH vì n u
ữ ệ ượ ử ụ c s d ng.
ẩ ể ế ệ ớ ộ ỉ ị t l nh làm cho 8 bit trong ô nh có đ a ch 20H thu c ươ ch ơ ấ s su t ta có th ghi d li u đè lên các bit đã đ Ví d :ụ Vi
ộ ợ ị ị ỉ ị
(cid:0) Các dãy thanh ghi:
ỉ ờ RAM n i có giá tr là 1 (xét tru ng h p đ a ch byte và đ a ch bit).
ấ ữ ệ ấ ơ ệ ắ ả
cho phép truy xu t d li u nhanh, l nh truy xu t đ n gi n và ng n g n.ọ
ớ ả ỉ ủ ớ ộ
ự ớ c gán cho t ng ô nh trong dãy tích c c.
ố ệ ọ ị B ng s li u du i đây minh h a đ a ch c a các ô nh trong m t dãy ệ và các ký hi u thanh ghi ừ ượ R0 – R7 đ
ự ượ ử c s
ầ ượ ể ổ
t có tên là R0 R7. Có th thay đ i dãy tích ổ ọ
ầ ư L u ý: Ở ế ộ ặ ị ch đ m c đ nh thì dãy thanh ghi tích c c (đang đ ụ d ng) là dãy 0 và các thanh ghi trong dãy l n l ự ằ c c b ng cách thay đ i các bit ch n dãy thanh ghi RS1 và RS0 trong thanh ghi PSW (xem ph n thanh ghi PSW).
ươ ầ ế N u ch ng trình c a ta ch s d ng dãy thanh ghi đ u tiên (dãy
ụ
ủ
ử ụ ế ặ ậ
ữ ệ ớ ừ ể ố ở
ỉ ử ụ ủ ớ ể ử ụ 0) thì ta có th s d ng vùng nh 08H – 1FH cho các m c đích ươ ử ụ ư khác c a ta. Nh ng n u trong ch ng trình có s d ng các dãy ả ấ ẩ thanh ghi (dãy 1, 2 ho c 3) thì ph i r t c n th n khi s d ng ế ơ ấ vùng nh t 1FH tr xu ng vì n u s su t ta có th ghi d li u đè lên các thanh ghi R0 – R7 c a ta. ệ ữ ệ ớ ớ ị ủ Ví d 1ụ : Quan h gi a ký hi u thanh ghi R4 v i các ô nh có đ a
ự
ỉ ươ ứ ch t ế ế ế ế ng ng trong dãy thanh ghi tích c c? ớ ớ ớ ớ ộ ộ ộ ộ ự ự ự ự
ệ ệ ự
N u dãy 0 tích c c: Thanh ghi R4<> Ô nh 04H RAM n i. N u dãy 1 tích c c: Thanh ghi R4<> Ô nh 0CH RAM n i. N u dãy 2 tích c c: Thanh ghi R4<>Ô nh 14H RAM n i. N u dãy 3 tích c c: Thanh ghi R4<> Ô nh 1CH RAM n i. Ví d 2:ụ Khi chip 8051 th c hi n l nh MOV R4, #1AH thì giá c n p vào trong ô nh có đ a ch là bao nhiêu
ỉ ị
ợ ớ ừ ị ườ ươ ứ ộ ng ng cho t ng tr ng h p dãy thanh
ẽ ượ ạ tr “1AH” s đ ộ thu c RAM n i. Xét t ự ghi tích c c là Dãy 0 và Dãy 3?
3.2.1 Thanh ghi ch c năng đ c bi
ứ ặ ệ t:
ị ỉ ọ ượ ữ ệ c phép đ c hay ghi d li u vào các đ a ch SFR mà nó
ư ượ
ệ ọ ư ượ ặ c đ t tên). Vì vi c đ c hay ghi
ơ ữ
ố ng
ủ ủ ớ
ả ỉ ả ươ các phiên b n đó các đ a ch SFR này đ ượ ử c s
ụ ộ
ằ ị ị ư L u ý: Không đ c đăng ký ch a đ ỉ ị (nghĩa là các đ a ch SFR ch a đ ạ ộ ể ữ ệ d li u vào các n i này có th làm phá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 thích v i các phiên b n sau c a chip trình c a ta không t ị ể ở MCS51 (có th ụ d ng cho m t vài m c đích khác). ấ Ch đ c truy xu t các SFR b ng ki u đ nh đ a ch tr c ti p
ỉ ự ế ế ử ụ ể ị ể ỉ
ợ
ế ệ ấ ớ ể t l nh dùng đ xu t (ghi) t tru c (R0)=90H. Vi
ư ế giá tr 5AH ra Port1 nh sau .
ỉ ượ ờ ị ệ ố (tuy t đ i không s d ng ki u đ nh đ a ch gián ti p trong tru ng h p này). Ví d :ụ Cho bi ị ử ụ ể ị ị S d ng ki u đ nh đ a ch tr c ti p:
ỉ ự ế ặ MOV P1, #5AH ho c MOV 90H, #5AH
ử ụ ể ế ỉ ị ị S d ng ki u đ nh đ a ch gián ti p:
MOV @R0, #5AH > SAI
ề ợ ệ ố ớ ươ ị đ i v i chip 8051 vì ph
ỉ ị ng pháp đ nh đ a ộ ớ
ế ộ ủ
ệ ệ ự ư ị
3.2.2 Thanh ghi A:
ỉ ử ụ ỉ ẽ ả ề ế ẽ ượ ề ả > Đi u này không h p l ch gián ti p nhu trên ch s d ng cho vùng nh RAM n i. Trong khi đó RAM n i c a chip 8051 ch có 128 byte (00H – 7FH), cho nên khi ế ả th c hi n l nh này nó s tr v k t qu không xác đ nh. (L u ý: n u ta dùng phiên b n chip 8052 thì s tránh đ c đi u này).
3.2.3 Thanh ghi B:
ế ả ấ ố ố Phép nhân 2 s 8 bit không d u > k t qu là s 16 bit. (cid:0)
(cid:0) ứ Byte cao > ch a vào thanh ghi B. ứ Byte th p > ch a vào thanh ghi A.
ố ố Phép chia 2 s 8 bit > th ố ư ng s và s d là s 8 bit.
(cid:0) Th
ấ ố ố ứ ươ ng s > ch a vào thanh ghi A. (cid:0) ươ ố ư ứ
Ví dụ: Th c hi n phép tính 12H x 2AH. H i (A)=?, (B)=?
S d > ch a vào thanh ghi B. ệ ự ỏ
Ví d :ụ Th c hi n phép tính A6H : 21H. H i (A)=?, (B)=?
ự ệ ỏ
Ví d :ụ Th c hi n phép tính FDH : 0CH. H i (A)=?, (B)=?
ự ệ ỏ
ừ 3.2.4 Thanh ghi t PSW:
ờ ờ ợ ạ ớ báo có nh /mu n t
ế ặ i bit 7. ợ ớ (cid:0) C CY (Carry Flag): c nh (cid:0) CY = 0: n u không có nh t ớ ừ bit 7 ho c không có mu n cho bit
7.
ợ ạ ờ ờ (cid:0) CY = 1: n u có nh t ặ ớ ừ ế ớ ụ (cid:0) C AC (Auxiliary Carry): c nh ph ợ bit 7 ho c có mu n cho bit 7. ớ báo có nh /mu n t i
bit 3.
ế ặ ợ (cid:0) AC = 0: n u không có nh t ớ ừ bit 3 ho c không có mu n cho bit
3.
ặ ợ
(cid:0) ờ bit 3 ho c có mu n cho bit 3. ụ có nhi u m c đích dành cho các ng
(cid:0) AC = 1: n u có nh t ớ ừ ế C F0 (Flag 0): c zero ủ ờ ờ ậ ề ự ữ ả
ươ ứ ụ d ng khác nhau c a ngu i l p trình (d tr cho các phiên b n chip trong t ng lai).
(cid:0) ọ cho
Bit RS0, RS1 (Register Select): bit ch n dãy thanh ghi ự ị phép xác đ nh dãy thanh ghi tích c c (hay dãy thanh ghi mà các thanh ghi có tên là R0R7).
(cid:0) ủ ế ả
báo k t qu tính toán c a phép ằ ừ ả ế 128 đ n +127
ờ ờ C OV (Overflow): c tràn ấ ố ọ toán s h c (phép toán có d u) có n m trong kho ng t hay không.
ế ả
ế ế ả ả (cid:0) OV = 0: n u 128 = k t qu = +127. (cid:0) OV = 1: n u k t qu < 128 ho c k t qu > +127. Nói cách ặ ế
ố ớ ế khác là: Đ i v i phép
ế ớ ừ ư
ớ ừ ư
ượ ượ ư
ộ c ng thì OV=1 n u có nh t ặ ế ừ ặ ế ớ ừ ế ượ ượ ư ớ ừ bit 7 nh ng không có nh t bit 6 ố ớ ho c n u có nh t bit 7. Đ i v i phép bit 6 nh ng không có nh t tr thì OV=1 n u có m n cho bit 7 nh ng không có m n cho bit 6 ho c n u có m n bit 6 nh ng không có m n bit 7.
ễ ể ạ ấ ả ệ Bi u di n toán h ng 8bit có d u B ng li ố t kê các s
8bit có d uấ
ờ ẵ ẻ (cid:0)
C P (Parity): c ch n l ố ẻ báo s ch s 1 trong thanh ghi A ế ộ ử ụ ẵ ờ ố ẵ là s ch n hay s l
ế ố ữ ố ố ẵ ố ữ ố (trong chip 8051 s d ng ch đ parity ch n). (cid:0) P = 0: n u s ch s 1 trong thanh ghi A là s ch n (parity
ch n). ẵ
ế ố ữ ố ẵ (parity ch n).
ụ ọ (cid:0) P = 1: n u s ch s 1 trong thanh ghi A là s l ố ẻ Ví d : Minh h a cách 8051 bi u di n s 5.
ễ ố ể iả : Gi
ự ệ ớ Các bu c th c hi n:
ị ạ
ễ ố B1: 0000 0101 Bi u di n s 5 d ng nh phân 8 bit. B2: 1111 1010 L y bù 1. B3: 1111 1011 L y bù 2. ể ể ấ ấ ễ ố ủ ố ấ
ạ ễ ố ể
ự ệ ậ ố V y s FBH là bi u di n s có d u d ng bù 2 c a s 5. ụ Ví d : Minh h a cách 8051 bi u di n s 34H. Các b ọ c th c hi n:
ễ ố ạ ị
ướ B1: 0011 0100 Bi u di n s 34H d ng nh phân 8 bit. B2: 1100 1011 L y bù 1. B3: 1100 1100 L y bù 2. ể ể ấ ấ ễ ố ậ ố ủ ố ấ ạ V y s CCH là bi u di n s có d u d ng bù 2 c a s 34H.
ọ ể ụ ễ ố
ớ ệ ự
ạ ị Ví d : Minh h a cách 8051 bi u di n s 128. Các bu c th c hi n:
ễ ố B1: 1000 0000 Bi u di n s 128 d ng nh phân 8 bit. B2: 0111 1111 L y bù 1. B3: 1000 0000 L y bù 2. ể ể ấ ấ ễ ố ạ
ậ ố ụ ủ ố ờ ủ ạ ọ ấ V y s 80H là bi u di n s có d u d ng bù 2 c a s 128. ạ ộ Ví d : Minh h a tr ng thái ho t đ ng c a các c CY, AC, OV và
ừ ố ọ ị ớ ự ệ ộ P khi th c hi n phép c ng/tr s h c hai giá tr v i nhau.
Các ký hi u:ệ
ờ (cid:0) C nh (CY): ớ
ủ ờ ạ ộ ọ ườ ợ Minh h a ho t đ ng c a c CY trong tr ng h p CY = 1:
ờ ườ ợ Xét c CY trong hai tr ng h p “7AH+28H” và 9AH5DH”:
ờ ờ ợ Xét c CY trong hai tru ng h p “95H+86H” và “00HA6H”:
ờ ớ ụ C nh ph (AC):
ủ ờ ạ ộ ọ ườ ợ Minh h a ho t đ ng c a c AC trong tr ng h p AC = 1
ờ ườ ợ Xét c AC trong hai tr ng h p “92H+28H” và “4AHE3H”:
ờ ườ ợ Xét c AC trong hai tr ng h p “7AH+59H’ và “97H5DH”
ờ C tràn (OV):
ủ ờ ạ ộ ọ ườ ợ Minh h a ho t đ ng c a c trong tr ng h p OV= 1
ườ ợ Xét c OV trong các tr ng h p “B3H+25H”, “BBH96H”” và
ờ “4BHF3H’:
ờ ườ ợ ng h p “ 53H+45H”, “82H+BAH”, “9AH
Xét c OV trong các tr 3EH” và “66HDAH”
ờ C Parity (P):
ườ ợ Xét c P trong các tr ng h p “(A)=45H”, “(A)=E7H”,
ờ “(A)=00H”:
ộ ộ ủ ạ ộ ớ ác ô nh thu c RAM n i c a đo n
ươ ị Ví dụ: Xác đ nh n i dung c ng trình sau: ch
ị ớ ươọ ạ ộ ủ c RAM n i c a đo n
3.2.5 Thanh ghi SP:
ươ Ví dụ: Xác đ nh n i dung các ô nh th ộ ch ng trình sau:
ế ữ ạ ờ ớ
ữ ệ ế ể ợ ể ư Ngăn x p là vùng nh dùng đ l u tr t m th i các d li u. ớ Đ i v i chip 8051 thì vùng nh đu c dùng đ làm ngăn x p
ộ ượ đ c gi
ả Đ s d ng ngăn x p thì ta ph i kh i đ ng thanh ghi SP (nghĩa
ở ộ ớ ủ ế ị ỉ vùng nh c a ngăn x p có đ a ch
ế ghi SP) (cid:0) ỉ ế
ế ế ị (cid:0) vùng nh c a ngăn x p có đ a ch ỉ
ố ớ ữ trong RAM n i. ể ử ụ ị ạ là n p giá tr cho thanh ị ắ ầ b t đ u: (SP)+1 và đ a ch k t thúc: 7FH. ở ộ ế N u không kh i đ ng SP ị
ư ắ ầ b t đ u: 08H và đ a ch ườ L u ý: Trong tr
ẽ ớ ủ ế ộ ặ ị ỉ k t thúc: 7FH (ch đ m c đ nh). ở ộ ng h p không kh i đ ng SP (ch đ m c đ nh) vì
ợ ể ợ ử ụ ể ế ớ
ề ữ ữ ệ ử ụ ế
ư ấ ữ ệ ẽ ị ấ ả
ệ ế ộ ặ ị ợ ệ thì dãy thanh ghi 1 (và có th là dãy 2 và dãy 3) s không còn h p l khi đó vùng nh này đã đu c s d ng đ làm ngăn x p. Đi u này có nghia là n u ta s d ng các dãy thanh ghi này và l u tr d li u vào ế ủ ộ đó thì có kh năng s b m t do tác đ ng c t d li u vào ngăn x p c a các l nh (PUSH, ACALL, LCALL, …).
ế ầ ỉ ủ ế ớ ị t t m đ a ch c a vùng nh ngăn x p trong
ợ
hai tru ng h p sau: (SP)=5FH và (SP)=49H. ế ỉ ắ ầ ớ ủ ị ị Ví d :ụ Hãy cho bi ờ Theo qui đ nh thì vùng nh c a ngăn x p có đ a ch b t đ u: (SP)
ị
ợ ỉ ủ ế ầ ớ (cid:0) Tru ng h p (SP)=5FH: t m đ a ch c a vùng nh ngăn x p là ị
ỉ ế +1 và đ a ch k t thúc: 7FH. ờ 60H 7FH.
ỉ ủ ế ầ ớ ợ (cid:0) Tru ng h p (SP)=49H: t m đ a ch c a vùng nh ngăn x p là ị
ờ 4AH 7FH.
Ví dụ: Hãy cho bi
ị ầ ỉ ế ầ ế ợ ớ ị ể t giá tr c n ph i n p cho thanh ghi SP đ ườ ng h p sau: 62H –
ả ạ vùng nh ngăn x p có t m đ a ch trong hai tr 7FH và 50H – 7FH.
ỉ ắ ầ ớ ủ ế ị ị Theo qui đ nh thì vùng nh c a ngăn x p có đ a ch b t đ u: (SP)
ị
ỉ ế +1 và đ a ch k t thúc: 7FH. ờ ợ ị ầ ạ (cid:0) Tru ng h p 62H – 7FH: giá tr c n n p cho thanh ghi SP là
61H.
ị ầ ạ ợ ờ (cid:0) Tru ng h p 50H – 7FH: giá tr c n n p cho thanh ghi SP là
4FH.
ọ ế ớ ờ ợ
ở ộ ế ộ ặ ị ở ộ ớ
ế ộ ặ ở ộ ế
ớ Ví dụ: Minh h a vùng nh ngăn x p trong tru ng h p không kh i đ ng SP (ch đ m c đ nh) và có kh i đ ng SP (v i (SP) = 3FH). (cid:0) N u ngu i s d ng không kh i đ ng thanh ghi SP (ch đ m c ờ ử ụ ị đ nh) thì: (xem hình bên du i, phía trái)
ờ ử ụ ế ớ ị
ế ị ầ ỉ (cid:0) N u ngu i s d ng mu n vùng nh ngăn x p (ch đ tùy đ nh) ế ộ ố ả có t m đ a ch là 40H–7FH thì: (xem hình bên trên, phía ph i)
3.2.6 Thanh ghi DPTR:
ụ ấ ọ Ví d : Khi ta mu n truy xu t (ghi/đ c) d li u t
ộ ữ ệ ừ ộ ạ ả ố ị ỉ
ệ ệ ị
ậ ệ ươ ủ ệ ả ớ m t ô nh ợ thu c RAM ngoài có đ a ch là 0123H thì ta ph i làm sao n p đu c giá ấ tr 0123H vào thanh ghi DPTR và sau đó th c hi n l nh truy xu t MOVX (xem gi ự ng 3: T p l nh c a 8051.”). i thích l nh trong “Ch
(DPH) = 01H và (DPL) = 23H
(DPTR) = 0123H (cid:0) ụ ố ọ ớ Ví d : Khi ta mu n truy xu t (đ c) byte mã t
ừ ộ m t ô nh thu c ạ ợ ỉ ị
ệ ệ ấ
ậ ệ ủ ệ ả ộ ấ ị ROM trong có đ a ch là 0ABCH thì ta ph i làm sao n p đu c giá tr 0ABCH vào thanh ghi DPTR và sau đó th c hi n l nh truy xu t MOVC (xem gi ả ự ươ ng 3: T p l nh c a 8051.”). i thích l nh trong “Ch
(DPTR) = 0ABCH (cid:0) (DPH) = 0AH và (DPL) = BCH
ậ ấ 3.2.7 Thanh ghi port xu t nh p:
ư
ầ ứ ử ụ ợ ờ
ể
ặ ậ ữ ệ ỉ ị ể ử ụ ẽ ử ụ ấ ị ể L u ý: (cid:0) Trong tru ng h p ph n c ng có s d ng ROM ho c RAM bên ngoài thì ta không th s d ng Port 0 và Port 2 đ xu t nh p d li u. ữ Vì khi đó chip 8051 s s d ng hai port này đ xác đ nh đ a ch và d
ỉ ể ử ụ
ấ ả ủ ấ (cid:0)
ch đ m c đ nh (khi reset) thì t ấ ữ ệ ớ ộ ệ li u cho b nh ngoài. Khi đó, ta ch có th s d ng Port 1 và Port 3 ậ ữ ệ ể đ xu t nh p d li u. Ở ế ộ ặ ị ợ ấ ủ ố
ậ ữ ệ ợ ậ ạ i,
ủ ả t c các bit (các chân) c a
ớ
ầ ế ấ ả port. ậ ấ ọ i các
ạ ộ ủ t c các chân c a các port (P0 – P3) đu c c u hình là port xu t d li u. Mu n các chân port c a chip 8015 làm port nh p d li u thì ta c n ph i đu c l p trình l ứ ằ ứ b ng cách ghi m c logic cao (m c 1) đ n t ậ ữ ệ ừ ắ ầ port tru c khi b t đ u nh p d li u t ữ ệ ạ Ví d 1ụ : Ho t đ ng xu t (ghi) và nh p (đ c) d li u t ớ chân port (Port 0) c a chip 8051 (xem hình minh h a bên du i).
ự ủ ạ ọ ọ ạ ộ (cid:0) Hình phía trái: Minh h a tr ng thái ho t đ ng c a port khi th c
ấ ệ ệ ữ ệ ủ
ủ ả ọ
ự ọ hi n l nh xu t (ghi) d li u ra Port 0 c a chip 8051. ạ ộ ủ Port 0 c a chip 8051. (cid:0) Hình phía ph i: Minh h a tr ng thái ho t đ ng c a port khi ạ ữ ệ ừ ậ ệ ệ th c hi n l nh nh p (đ c) d li u t
ươ
ậ Ví d 2:ụ Đo n ch ạ ữ ệ
ớ ẽ ấ ụ ọ ữ ệ ừ ươ ệ ả ng trình du i đây s c u hình cho Port 0 làm ử port này và g i ậ ệ ng 3: T p l nh
ọ port nh p (đ c) d li u. Sau đó liên t c đ c d li u t ế ữ ệ d li u đó đ n Port 1 (xem gi i thích l nh trong “Ch ủ c a 8051.”):
ấ ằ
ấ ả ;cách ghi “1” vào t
ọ ữ ệ ừ ậ t c các bit. P0.
i.
;Đ c d li u t ử ữ ệ ;G i d li u đó ra P1. ặ ạ ;L p l ớ ươ ệ ẽ ự ng trình du i đây s th c hi n các thao tác MOV P0, #0FFH ; C u hình P0 làm port nh p b ng MOV A, P0 BACK: MOV P1, A SJMP BACK ạ Ví d 3:ụ Đo n ch
sau .
ằ ể ụ (cid:0) Liên t c ki m tra bit P1.2 cho đ n khi bit này b ng 1. (cid:149) Khi
ị ấ
ộ ứ
ụ ế ể
ị
ế P1.2 =1, hãy xu t (ghi) giá tr 45H ra P0. i P1.3. ấ ;C u hình P1.2 làm ngõ vào. ;Ki m tra liên t c n u P1.2 = 0. ấ ;Đua P1.3 lên cao r i đua P1.3
ể ạ
ố ố ế (cid:0) G i m t xung m c cao t ớ ử P1.2 SETB P1.2, $ JNB P0, #45H ; Xu t giá tr 45H ra P0. MOV ồ SETB P1.3 ấ ;xu ng th p đ t o xung. CLR P1.3 3.2.8 Thanh ghi port n i ti p:
ờ ị 3.2.9 Thanh ghi đ nh th i:
3.2.10 Thanh ghi ng t:ắ
ồ ề ể 3.2.11 Thanh ghi đi u khi n ngu n:
ấ ố ộ cho phép tang g p đôi t c đ
Bit SMOD (Serial Mode) (cid:0) ố ộ ố ế ề ữ ệ truy n d li u n i ti p (t c đ baud) khi SMOD = 1.
ờ ậ
Bit GF1, GF0 (General Function) (cid:0) ớ ự ữ ụ ươ ả cho phép ngu i l p trình ng
dùng v i m c đích riêng (d tr cho các phiên b n chip trong t lai).
ế ộ ồ
ị ế ộ ể Bit PD (Power Down) (cid:0) dùng đ qui đ nh ch đ ngu n giãm. ể Bit IDL (Idle) (cid:0) ị dùng đ qui đ nh ch đ nghi.
ụ ồ ả ỏ ớ H th ng ph i ph c h i Vcc = 5V tru c khi thoát kh i
ế ộ L u ý:ư ệ ố ồ ch đ ngu n giãm.
ở ộ
ế ng trình lên đ n 64 KB.
ế
ử ụ
ữ ệ ợ ộ ớ B) B nh ngoà i : ả Chip 8051 cho ta kh năng m r ng: (cid:0) Không gian b nh ch ộ ớ ươ (cid:0) Không gian b nh d li u lên đ n 64 KB. ớ ữ ệ ộ ớ ộ Khi s d ng b nh ngoài: (cid:0) Port 0 (cid:0) ấ ỉ ị bus đ a ch byte th p và bus d li u đa h p (AD0
AD7).
ị ỉ bus đ a ch byte cao (A8A15).
ệ ữ ự ợ ỉ ị (cid:0) Port 2 (cid:0) (cid:0) Port 3(cid:0) các tín hi u đi u khi n (WR\, RD\). ề ể ợ S khác nhau gi a đa h p và không đa h p bus đ a ch và bus
ữ ệ d li u:
ằ ố ượ ư ng chân đ a ra ngoài chip (cid:0)
ướ ủ ả ả Nh m làm gi m s l c c a chip
ấ ộ ớ ươ
gi m kích th ế ố 3.1 K t n i và truy xu t b nh ch
ng trình ngoài:
ỳ ạ ệ ồ ờ ộ ớ Giản đ th i gian chu k n p l nh b nh ngoài
ấ ộ ớ ữ ệ ế ố 3.2 K t n i và truy xu t b nh d li u ngoài:
ấ ộ ớ ữ ệ Truy xu t b nh d li u bên trong
ả ỉ 3.3. Gi ị i mã đ a ch :
ợ ỏ ượ ế ợ ừ c k t h p t ớ
ng h p ROM và RAM đ ế ặ ả ng nh ho c c hai giao ti p v i chip 8051 thì ta c n ả ệ ầ ầ ỉ ị ườ ượ ị ộ ề nhi u b ầ ế i mã đ a ch này cung c n cho h u h t ỉ i mã đ a ch . Vi c gi
ử ế N u ta tr ớ nh có dung l ả ả ph i gi ộ các b vi x lý .
ợ
ị ế ỉ
ể ọ ừ ừ
ạ ươ ứ ng ng: IC1: 0000H – 1FFFH, IC2: 2000H – i h n 8KB t
ượ ử ụ Ví dụ: n u các ROM và RAM có dung lu ng 8KB đ c s d ng ợ ả ầ ả ầ thì t m đ a ch mà chip 8051 qu n lý (0000H – FFFFH) c n ph i đu c ớ ể ả gi i mã thành t ng đo n 8 KB đ chip có th ch n t ng IC nh trên ớ ạ các gi 3FFFH, …
ệ ệ ạ IC chuyên dùng cho vi c t o tín hi u gi
ầ
ạ ớ
ờ ả i mã là 74HC138, các ợ đu c n i v i các ngõ vào ch n chip CS\ ớ ể ớ ộ
ợ ạ ộ ớ
ừ ớ ữ ệ
ớ ươ ả ế ớ
ọ ợ ố ớ ủ ngõ ra c a IC này l n lu t ạ ộ ủ ươ ứ ộ t i m t ng ng c a các IC nh đ cho phép các IC nh ho t đ ng (t ạ ộ ầ ư ỉ ể th i đi m ch có m t IC nh đu c phép ho t đ ng). C n l u ý là do ờ ạ ẽ các đu ng cho phép IC nh ho t đ ng riêng l cho t ng lo i (PSEN\ ộ ộ cho b nh ch ng trình, RD\ và WR\ cho b nh d li u) nên 8051 ể có th qu n lý không gian nh lên đ n 64KB cho ROM và 64KB cho RAM.
ớ ươ ữ ệ ố 3.4. Các không gian nh ch ng trình và d li u g i nhau:
ớ ữ ệ ớ ươ ộ ộ ớ ữ ộ ng trình + b nh d u RAM 1: đóng vai trò là b nh d li u. RAM 2: đóng vai trò là b nh ch
li u.ệ
ờ
ạ ộ ợ Chip 8051 ho t đ ng bình thu ng. Chip 8051 đu c reset.
ố t quá trình reset thì chân RST ph i i
Chân RST = 0 (cid:0) Chân RST = 1 (cid:0) Lưu ý: (cid:0) Đ hoàn t ấ ể ỳ ể ố
ả ở ứ m c cao t ấ ứ thi u là 2 chu k máy và sau đó chuy n xu ng m c th p. ở ị ả ủ ộ ở ể (cid:0) N i dung c a RAM trong chip không b nh hu ng b i ho t ạ
ộ đ ng reset.
ự ươ ắ ầ ở (cid:0) Sau khi reset, vi c th c thi ch ng trình luôn luôn b t đ u vi
ầ ộ
ỉ ệ ớ trí đ u tiên trong b nh ị ng trình: Đ a ch 0000H.
ệ ố
ủ ươ
ị
ươ ch (cid:0) Tr ng thái c a các thanh ghi sau khi reset h th ng: ạ (cid:0) B đ m ch ộ ế ng trình (PC) 0000H (cid:0) Thanh ghi A 00H (cid:0) Thanh ghi B 00H (cid:0) Thanh ghi PSW 00H (cid:0) Thanh ghi SP 07H (cid:0) Thanh ghi DPTR 0000H (cid:0) Port 0 – Port 3 FFH (cid:0) Thanh ghi IP xxx00000B (cid:0) Thanh ghi IE 0xx00000B (cid:0) Các thanh ghi đ nh th i 00H ờ (cid:0) Thanh ghi SCON 00H (cid:0) Thanh ghi SBUF 00H (cid:0) Thanh ghi PCON (HMOS) 0xxxxxxxB
III)
(cid:0) Thanh ghi PCON (CMOS) 0xxx0000B
Ứ Ụ NG D NG
ế ố ộ ố ạ ả ơ ớ K t n i VĐK 8051 v i m t s ngo i vi đ n gi n:
ế ấ ơ + VĐK giao ti p led đ n và phím nh n
ớ ơ ế ố + K t n i VĐK v i R le
ế ố ớ + K t n i VĐK v i LCD
ế ố ậ ớ + K t n i VĐK v i ma tr n led
ậ ậ ể
ỗ ướ ộ ử ụ
ươ c khi vi
ề ấ ị ế t ch ầ ứ ể ầ ượ ậ c l p ươ ả ng ỏ ng trình đòi h i ầ i vi c c u t o ph n c ng và các yêu c u mà
ế ệ ầ
ươ ậ ộ
i l p trình.T p h p t
ổ
ượ ổ ứ c t ườ ậ ể ể ượ ả ế c c i ti n sau này th ọ ch c theo m t trình t ậ ề ườ ầ ứ ế ậ ệ ề ậ ệ ở ộ ể ề Vi đi u khi n là m t IC l p trình, vì v y Vi đi u khi n c n đ ầ ứ c khi s d ng. M i ph n c ng nh t đ nh ph i có ch trình tr ướ ợ trình phù h p kèm theo, do đó tr ắ ượ ấ ạ ả ắ ườ t ph i n m b t đ ng ệ ự ạ m ch đi n c n th c hi n. ợ ự ệ ng trình là t p h p các l nh đ Ch ợ ấ ả ể ả ợ ầ ủ i quy t các yêu c u c a ng t c h p lí đ gi ộ ề ọ ọ ệ các l nh g i là t p l nh. H Vi đi u khi n MSC51 đ u có chung m t ậ ệ ng ít thay đ i t p l nh, các Vi đi u khi n đ ặ ho c m r ng t p l nh mà chú tr ng phát tri n ph n c ng.
ị ể ề ệ
ế ủ ệ ọ ệ
ệ ự ươ ng trình Vi đi u
ả ự ệ ệ ữ ệ ố L nh c a Vi đi u khi n là các s nh phân 8 bit hay còn g i là mã máy. Các l nh mang mã 00000000b đ n 11111111b. Các mã l nh này ượ ư ề ư đ c đ a vào l u tr trong ROM, khi th c hi n ch ọ ể khi n đ c các mã l nh này, gi
ạ ị
ủ ệ ỡ ỗ ứ ạ ỗ ấ
ế ớ ự ỗ ợ ủ
ươ ươ t ch t ch i vi
ữ ậ ệ t ch
ườ ằ ượ ẽ ể ị ng t, các trình biên d ch s chuy n các câu l nh c p cao
ề ng trình cho vi đi u ươ ế ấ ệ ượ ư c đ a ế ể ẽ ề
ể ươ ừ ệ ả i mã, và th c hi n l nh. ệ ể ề ố Vì các l nh c a Vi đi u khi n có d ng s nh phân quá dài và khó ớ ơ ữ ươ i r t ph c t p nh , h n n a vi c g l ng trình phát sinh l i khi ch ả ượ và khó khăn. Khó khăn này đ i quy t v i s h tr c a máy vi c gi ể ế ế ng trình có th vi tính, ng ấ ể khi n b ng các ngôn ng l p trình c p cao, sau khi vi c vi ấ c hoàn t trình đ ự ộ ộ đ ng. Các mã máy này sau đó đ thành mã máy m t cách t ề ủ ớ ộ ạ (n p) vào b nh ROM c a Vi đi u khi n, Vi đi u khi n s tìm đ n ệ ể ự ọ ROM đ th c hi n ch đ c các l nh t ng trình . B n thân máy tính
ể ự
ệ ố ớ ỏ ươ ự ệ ợ ng trình mô ph ng
ầ không th th c hi n các mã máy này vì chúng không phù h p v i ph n ả ứ c ng máy tính, mu n th c hi n ph i có các ch dành riêng.
ể ế ằ
t b ng C++,C,Visual ợ ề ươ ng trình cho Vi đi u khi n có th vi ặ
ề ượ c đa s ng
ươ ứ ộ ử ỗ ng ng v i m t ch l nh mà b x lý ng trình t
ươ ng ể Assembly là m t ngôn ng c p th p, trong đó ộ ữ ộ ớ ủ ợ ọ
c. ộ ệ
ữ ậ ể Ch ữ ữ ấ Basic, ho c băng các ngôn ng c p cao khác. Tuy nhiên h p ng ể ậ ố ườ ể ử ụ i dùng Vi đi u khi n s d ng đ l p Assembler đ ế ể ướ ọ ẫ t ch trình, vì lí do này chúng tôi ch n Assembly đ h ng d n vi ấ ữ ấ ề trình cho Vi đi u khi n. ỉ ệ ươ ệ m i câu l nh ch ể ự có th th c hi n đ ế chi m dung l ấ ố ơ su t t Ư ể ệ ượ u đi m c a h p ng Assembly là: mã g n,ít ớ ớ ố ộ ượ ng b nh , ho t đ ng v i t c đ nhanh, và nó có hi u ế ằ ươ ớ t h n so v i các ch t b ng ngôn ng b c cao khác. ạ ộ ng trình vi
T ng quan v ngôn ng l p trình ASSEMBLY:
ữ ậ ổ ề
ườ ề ể ặ ậ ộ ố ệ o M t s l nh th ng g p khi l p trình cho vi đi u khi n:
L nh MOV:
ệ
ấ ồ C u trúc: MOV đích,ngu n
ể ữ ệ ừ ồ ỏ ngu n vào đích va thoát kh i câu
ứ Ch c năng: chuy n d li u t l nh.ệ
ể ế ữ ệ ế ặ ồ
ư ể ế ấ ồ L u ý: đích la các thanh ghi, ngu n có th là thanh ghi cũng có ự ị ự ế th là giá tr tr c ti p ho c gián ti p. N u ngu n là d li u tr c ả ti p thì ph i ghi theo c u trúc:
ự ế ữ ệ MOV đích,#d li u tr c ti p
ế ả ố ế ữ ệ ạ N u là s hexa thì ph i vi t #0(d li u d ng hexa). Vd #FFH
ế ữ ệ ố ế ả ạ t #(d li u d ng bit)B. Vd
ị N u là s nh phân ph i vi #11110000B
ế ữ ệ ạ ậ ố ậ ả t #(d li u d ng th p phân). Vd
ế N u là s th p phân ph i vi #255
ệ L nh JB:
ấ C u trúc: JB bit,nhãn
ứ ứ ủ ể ạ ấ
ứ ế ế ế ứ ủ ệ ả ỏ ị Ch c năng: ki m tra m c tr ng thái c a bit. N u là m c th p thì thoát kh i câu l nh. N u là m c cao thì nh y đ n v trí c a nhãn.
ấ ủ ọ
ộ ị ị ậ ư L u ý: nhãn là tên g i đánh d u c a m t v trí nào đó trong ươ ch ng trình l p trình mà chúng ta quy đ nh cho nó.
L nh JNB:
ệ
ấ C u trúc: JNB bit,nhãn
ứ ứ ủ ể ạ
ả ớ ị ứ ệ ấ ỏ ế ứ Ch c năng: ki m tra m c tr ng thái c a bit.N u là m c cao thì ế thoát kh i câu l nh. N u là m c th p thì nh y t ủ i v trí c a nhãn.
L nh CJNE:
ệ
ấ ồ C u trúc: CJNE đích,ngu n,nhãn
ứ ế
ữ ệ ủ ủ ồ ế ớ ằ ế ả ỏ ị
ằ Ch c năng: so sánh d li u c a ngu n v i đích. N u không b ng nhau thì nh y đ n v trí c a nhãn. N u b ng thì thoát kh i câu l nh.ệ
ệ L nh DJNZ:
ấ C u trúc: DJNZ thanh ghi,nhãn
ị
ứ ả ả ớ ị ế ủ ằ ế ằ ớ i v trí c a nhãn.N u b ng 0
ệ Ch c năng: so sánh giá tr thanh ghi v i 0. N u không b ng thì ị gi m giá tr thanh ghi đi 1 và nh y t ỏ thì thoát kh i câu l nh.
ị ươ ư ể ậ L u ý: khi l p trình ta nên đ cho thanh ghi có giá tr d ng.
L nh SETB:
ệ
ấ C u trúc: SETB bit
ế ậ ứ ạ ỏ t l p m c tr ng thái cao cho bit và thoát kh i câu
ứ Ch c năng: thi l nh.ệ
ở ứ ư ứ m c 0 thì đ a lên m c 1, còn đang ở ứ m c 1
ữ ư L u ý: khi bit đang nguyên. thì gi
L nh CLR:
ệ
ấ C u trúc: CLR bit
ế ậ ứ ạ ỏ t l p m c tr ng thái 0 cho bit và thoát kh i câu
ứ Ch c năng: thi l nh.ệ
ở ứ ư ứ
ữ
ở ố m c 1 thì đ a xu ng m c 0, còn đang ể ằ nguyên. Có th thay bit b ng thanh ghi nà khi đó ề ượ ư ủ ứ ư L u ý: khi bit đang ứ m c 0 thì gi ấ ả t c các bit c a thanh ghi đ u đ t ố c đ a xu ng m c 0.
L nh INC:
ệ
ấ C u trúc: INC thanh ghi
ứ ệ ỏ ị Ch c năng: tăng giá tr thanh ghi lên 1 và thoát kh i câu l nh.
L nh LJMP:
ệ
ấ C u trúc: LJMP nhãn.
ả ớ ị ứ Ch c năng: nh y t ủ i v trí c a nhãn.
ư ể ươ ả L u ý: có th nh y trong toàn ch ng trình.
ệ L nh SJMP:
ấ C u trúc: SJMP nhãn
ả ớ ị ứ Ch c năng: nh y t ủ i v trí c a nhãn
ể ả ạ
ư L u ý: có th nh y trong ph m vi 128byte và 127byte sau câu l nh.ệ
L nh RET:
ệ
ấ C u trúc: RET
ứ ộ ươ ỏ ề ị ư ng trình con và đ a con tr v v
ọ ế Ch c năng: k t thúc m t ch ươ ng trình con. trí lúc g i ch
L nh LCALL:
ệ
ấ C u trúc: LCALL nhãn
ứ ọ ộ ươ ắ ầ ừ ị Ch c năng: g i m t ch ng trình con b t đ u t ủ v trí c a nhãn.
ư ươ ể ọ L u ý: có th g i trong toàn ch ng trình.
ể ậ ụ ừ ệ T các câu l nh trên ta áp d ng đ l p trình cho VĐK 8051.
ồ
ạ
M ch ngu n
9VAC - 1A được qua bộ chỉnh lưu nhằm biến đổi xoay chiều thành 1 chiều. THành phần 1 chiều này có độ gợn nên phải qua bộ lọc C để san phẳng điện áp gợn đó cho ra điện áp 1 chiều. Sau đó điện áp 1 chiều này qua bộ ổn áp 78xx cho ra điện áp ổn áp mà mình cần. a) 9VAC - 1A là nguồn cấp đầy vào cho bộ biến đổi và bộ lọc để có điện áp một chiều mong muốn b) Chỉnh lưu:
Thành phần chỉnh lưu là biến đổi tín hiệu xoay chiều thành tín hiệu 1 chiều thông
qua 4 con diode chỉnh lưu. Đây là sơ đồ chỉnh lưu cả chu kì với dạng sóng đầu vào và đầu ra sau chỉnh lưu như sau:
Điện áp đầu vào của bộ chỉnh lưu : Uv = 24sqrt2 = 34VDC + Điện áp sụt áp trên cầu là : 34VDC - 1.5VDC = 32.5VDC (Do đi qua 2 diode nên mỗi đioe nó bị sụt áp mất 0.7V) + Điện áp sau chỉnh lưu là : Ucl = 32.5 * 0.9 = 29VDC ( 0.9 là hệ số chỉnh lưu của chỉnh luu cầu) Dạng điện áp sau chỉnh lưu nó vẫn còn các sóng nhấp nhô như ngọn núi và dạng điện áp này vẫn được coi là điện áp 1 chiều nhưng chưa ổn định c) Thành phần lọc : + Tụ C1 và C2 lọc các thành phần điện áp nhấp nhô sau chỉnh lưu cho nó bằng phẳng.
Dạng điện áp sau khi qua bộ lọc
Dựa vào nguyên tắc phóng nạp của tụ điện mà nó cho ra dòng điện 1 chiều thằng như trên hình vẽ. Tụ càng lớn thì độ gợn điện áp càng giảm. NHững sóng có tần số cao tần phải được lọc đi nhờ 2 tụ kẹo C2 và C4 vì trong mạch dùng IC nếu tồn tại những thành phần này thì sẽ gây ra những sai sót khó phát hiện làm cho mạch hoạt động không bình thường. Qua bộ lọc là ta đã tạo được điện áp 1 Chiều cấp vào cho bộ biến đổi đổi hay là bộ ổn áp d) Bộ ổn áp Theo thông số datasheet thì ta thấy được các thông số làm việc của 78xx như sau : + Giải điện áp đầu vào là lớn nhất là 40V. Với điện áp đầu ra từ 5V đến 18V thì điện áp vào lấy là 35V. Còn điện áp ra là 24V thì điện áp vào là 40V như vậy mạch ổn áp với hoạt động ổn định + Ở đây ta lấy điện áp vào là 24v vì khi điện áp qua cầu diode nó sẽ đạt sấp sỉ 35v thì điện áp đầu ra ta sẽ dk trong khoảng 5v-18v + Giải nhiệt độ hoạt động là từ 0 đến 125 độ C. Cần phải tản nhiệt tốt + Điện áp ổn định đầu ra tương ứng với từng loại 78xx
+ Dòng họ 78xx cho ra nhiều loại ổn áp điện khác nhau : như 7805 nó ổn áp 5V, 7806 cho ổn áp 6V... + Điện áp đầu vào của họ 78xx là điện áp 1 chiều và max <=40V. Dòng điện không vượt quá 1A + Đảm bảo thông số là : Vi - V0 = 2V đến 3V ( lúc đó mạch mới hoạt động ổn áp được) + Tản nhiệt tốt cho 78xx. Khi hoạt động với tải thì 78xx rất nóng. Đối với cấp điện áp là 29V thì 78xx nóng khi có tải và chú ý tản nhiệt tốt cho nó.
+ Để đảm bảo được nguồn vào cho vi điều khiển at89c52 thì ta chọn ic ổn áp lm7805 thì nó sẽ cho ta điện áp ổn định là 5V cấp cho vi điều khiển để vi điều khiển hoạt động một cách ổn định nhất.
e, Led đơn và điện trở :
Để xác định mạch nguồn của ta có hoạt động hay không
ỏ
ạ
M ch mô ph ng
Bao g mồ
Ic 89C51
ở ệ 17 đi n tr
8 led đ nơ
ắ 9 công t c (SWITCH)
ề
ể
ắ
ươ
ng trình đi u khi n công t c và
Ch ể hi n thi 8 led
#include
void delay_ms( int t);
void dieukhienled (void);
void main (void)
{
while(1)
{
dieukhienled();
}
}
void delay_ms(int t)
{
int i,j;
for(i=0;i { for(j=0;j<123;j++);// delay 1ms } } void dieukhienled (void) { while(1) { if(P0_0==1) { P1_0=0; } else { P1_0=1; } delay_ms(500); if(P0_1==1) { P1_1=0; } else { P1_1=1; } delay_ms(500); if(P0_2==1) { P1_2=0; } else { P1_2=1; } delay_ms(500); if(P0_3==1) { P1_3=0; } else { P1_3=1; } delay_ms(500); if(P0_4==1) { P1_4=0; } else { P1_4=1; } delay_ms(500); if(P0_5==1) { P1_5=0; } else { P1_5=1; } delay_ms(500); if(P0_6==1) { P1_6=0; } else { P1_6=1; } delay_ms(500); if(P0_7==1) { P1_7=0; } else { P1_7=1; } delay_ms(500); } } #include void delay_ms( int t); void dieukhienled (void); void main (void) { EX1=1; IT1=1; EA=1; while(1) { dieukhienled(); } } void delay_ms(int t) { int i,j; for(i=0;i { for(j=0;j<123;j++);// delay 1ms } } void dieukhienled (void) { while(1) { if(P0_0==1) { P1_0=0; } else { P1_0=1; } delay_ms(500); if(P0_1==1) { P1_1=0; } else { P1_1=1; } delay_ms(500); if(P0_2==1) { P1_2=0; } else { P1_2=1; } delay_ms(500); if(P0_3==1) { P1_3=0; } else { P1_3=1; } delay_ms(500); if(P0_4==1) { P1_4=0; } else { P1_4=1; } delay_ms(500); if(P0_5==1) { P1_5=0; } else { P1_5=1; } delay_ms(500); if(P0_6==1) { P1_6=0; } else { P1_6=1; } delay_ms(500); if(P0_7==1) { P1_7=0; } else { P1_7=1; } delay_ms(500); } } void TA (void)interrupt 2 { }ể
ề
ắ
ng trình đi u khi n công t c và
ắ
ươ
Ch
ể
hi n thi 8 led (có ng t ngoài)

