B CÔNG TH NGỘ ƯƠ
TR NG Đ I H C CÔNG NGHI P HÀ N IƯỜ Ạ Ọ Ệ Ộ
KHOA ĐI N TỆ Ử
LU N VĂN T T NGHI PẬ Ố Ệ
Đ tàiề : Nghiên c u v vi đi u khi n PIC 16F877Aứ ề ề ể
và m t s ng d ng.ộ ố ứ ụ
C th : Nghiên c u và thi t k b KIT PICụ ể ứ ế ế ộ
16F877A
GV h ng d n : ướ ẫ
SV th c hi nự ệ :
L p : Đi n T 1 K2ớ ệ ử
Khoa : Đi n Tệ ử
Tr ng : Đ i h c Công Nghi p Hà N i ườ ạ ọ ệ ộ
LU N VĂN T T NGHI PẬ Ố Ệ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
2
LU N VĂN T T NGHI PẬ Ố Ệ
B CÔNG TH NG Ộ ƯƠ C NG HOÀ XÃ H I CH NGHĨA VI T NAMỘ Ộ Ủ Ệ
TR NG ĐH CÔNG NGHI P HÀ N IƯỜ Ệ Ộ Đ c l p - T do - H nh phúcộ ậ ự ạ
TH C T P T T NGHI P Đ I H CỰ Ậ Ố Ệ Ạ Ọ
H và tên h c sinh : TR N XUÂN CHI Nọ ọ Ầ Ế
L p : ĐI N T 1 K2ớ Ệ Ử
Khoá : 2…… Khoa, Trung tâm : ĐI N TỆ Ử
Tên đ tài: Nghiên c u v vi đi u khi n PIC 16F877A và m t s ng d ng.ề ứ ề ề ể ộ ố ứ ụ
C th : Nghiên c u và thi t k b KIT PIC 16F877Aụ ể ứ ế ế ộ
Giáo viên h ng d n : PH M TH QUỲNH TRANGướ ẫ Ạ Ị
N I DUNG YÊU C UỘ Ầ
TT N i dungộ
1 T ng quan v vi đi u khi nổ ề ề ể
2 Gi i thi u v PIC 16F877Aớ ệ ề
3 ng d ng PIC 16F877A xây d ng b kit th c hành vi đi u khi nỨ ụ ự ộ ự ề ể
4
Ngày giao đ tài : ề …………………………………. Ngày hoàn thành : ………………………………….
GIÁO VIÊN H NG D NƯỚ Ẫ TR NG KHOA ƯỞ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
3
LU N VĂN T T NGHI PẬ Ố Ệ
Đánh giá và nh n xét c a GV h ng d nậ ủ ướ ẫ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
4
LU N VĂN T T NGHI PẬ Ố Ệ
M C L CỤ Ụ
L I M Đ UỜ Ở Ầ
Ngày nay k thu t vi đi u khi n đã tr nên quen thu c trong các ngành kỹ ậ ề ể ở ộ ỹ
thu t và trong dân d ng. Các b vi đi u khi n có kh năng x lý nhi u ho t đ ngậ ụ ộ ề ể ả ử ề ạ ộ
ph c t p mà ch c n m t chip vi m ch nh , nó đã thay th các t đi u khi n l nứ ạ ỉ ầ ộ ạ ỏ ế ủ ề ể ớ
và ph c t p b ng nh ng m ch đi n g n nh , d dàng thao tác s d ng.ứ ạ ằ ữ ạ ệ ọ ẹ ễ ử ụ
Vi đi u khi n không nh ng góp ph n vào k thu t đi u khi n mà còn gópề ể ữ ầ ỹ ậ ề ể
ph n to l n vào vi c phát tri n thông tin. Chính vì các lý do trên, vi c tìm hi u,ầ ớ ệ ể ệ ể
kh o sát vi đi u khi n là đi u mà các sinh viên ngành đi n mà đ c bi t là chuyênả ề ể ề ệ ặ ệ
ngành k thu t đi n-đi n t ph i h t s c quan tâm. Đó chính là m t nhu c u c nỹ ậ ệ ệ ử ả ế ứ ộ ầ ầ
thi t và c p bách đ i v i m i sinh viên, đ tài này đ c th c hi n chính là đápế ấ ố ớ ỗ ề ượ ự ệ
ng nhu c u đó.ứ ầ
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 đ c l i là m t đi u r t ph c t p. Ph n công vi c x lý chính v n phử ụ ươ ạ ộ ề ấ ứ ạ ầ ệ ử ẫ ụ
thu c vào con ng i, đó chính là ch ng trình hay ph n m m. N u không có sộ ườ ươ ầ ề ế ự
tham gia c a con ng i thì h th ng vi đi u khi n cũng ch là m t v t vô tri. Doủ ườ ệ ố ề ể ỉ ộ ậ
v y khi nói đ n vi đi u khi n cũng gi ng nh máy tính bao g m 2 ph n là ph nậ ế ề ể ố ư ồ ầ ầ
c ng và ph n m m.ứ ầ ề
M c dù vi đi u khi n đã đi đ c nh ng b c dài nh v y nh ng đ ti p c nặ ề ể ượ ữ ướ ư ậ ư ể ế ậ
đ c v i k thu t này không th là m t vi c có đ c trong m t s m m t chi u.ượ ớ ỹ ậ ể ộ ệ ượ ộ ớ ộ ề
Đ tìm hi u b vi đi u khi n m t cách khoa h c và mang l i hi u qu cao làmể ể ộ ề ể ộ ọ ạ ệ ả
n n t n cho vi c xâm nh p vào nh ng h th ng t i tân h n. Vi c trang b nh ngề ả ệ ậ ữ ệ ố ố ơ ệ ị ữ
ki n th c v vi đi u khi n cho sinh viên là h t s c c n thi t. Xu t phát t th cế ứ ề ề ể ế ứ ầ ế ấ ừ ự
ti n này em đã đi đ n quy t đ nh ể ế ế ị Thi t k b Kit Vi Đi u Khi n PICế ế ộ ề ể
16F877A nh m đáp ng nhu c u ham mu n h c h i c a b n than và giúp cho cácằ ứ ầ ố ọ ỏ ủ ả
b n sinh viên d ti p c n và hi u sâu h n v VĐK PIC.ạ ễ ế ậ ể ơ ề
Trong quá trình th c hi n đ tài v n còn nhi u sai sót, mong nh n đ c nhi uự ệ ề ẫ ề ậ ượ ề
ý ki n đóng góp t cô và các b n.ế ừ ạ
Em chân thành c m n!ả ơ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
5
LU N VĂN T T NGHI PẬ Ố Ệ
Hà n i, ngày 19 tháng 4 năm 2011ộ
Sinh viên
Tr n Xuân Chi nầ ế
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
6
LU N VĂN T T NGHI PẬ Ố Ệ
CH NG 1: ƯƠ T NG QUAN V VIỔ Ề ĐI U KHI NỀ Ể
1.1 GI I THI U KHÁI QUÁT V VIỚ Ệ Ề ĐI U KHI NỀ Ể
1.1.1 GI I THI U CHUNGỚ Ệ
B Vi x lý có kh năng v t b c so v i các h th ng khác v kh năng tínhộ ử ả ượ ậ ớ ệ ố ề ả
toán, x lý, và thay đ i ch ng trình linh ho t theo m c đích ng i dùng, đ c bi tử ổ ươ ạ ụ ườ ặ ệ
hi u qu đ i v i các bài toán và h th ng l n.Tuy nhiên đ i v i các ng d ngệ ả ố ớ ệ ố ớ ố ớ ứ ụ
nh , t m tính toán không đòi h i kh năng tính toán l n thì vi c ng d ng vi x lýỏ ầ ỏ ả ớ ệ ứ ụ ử
c n cân nh c. B i vì h th ng dù l n hay nh , n u dùng vi x lý thì cũng đòi h iầ ắ ở ệ ố ớ ỏ ế ử ỏ
các kh i m ch đi n giao ti p ph c t p nh nhau. Các kh i này bao g m b nhố ạ ệ ế ứ ạ ư ố ồ ộ ớ
đ ch a d li u và ch ng trình th c hi n, các m ch đi n giao ti p ngo i vi để ứ ữ ệ ươ ự ệ ạ ệ ế ạ ể
xu t nh p và đi u khi n tr l i, các kh i này cùng liên k t v i vi x lý thì m iấ ậ ề ể ở ạ ố ế ớ ử ớ
th c hi n đ c công vi c. Đ k t n i các kh i này đòi h i ng i thi t k ph iự ệ ượ ệ ể ế ố ố ỏ ườ ế ế ả
hi u bi t tinh t ng v các thành ph n vi x lý, b nh , các thi t b ngo i vi. Hể ế ườ ề ầ ử ộ ớ ế ị ạ ệ
th ng đ c t o ra khá ph c t p, chi m nhi u không gian, m ch in ph c t p vàố ượ ạ ứ ạ ế ề ạ ứ ạ
v n đ chính là trình đ ng i thi t k . K t qu là giá thành s n ph m cu i cùngấ ề ộ ườ ế ế ế ả ả ẩ ố
r t cao, không phù h p đ áp d ng cho các h th ng nh .ấ ợ ể ụ ệ ố ỏ
Vì m t s nh c đi m trên nên các nhà ch t o tích h p m t ít b nh và m tộ ố ượ ể ế ạ ợ ộ ộ ớ ộ
s m ch giao ti p ngo i vi cùng v i vi x lý vào m t IC duy nh t đ c g i làố ạ ế ạ ớ ử ộ ấ ượ ọ
Microcontroller- Vi đi u khi n.ề ể
M t s đ c đi m khác nhau gi a vi x lí và VĐK:ộ ố ặ ể ữ ử
- V ph n c ng: VXL c n đ c ghép thêm các thi t b ngo i vi bên ngoài nhề ầ ứ ầ ượ ế ị ạ ư
b nh , và các thi t b ngo i vi khác, … đ có th t o thành m t b n m chộ ớ ế ị ạ ể ể ạ ộ ả ạ
hoàn ch nh. Đ i v i VĐK thì b n thân nó đã là m t h máy tính hoàn ch nh v iỉ ố ớ ả ộ ệ ỉ ớ
CPU, b nh , các m ch giao ti p, các b đ nh th i và m ch đi u khi n ng tộ ớ ạ ế ộ ị ờ ạ ề ể ắ
đ c tích h p bên trong m ch. ượ ợ ạ
- V các đ c tr ng c a t p l nh: Do ng d ng khác nhau nên các b VXL vàề ặ ư ủ ậ ệ ứ ụ ộ
VĐK cũng có nh ng yêu c u khác nhau đ i v i t p l nh c a chúng. T p l nhữ ầ ố ớ ậ ệ ủ ậ ệ
c a các VXL th ng m nh v các ki u đ nh đ a ch v i các l nh cung c p cácủ ườ ạ ề ể ị ị ỉ ớ ệ ấ
ho t đ ng trên các l ng d li u l n nh 1byte, ½ byte, word, doubleạ ộ ượ ữ ệ ớ ư
word, các b VĐK, các t p l nh r t m nh trong vi c x lý các kiêu d li uỞ ộ ậ ệ ấ ạ ệ ử ữ ệ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
7
LU N VĂN T T NGHI PẬ Ố Ệ
nh nh bit ho c m t vài bit.ỏ ư ặ ộ
- Do VĐK c u t o v ph n c ng và kh năng x lí th p h n nhi u soi v i VXLấ ạ ề ầ ứ ả ử ấ ơ ề ớ
nên giá thành c a VĐK cũng r h n nhi u. Tuy nhiên nó v n đ kh năng đápủ ẻ ơ ề ẫ ủ ả
ng đ c t t c các yêu c u c a ng i dùng.ứ ượ ấ ả ầ ủ ườ
Vi đi u khi n đ c ng d ng trong các dây chuy n t đ ng lo i nh , các robot cóề ể ượ ứ ụ ề ự ộ ạ ỏ
ch c năng đ n gi n, trong máy gi t, ôtô v.v ứ ơ ả ặ
1.1.2 PHÂN LO IẠ
Đ dài thanh ghiộ
D a vào đ dài c a các thanh ghi và các l nh c a VĐK mà ng i ta chia ra cácự ộ ủ ệ ủ ườ
lo i VĐK 8bit, 16bit, hay 32bit ạ
Các lo i VĐK 16bit do có đ dài l nh l n h n nên các t p l nh cũng nhi u h n,ạ ộ ệ ớ ơ ậ ệ ề ơ
phong phú h n. Tuy nhiên b t c ch ng trình nào vi t b ng VĐK 16bit chúng taơ ấ ứ ươ ế ằ
đ u có th vi t trên VDK 8bit v i ch ng trình thích h p.ề ể ế ớ ươ ợ
Ki n trúc CISC và RISCế
VXL ho c VĐK CISC là VĐK có t p l nh ph c t p. Các VĐK này có m t sặ ậ ệ ứ ạ ộ ố
l ng l n các l nh nên giúp cho ng i l p trình có th linh ho t và d dàng h nượ ớ ệ ườ ậ ể ạ ễ ơ
khi vi t ch ng trình. VĐK RISC là VĐK có t p l nh đ n gi n. Chúng có m t sế ươ ậ ệ ơ ả ộ ố
l ng nh các l nh đ n gi n. DO đó, chúng đòi h i ph n c ng ít h n, giá thànhươ ỏ ệ ơ ả ỏ ầ ứ ơ
th p h n, và nhanh h n so v i CISC. Tuy nhiên nó đòi h i ng i l p trình ph iấ ơ ơ ớ ỏ ườ ậ ả
vi t các ch ng trình ph c t p h n, nhi u l nh h n. ế ươ ứ ạ ơ ề ệ ơ
Ki n trúc Harvard và ki n trúc Vonneumannế ế
Ki n trúc Harvard s d ng b nh riêng bi t cho ch ng trình và d li u. Bus đ aế ử ụ ộ ớ ệ ươ ữ ệ ị
ch và bus d li u đ c l p v i nhau nên quá trình truy n nh n d li u đ n gi nỉ ữ ệ ộ ậ ớ ề ậ ữ ệ ơ ả
h n Ki n trúc Vonneumann s d ng chung b nh cho ch ng trình và d li u.ơ ế ử ụ ộ ớ ươ ữ ệ
Đi u này làm cho VĐK g n nh h n, giá thành nh h n.ề ọ ẹ ơ ẹ ơ
M t s lo i VĐK có trên th tr ng: ộ ố ạ ị ườ
- VĐK MCS-51: 8031, 8032, 8051, 8052,
- VĐK ATMEL: 89Cxx, AT89Cxx51
- VĐK AVR AT90Sxxxx
- VĐK PIC 16C5x, 17C43
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
8
LU N VĂN T T NGHI PẬ Ố Ệ
1.1.3 C U TRÚC T NG QUAN C A VDKẤ Ổ Ủ
CPU:
Là trái tim c a h th ng. Là n i qu n lí t t c các ho t đ ng c a VĐK. Bênủ ệ ố ơ ả ấ ả ạ ộ ủ
trong CPU g m: ồ
- ALU là b ph n thao tác trên các d li uộ ậ ữ ệ
- B gi i mã l nh và đi u khi n, xác đ nh các thao tác mà CPU c n th cộ ả ệ ề ể ị ầ ự
hi nệ
- Thanh ghi l nh IR, l u gi opcode c a l nh đ c th c thiệ ư ữ ủ ệ ượ ự
- Thanh ghi PC, l u giũ đ a ch c a l nh k ti p c n th c thiư ị ỉ ủ ệ ế ế ầ ự
- M t t p các thanh ghi dùng đ l u thông tin t m th iộ ậ ể ư ạ ờ
2. ROM:
ROM là b nh dùng đ l u gi ch ng trình. ROM còn dùng đ ch a s li uộ ớ ể ư ữ ươ ể ứ ố ệ
các 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 dung ROM ạ ộ ộ ố ị ể ổ ộ
ch thay đ i khi ROM ch đ xóa ho c n p ch ng trình.ỉ ổ ở ế ộ ặ ạ ươ
RAM:
RAM là b nh d li u. B nh RAM dùng làm môi tr ng x lý thông tin,ọ ớ ữ ệ ộ ớ ườ ử
l u tr các k t qu trung gian và k t qu cu i cùng c a các phép toán, x líư ữ ế ả ế ả ố ủ ử
thông tin. Nó cũng dùng đ t ch c các vùng đ m d li u, trong các thao tácể ổ ứ ệ ữ ệ
thu phát, chuy n đ i d li u.ể ổ ữ ệ
BUS:
BUS là các đ ng d n dùng đ di chuy n d li u. Bao g m: bus đ a ch , busườ ẫ ể ể ữ ệ ồ ị ỉ
d li u , và bus đi u khi n ữ ệ ề ể
B Đ NH TH I:Ộ Ị Ờ Đ c s d ng cho các m c đích chung v th i gian.ượ ử ụ ụ ề ờ
WATCHDOG: B ph n dùng đ reset l i h th ng khi h th ng g p “b tộ ậ ể ạ ệ ố ệ ố ặ ấ
th ng”. ườ
ADC: B ph n chuy n tín hi u analog sang tín hi u digital. Các tín hi uộ ậ ể ệ ệ ệ
bên ngoài đi vào VDK th ng d ng analog. ADC s chuy n tín hi u này vườ ở ạ ẽ ể ệ ề
d ng tín hi u digital mà VDK có th hi u đ c.ạ ệ ể ể ượ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
9
LU N VĂN T T NGHI PẬ Ố Ệ
1.2 KHÁI QUÁT V VI ĐI U KHI N PICỀ Ề Ể
1.2.1 PIC LÀ GÌ ?
PIC là vi t t t c a “Programable Intelligent Computer”, có th t m d ch là “máyế ắ ủ ể ạ ị
tính thông minh kh trình” do hãng Genenral Instrument đ t tên cho vi đi u khi nả ặ ề ể
đ u tiên c a h : PIC1650 đ c thi t k đ dùng làm các thi t b ngo i vi cho viầ ủ ọ ượ ế ế ể ế ị ạ
đi u khi n CP1600. Vi đi u khi n này sau đó đ c nghiên c u phát tri n thêm vàề ể ề ể ượ ứ ể
t đó hình thành nên dòng vi đi u khi n PIC ngày nay.ừ ề ể
1.2.2 KI N TRÚC PICẾ
C u trúc ph n c ng c a m t vi đi u khi n đ c thi t k theo hai d ng ki nấ ầ ứ ủ ộ ề ể ượ ế ế ạ ế
trúc: ki n trúc Von Neuman và ki n trúc Havard.ế ế
Hình 1.1: Ki n trúc Havard và ki n trúc Von-Neumanế ế
T ch c ph n c ng c a PIC đ c thi t k theo ki n trúc Havard. Đi m khác bi tổ ứ ầ ứ ủ ượ ế ế ế ể ệ
gi a ki n trúc Havard và ki n trúc Von-Neuman là c u trúc b nh d li u và bữ ế ế ấ ộ ớ ữ ệ ộ
nh ch ng trình.ớ ươ
Đ i v i ki n trúc Von-Neuman, b nh d li u và b nh ch ng trình n mố ớ ế ộ ớ ữ ệ ộ ớ ươ ằ
chung trong m t b nh , do đó ta có th t ch c, cân đ i m t cách linh ho t bộ ộ ớ ể ổ ứ ố ộ ạ ộ
nh ch ng trình và b nh d li u. Tuy nhiên đi u này ch có ý nghĩa khi t c đớ ươ ộ ớ ữ ệ ề ỉ ố ộ
x lí c a CPU ph i r t cao, vì v i c u trúc đó, trong cùng m t th i đi m CPU chử ủ ả ấ ớ ấ ộ ờ ể ỉ
có th t ng tác v i b nh d li u ho c b nh ch ng trình. Nh v y có thể ươ ớ ộ ớ ữ ệ ặ ộ ớ ươ ư ậ ể
nói ki n trúc Von-Neuman không thích h p v i c u trúc c a m t vi đi u khi n.ế ợ ớ ấ ủ ộ ề ể
Đ i v i ki n trúc Havard, b nh d li u và b nh ch ng trình tách ra thànhố ớ ế ộ ớ ữ ệ ộ ớ ươ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
10
LU N VĂN T T NGHI PẬ Ố Ệ
hai b nh riêng bi t. Do đó trong cùng m t th i đi m CPU có th t ng tác v iộ ớ ệ ộ ờ ể ể ươ ớ
c hai b nh , nh v y t c đ x lí c a vi đi u khi n đ c c i thi n đáng k .ả ộ ớ ư ậ ố ộ ử ủ ề ể ượ ả ệ ể
M t đi m c n chú ý n a là t p l nh trong ki n trúc Havard có th đ c t i uộ ể ầ ữ ậ ệ ế ể ượ ố ư
tùy theo yêu c u ki n trúc c a vi đi u khi n mà không ph thu c vào c u trúc dầ ế ủ ề ể ụ ộ ấ ữ
li u. Ví d , đ i v i vi đi u khi n dòng 16F, đ dài l nh luôn là 14 bit (trong khi dệ ụ ố ớ ề ể ộ ệ ữ
li u đ c t ch c thành t ng byte), còn đ i v i ki n trúc Von-Neuman, đ dàiệ ượ ổ ứ ừ ố ớ ế ộ
l nh luôn là b i s c a 1 byte (do d li u đ c t ch c thành t ng byte). Đ cệ ộ ố ủ ữ ệ ượ ổ ứ ừ ặ
đi m này đ c minh h a c th trong hình 1.1. ể ượ ọ ụ ể
1.2.3 RISC VÀ CISC
Nh đã trình bày trên, ki n trúc Havard là khái ni m m i h n so v i ki n trúcư ở ế ệ ớ ơ ớ ế
Von-Neuman. Khái ni m này đ c hình thành nh m c i ti n t c đ th c thi c aệ ượ ằ ả ế ố ộ ự ủ
m t vi đi u khi n. ộ ề ể
Qua vi c tách r i b nh ch ng trình và b nh d li u, bus ch ng trình vàệ ờ ộ ớ ươ ộ ớ ữ ệ ươ
bus d li u, CPU có th cùng m t lúc truy xu t c b nh ch ng trình và b nhữ ệ ể ộ ấ ả ộ ớ ươ ộ ớ
d li u, giúp tăng t c đ x lí c a vi đi u khi n lên g p đôi. Đ ng th i c u trúcữ ệ ố ộ ử ủ ề ể ấ ồ ờ ấ
l nh không còn ph thu c vào c u trúc d li u n a mà có th linh đ ng đi u ch nhệ ụ ộ ấ ữ ệ ữ ể ộ ề ỉ
tùy theo kh năng và t c đ c a t ng vi đi u khi n. Và đ ti p t c c i ti n t c đả ố ộ ủ ừ ề ể ể ế ụ ả ế ố ộ
th c thi l nh, t p l nh c a h vi đi u khi n PIC đ c thi t k sao cho chi u dàiự ệ ậ ệ ủ ọ ề ể ượ ế ế ề
mã l nh luôn c đ nh (ví d đ i v i h 16Fxxxx chi u dài mã l nh luôn là 14 bit)ệ ố ị ụ ố ớ ọ ề ệ
và cho phép th c thi l nh trong m t chu kì c a xung clock ( ngo i tr m t sự ệ ộ ủ ạ ừ ộ ố
tr ng h p đ c bi t nh l nh nh y, l nh g i ch ng trình con … c n hai chu kìườ ợ ặ ệ ư ệ ả ệ ọ ươ ầ
xung đ ng h ). Đi u này có nghĩa t p l nh c a vi đi u khi n thu c c u trúcồ ồ ề ậ ệ ủ ề ể ộ ấ
Havard s ít l nh h n, ng n h n, đ n gi n h n đ đáp ng yêu c u mã hóa l nhẽ ệ ơ ắ ơ ơ ả ơ ể ứ ầ ệ
b ng m t s l ng bit nh t đ nh.ằ ộ ố ượ ấ ị
Vi đi u khi n đ c t ch c theo ki n trúc Havard còn đ c g i là vi đi uề ể ượ ổ ứ ế ượ ọ ề
khi n RISC (Reduced Instruction Set Computer) hay vi đi u khi n có t p l nh rútể ề ể ậ ệ
g n. Vi đi u khi n đ c thi t k theo ki n trúc Von-Neuman còn đ c g i là viọ ề ể ượ ế ế ế ượ ọ
đi u khi n CISC (Complex Instruction Set Computer) hay vi đi u khi n có t pề ể ề ể ậ
l nh ph c t p vì mã l nh c a nó không ph i là m t s c đ nh mà luôn là b i sệ ứ ạ ệ ủ ả ộ ố ố ị ộ ố
c a 8 bit (1 byte).ủ
1.2.4 PIPELINING
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
11
LU N VĂN T T NGHI PẬ Ố Ệ
Đây chính là c ch x lí l nh c a các vi đi u khi n PIC. M t chu kì l nh c aơ ế ử ệ ủ ề ể ộ ệ ủ
vi đi u khi n s bao g m 4 xung clock. Ví d ta s d ng oscillator có t n s 4ề ể ẽ ồ ụ ử ụ ầ ố
MHZ, thì xung l nh s có t n s 1 MHz (chu kì l nh s là 1 us). Gi s ta có m tệ ẽ ầ ố ệ ẽ ả ử ộ
đo n ch ng trình nh sau:ạ ươ ư
1. MOVLW 55h
2. MOVWF PORTB
3. CALL SUB_1
4. BSF PORTA,BIT3
5. instruction @ address SUB_1
đây ta ch bàn đ n qui trình vi đi u khi n x lí đo n ch ng trình trên thôngỞ ỉ ế ề ể ử ạ ươ
qua
t ng chu kì l nh. Quá trình trên s đ c th c thi nh sau:ừ ệ ẽ ượ ự ư
Hình 1.2: C ch pipeliningơ ế
- TCY0: đ c l nh 1ọ ệ
- TCY1: th c thi l nh 1, đ c l nh 2ự ệ ọ ệ
- TCY2: th c thi l nh 2, đ c l nh 3ự ệ ọ ệ
- TCY3: th c thi l nh 3, đ c l nh 4. ự ệ ọ ệ
- TCY4: vì l nh 4 không ph i là l nh s đ c th c thi theo qui trình th c thiệ ả ệ ẽ ượ ự ự
c a ch ng trình (l nh ti p theo đ c th c thi ph i là l nh đ u tiên t iủ ươ ệ ế ượ ự ả ệ ầ ạ
label SUB_1) nên chu kì th c thi l nh này ch đ c dùng đ đ c l nh đ uự ệ ỉ ượ ể ọ ệ ầ
tiên t i label SUB_1. Nh v y có th xem lênh 3 c n 2 chu kì xung clock đạ ư ậ ể ầ ể
th c thi.ự
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
12
LU N VĂN T T NGHI PẬ Ố Ệ
- TCY5: th c thi l nh đ u tiên c a SUB_1 và đ c l nh ti p theo c a SUB_1.ự ệ ầ ủ ọ ệ ế ủ
Quá trình này đ c th c hi n t ng t cho các l nh ti p theo c a ch ng trình.ượ ự ệ ươ ự ệ ế ủ ươ
Thông th ng, đ th c thi m t l nh, ta c n m t chu kì l nh đ g i l nh đó, vàườ ể ự ộ ệ ầ ộ ệ ể ọ ệ
m t chu kì xung clock n a đ gi i mã và th c thi l nh. V i c ch pipeliningộ ữ ể ả ự ệ ớ ơ ế
đ c trình bày trên, m i l nh xem nh ch đ c th c thi trong m t chu kì l nh.ượ ở ỗ ệ ư ỉ ượ ự ộ ệ
Đ i v i các l nh mà quá trình th c thi nó làm thay đ i giá tr thanh ghi PCố ớ ệ ự ổ ị
(Program Counter) c n hai chu kì l nh đ th c thi vì ph i th c hi n vi c g i l nhầ ệ ể ự ả ự ệ ệ ọ ệ
đ a ch thanh ghi PC ch t i. Sau khi đã xác đ nh đúng v trí l nh trong thanh ghiở ị ỉ ỉ ớ ị ị ệ
PC, m i l nh ch c n m t chu kì l nh đ th c thi xong.ỗ ệ ỉ ầ ộ ệ ể ự
1.2.5 CÁC DÒNG PIC VÀ CÁCH L A CH N VI ĐI U KHI N PICỰ Ọ Ề Ể
Các kí hi u c a vi đi u khi n PIC:ệ ủ ề ể
- PIC12xxxx: đ dài l nh 12 bitộ ệ
- PIC16xxxx: đ dài l nh 14 bitộ ệ
- PIC18xxxx: đ dài l nh 16 bitộ ệ
C: PIC có b nh EPROM (ch có 16C84 là EEPROM)ộ ớ ỉ
F: PIC có b nh flashộ ớ
LF: PIC có b nh flash ho t đ ng đi n áp th p ộ ớ ạ ộ ở ệ ấ
LV: t ng t nh LF, đây là kí hi u cũươ ự ư ệ
Bên c nh đó m t s vi đi u khi n có kí hi u xxFxxx là EEPROM, n u có thêmạ ộ ố ệ ể ệ ế
ch A cu i là flash (ví d PIC16F877 là EEPROM, còn PIC16F877A là flash).ữ ở ố ụ
Ngoài ra còn có thêm m t dòng vi đi u khi n PIC m i là dsPIC.ộ ề ể ớ
Vi t Nam ph bi n nh t là các h vi đi u khi n PIC do hãng Microchip s nỞ ệ ổ ế ấ ọ ề ể ả
xu t.ấ
Cách l a ch n m t vi đi u khi n PIC phù h p:ự ọ ộ ề ể ợ
- Tr c h t c n chú ý đ n s chân c a vi đi u khi n c n thi t cho ngướ ế ầ ế ố ủ ề ể ầ ế ứ
d ng. Có nhi u vi đi u khi n PIC v i s l ng chân khác nhau, th m chíụ ề ề ể ớ ố ượ ậ
có vi đi u khi n ch có 8 chân, ngoài ra còn có các vi đi u khi n 28, 40, 44,ề ể ỉ ề ể
… chân.
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
13
LU N VĂN T T NGHI PẬ Ố Ệ
- C n ch n vi đi u khi n PIC có b nh flash đ có th n p xóa ch ngầ ọ ề ể ộ ớ ể ể ạ ươ
trình đ c nhi u l n h n. Ti p theo c n chú ý đ n các kh i ch c năngượ ề ầ ơ ế ầ ế ố ứ
đ c tích h p s n trong vi đi u khi n, các chu n giao ti p bên trong.ượ ợ ẵ ề ể ẩ ế
- Sau cùng c n chú ý đ n b nh ch ng trình mà vi đi u khi n cho phép.ầ ế ộ ớ ươ ề ể
- Ngoài ra m i thông tin v cách l a ch n vi đi u khi n PIC có th đ c tìmọ ề ự ọ ề ể ể ượ
th y trong cu n sách “Select PIC guide” do nhà s n xu t Microchip cungấ ố ả ấ
c p.ấ
1.2.6 NGÔN NG L P TRÌNH CHO PICỮ Ậ
Ngôn ng l p trình cho PIC r t đa d ng. Ngôn ng l p trình c p th p cóữ ậ ấ ạ ữ ậ ấ ấ
MPLAB (đ c cung c p mi n phí b i nhà s n xu t Microchip), các ngôn ng l pượ ấ ễ ở ả ấ ữ ậ
trình c p cao h n bao g m C, Basic, Pascal, … Ngoài ra còn có m t s ngôn ngấ ơ ồ ộ ố ữ
l p trình đ c phát tri n dành riêng cho PIC nh PICBasic, MikroBasic,…ậ ượ ể ư
1.2.7 M CH N P PICẠ Ạ
Đây cũng là m t dòng s n ph m r t đa d ng dành cho vi đi u khi n PIC. Cóộ ả ẩ ấ ạ ề ể
th s d ng các m ch n p đ c cung c p b i nhà s n xu t là hãng Microchipể ử ụ ạ ạ ượ ấ ở ả ấ
nh : PICSTART plus, MPLAB ICD 2, MPLAB PM 3, PRO MATE II. Có th dùngư ể
các s n ph m này đ n p cho vi đi u khi n khác thông qua ch ng trình MPLAB.ả ẩ ể ạ ề ể ươ
Dòng s n ph m chính th ng này có u th là n p đ c cho t t c các vi đi uả ẩ ố ư ế ạ ượ ấ ả ề
khi n PIC, tuy nhiên giá thành r t cao và th ng g p r t nhi u khó khăn trong quáể ấ ườ ặ ấ ề
trình mua s n ph m.ả ẩ
Ngoài ra do tính năng cho phép nhi u ch đ n p khác nhau, còn có r t nhi uề ế ộ ạ ấ ề
m ch n p đ c thi t k dành cho vi đi u khi n PIC. Có th s l c m t s m chạ ạ ượ ế ế ề ể ể ơ ượ ộ ố ạ
n p cho PIC nh sau:ạ ư
- JDM programmer: m ch n p này dùng ch ng trình n p Icprog cho phép n pạ ạ ươ ạ ạ
các vi đi u khi n PIC có h tr tính năng n p ch ng trình đi n áp th p ICSPề ể ỗ ợ ạ ươ ệ ấ
(In Circuit Serial Programming). H u h t các m ch n p đ u h tr tính năngầ ế ạ ạ ề ỗ ợ
n p ch ng trình này.ạ ươ
- WARP-13A và MCP-USB: hai m ch n p này gi ng v i m ch n p PICSTARTạ ạ ố ớ ạ ạ
PLUS do nhà s n xu t Microchip cung c p, t ng thích v i trình biên d chả ấ ấ ươ ớ ị
MPLAB, nghĩa là ta có th tr c ti p dùng ch ng trình MPLAB đ n p cho viể ự ế ươ ể ạ
đi u khi n PIC mà không c n s d ng m t ch ng trình n p khác, ch ng h nề ể ầ ử ụ ộ ươ ạ ẳ ạ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
14
LU N VĂN T T NGHI PẬ Ố Ệ
nh ICprog.ư
- P16PRO40: m ch n p này do Nigel thi t k và cũng khá n i ti ng. Ông cònạ ạ ế ế ổ ế
thi t k c ch ng trình n p, tuy nhiên ta cũng có th s d ng ch ng trìnhế ế ả ươ ạ ể ử ụ ươ
n p Icprog.ạ
- M ch n p Universal c a Williem: đây không ph i là m ch n p chuyên d ngạ ạ ủ ả ạ ạ ụ
dành cho PIC nh P16PRO40.ư
Các m ch n p k trên có u đi m r t l n là đ n gi n, r ti n, hoàn toàn cóạ ạ ể ư ể ấ ớ ơ ả ẻ ề
th t l p ráp m t cách d dàng, và m i thông tin v s đ m ch n p, cách thi tể ự ắ ộ ễ ọ ề ơ ồ ạ ạ ế
k , thi công, ki m tra và ch ng trình n p đ u d dàng tìm đ c và downloadế ể ươ ạ ề ễ ượ
mi n phí thông qua m ng Internet. Tuy nhiên các m ch n p trên có nh c đi m làễ ạ ạ ạ ượ ể
h n ch v s vi đi u khi n đ c h tr , bên c nh đó m i m ch n p c n đ cạ ế ề ố ề ể ượ ỗ ợ ạ ỗ ạ ạ ầ ượ
s d ng v i m t ch ng trình n p thích h p.ử ụ ớ ộ ươ ạ ợ
CH NG 2: VI ĐI U KHI N PIC16F877AƯƠ Ề Ể
2.1 GI I THI U CHUNGỚ Ệ
2.1.1 CÁC D NG S Đ CHÂNẠ Ơ Ồ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
15
LU N VĂN T T NGHI PẬ Ố Ệ
Hình 2.1 Vi đi u khi n PIC16F877A/PIC16F874A và các d ng s đ chânề ể ạ ơ ồ
2.1.2 S Đ KH I VI ĐI U KHI N PIC16F877AƠ Ồ Ố Ề Ể
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
16
LU N VĂN T T NGHI PẬ Ố Ệ
Hình 2.2 Sô ñoà khoái vi ñieàu khieån PIC16F877A.
Hình 2.2 là s đ kh i c a PIC 16F877A, g m các kh i:ơ ồ ố ủ ồ ố
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
17
LU N VĂN T T NGHI PẬ Ố Ệ
- Kh i ALU – Arithmetic Logic Unit.ố
- Kh i b nh ch a ch ng trình – Flash Program Memory.ố ộ ớ ứ ươ
- Kh i b nh ch a d li u EPROM – Data EPROM.ố ộ ớ ứ ữ ệ
- Kh i b nh file thanh ghi RAM – RAM file Register.ố ộ ớ
- Kh i gi i mã l nh và đi u khi n – Instruction Decode Control.ố ả ệ ề ể
- Kh i thanh ghi đ c bi t.ố ặ ệ
- Kh i ngo i vi timer.ố ạ
- Kh i giao ti p n i ti p.ố ế ố ế
- Kh i chuy n đ i tín hi u t ng t sang s - ADC.ố ể ổ ệ ươ ự ố
- Kh i các port xu t nh p.ố ấ ậ
2.1.3 CH C NĂNG CÁC CHÂN C A PIC16F877AỨ Ủ
• Chân OSC1/CLK1(13): ngõ vào k t n i v i dao đ ng th ch anh ho c ngõế ố ớ ộ ạ ặ
vào nh n xung clock t bên ngoài.ậ ừ
• Chân OSC2/CLK2(14): ngõ ra dao đ ng th ch anh ho c ngõ ra c p xungộ ạ ặ ấ
clock.
• Chân (1) có 2 ch c năngứ
- : ngõ vào reset tích c c m c th p.ự ở ứ ấ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
18
LU N VĂN T T NGHI PẬ Ố Ệ
- Vpp: ngõ vào nh n đi n áp l p trình khi l p trình cho PIC.ậ ệ ậ ậ
• Chân RA0/AN0(2), RA1/AN1(3), RA2/AN2(3): có 2 ch c năng ứ
- RA0,1,2: xu t/ nh p s .ấ ậ ố
- AN 0,1,2: ngõ vào t ng t c a kênh th 0,1,2.ươ ự ủ ứ
• Chân RA2/AN2/VREF-/CVREF+(4): xu t nh p s / ngõ vào t ng t c aấ ậ ố ươ ự ủ
kênh th 2/ nhõ vào đi n áp chu n th p c a b AD/ ngõ vào đi n áp ch nứ ệ ẩ ấ ủ ộ ệ ẩ
cao c a b AD. ủ ộ
• Chân RA3/AN3/VREF+(5): xu t nh p s / ngõ vào t ng t kênh 3/ ngõ vàoấ ậ ố ươ ự
đi n áp chu n (cao) c a b AD.ệ ẩ ủ ộ
• Chân RA4/TOCK1/C1OUT(6): xu t nh p s / ngõ vào xung clock bên ngoàiấ ậ ố
cho Timer 0/ ngõ ra b so sánh 1.ộ
• Chân RA5/AN4/ / C2OUT(7): xu t nh p s / ngõ vào t ng t kênh 4/ấ ậ ố ươ ự
ngõ vào ch n l a SPI ph / ngõ ra b so sánh 2.ọ ự ụ ộ
• Chân RB0/INT (33): xu t nh p s / ngõ vào tín hi u ng t ngoài.ấ ậ ố ệ ắ
• Chân RB1(34), RB2(35): xu t nh p s .ấ ậ ố
• Chân RB3/PGM(36): xu t nh p s / cho phép l p trình đi n áp th p ICSP.ấ ậ ố ậ ệ ấ
• Chân RB4(37), RB5(38): xu t nh p s .ấ ậ ố
• Chân RB6/PGC(39): xu t nh p s / m ch g r i và xung clock l p trìnhấ ấ ố ạ ỡ ố ậ
ICSP.
• Chân RB7/PGD(40): xu t nh p s / m ch g r i và d li u l p trình ICSP.ấ ậ ố ạ ỡ ố ữ ệ ậ
• Chân RC0/T1OCO/T1CKI(15): xu t nh p s / ngõ vào b giao đ ng Timer1/ấ ậ ố ộ ộ
ngõ vào xung clock bên ngoài Timer 1.
• Chân RC1/T1OSI/CCP2(16) : xu t nh p s / ngõ vào b dao đ ng Timer 1/ấ ậ ố ộ ộ
ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2.
• Chân RC2/CCP1(17): xu t nh p s / ngõ vào Capture1 ,ngõ ra compare1, ngõấ ậ ố
ra PWM1.
• Chân RC3/SCK/SCL(18): xu t nh p s / ngõ vào xung clock n i ti p đ ngấ ậ ố ố ế ồ
b , ngõ ra ch đ SPI./ ngõ vào xung clock n i ti p đ ng b , ngõ ra c aộ ế ộ ố ế ồ ộ ủ
ch đ I2C. ế ộ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
19
LU N VĂN T T NGHI PẬ Ố Ệ
• Chân RC4/SDI/SDA(23): xu t nh p s / d li u vào SPI/ xu t nh p d li uấ ậ ố ữ ệ ấ ậ ữ ệ
I2C.
• Chân RC5/SDO(24): xu t nh p s / d li u ra SPI.ấ ậ ố ữ ệ
• Chân RC6/TX/CK(25): xu t nh p s / truy n b t đ ng b USART/ xungấ ậ ố ề ấ ồ ộ
đ ng b USART.ồ ộ
• Chân RC7/RX/DT(26): xu t nh p s / nh n b t đ ng b USART.ấ ậ ố ậ ấ ồ ộ
• Chân RD0-7/PSP0-7(19-30): xu t nh p s / d li u port song song.ấ ậ ố ữ ệ
• Chân RE0/ /AN5(8): xu t nh p s / đi u khi n port song song/ ngõ vàoấ ậ ố ề ể
t ng t 5.ươ ự
• Chân RE1/ /AN6(9): xu t nh p s / đi u khi n ghi port song song/ ngõấ ậ ố ề ể
vào t ng t kênh th 6.ươ ự ứ
• Chân RE2/ /AN7(10): xu t nh p s / Chân ch n l a đi u khi n port songấ ấ ố ọ ụ ề ể
song/ ngõ vào t ng t kênh th 7.ươ ự ứ
• Chân VDD(11, 32) và VSS(12, 31): là các chân ngu n c a PIC.ồ ủ
2.1.4 Đ C ĐI MẶ Ể VI ĐI U KHI N PIC16F877AỀ Ể
Đây là vi đi u khi n thu c h PIC16Fxxx v i t p l nh g m 35 l nh có đ dàiề ể ộ ọ ớ ậ ệ ồ ệ ộ
14 bit. M i l nh đ u đ c th c thi trong m t chu kì xung clock. T c đ ho t đ ngỗ ệ ề ượ ự ộ ố ộ ạ ộ
t i đa cho phép là 20 MHz v i m t chu kì l nh là 200ns. B nh ch ng trìnhố ớ ộ ệ ộ ớ ươ
8Kx14 bit, b nh d li u 368x8 byte RAM và b nh d li u EEPROM v i dungộ ớ ữ ệ ộ ớ ữ ệ ớ
l ng 256x8 byte. S PORT I/O là 5 v i 33 pin I/O. Có 8 kênh chuy n đ i A/Dượ ố ớ ể ổ
Các đ c tính ngo i vi bao g mcác kh i ch c năng sau:ặ ạ ồ ố ứ
- Timer0: b đ m 8 bit v i b chia t n s 8 bit.ộ ế ớ ộ ầ ố
- Timer1: b đ m 16 bit v i b chia t n s , có th th c hi n ch c năngộ ế ớ ộ ầ ố ể ự ệ ứ
đ m d a vào xung clock ngo i vi ngay khi vi đi u khi n ho t đ ng ế ự ạ ề ể ạ ộ ở
ch đ sleep.ế ộ
- Timer2: b đ m 8 bit v i b chia t n s , b postcaler.ộ ế ớ ộ ầ ố ộ
- Hai b Capture/so sánh/đi u ch đ rông xung.ộ ề ế ộ
- Các chu n giao ti p n i ti p SSP (Synchronous Serial Port), SPI và I2C.ẩ ế ố ế
- Chu n giao ti p n i ti p USART v i 9 bit đ a ch .ẩ ế ố ế ớ ị ỉ
- C ng giao ti p song song PSP (Parallel Slave Port) v i các chân đi uổ ế ớ ề
khi n RD, WR,ể
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
20
LU N VĂN T T NGHI PẬ Ố Ệ
Bên c nh đó là m t vài đ c tính khác c a vi đi u khi n nh :ạ ộ ặ ủ ề ể ư
- B nh flash v i kh năng ghi xóa đ c 100.000 l n.ộ ớ ớ ả ượ ầ
- B nh EEPROM v i kh năng ghi xóa đ c 1.000.000 l n.ộ ớ ớ ả ượ ầ
- D li u b nh EEPROM có th l u tr trên 40 năm.ữ ệ ộ ớ ể ư ữ
- Kh năng t n p ch ng trình v i s đi u khi n c a ph n m m.ả ự ạ ươ ớ ự ề ể ủ ầ ề
- N p đ c ch ng trình ngay trên m ch đi n ICSP (In Circuit Serialạ ượ ươ ạ ệ
Programming) thông qua 2 chân.
- Watchdog Timer v i b dao đ ng trong.ớ ộ ộ
- Ch c năng b o m t mã ch ng trình.ứ ả ậ ươ
- Ch đ Sleep.ế ộ
- Có th ho t đ ng v i nhi u d ng Oscillator khác nhau.ể ạ ộ ớ ề ạ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
21
LU N VĂN T T NGHI PẬ Ố Ệ
B ng 2.3: Tóm t t đ c đi m c a VDK PIC 16F877Aả ắ ặ ể ủ
2.2 T CH C B NHỔ Ứ Ộ Ớ
C u trúc b nh c a vi đi u khi n PIC16F877A bao g m b nh ch ng trìnấ ộ ớ ủ ề ể ồ ộ ớ ươ
(Program memory) và b nh d li u (Data Memory). ộ ớ ữ ệ
2.2.1 B NH CH NG TRÌNHỘ Ớ ƯƠ
B nh ch ng trình c a vi đi u khi nộ ớ ươ ủ ề ể
PIC16F877A là b nh flash, dung l ng bộ ớ ượ ộ
nh 8K word (1 word = 14 bit) và đ c phânớ ượ
thành nhi u trang (t page0 đ n page 3) .ề ừ ế
Nh v y b nh ch ng trình có kh năngư ậ ộ ớ ươ ả
ch a đ c 8*1024 = 8192 l nh (vì m t l nhứ ượ ệ ộ ệ
sau khi mã hóa s có dung l ng 1 word (14ẽ ượ
bit).
Đ mã hóa đ c đ a ch c a 8K wordể ượ ị ỉ ủ
b nh ch ng trình, b đ m ch ng trình cóộ ớ ươ ộ ế ươ
dung l ng 13 bit (PC<12:0>).ượ
Khi vi đi u khi n đ c reset, b đ mề ể ượ ộ ế
ch ng trình s ch đ n đ a ch 0000h (Resetươ ẽ ỉ ế ị ỉ
vector). Khi có ng t x y ra, b đ m ch ngắ ả ộ ế ươ
trình s ch đ n đ a ch 0004h (Interruptẽ ỉ ế ị ỉ
vector).
B nh ch ng trình không bao Hình 2.4 B nh ch ng trìnhộ ớ ươ ộ ớ ươ
PIC16F877A
g mồ b nh stack và không đ c đ a ch hóa b i ộ ớ ượ ị ỉ ở
b đ m ch ng trình. B nh stack s đ c đ c p c th trong ph n sau.ộ ế ươ ộ ớ ẽ ượ ề ậ ụ ể ầ
2.2.2 B NH D LI U Ộ Ớ Ữ Ệ
B nh d li u c a PIC là b nh EEPROM đ c chia ra làm nhi u bank. Đ iộ ớ ữ ệ ủ ộ ớ ượ ề ố
v i PIC16F877A b nh d li u đ c chia ra làm 4 bank. M i bank có dung l ngớ ộ ớ ữ ệ ượ ỗ ượ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
22
LU N VĂN T T NGHI PẬ Ố Ệ
128 byte, bao g m các thanh ghi có ch c năng đ c bi t SFG (Special Functionồ ứ ặ ệ
Register) n m các vùng đ a ch th p và các thanh ghi m c đích chung GPRằ ở ị ỉ ấ ụ
(General Purpose Register) n m vùng đ a ch còn l i trong bank. Các thanh ghiằ ở ị ỉ ạ
SFR th ng xuyên đ c s d ng (ví d nh thanh ghi STATUS) s đ c đ t ườ ượ ử ụ ụ ư ẽ ượ ặ ở
t t cà các bank c a b nh d li u giúp thu n ti n trong quá trình truy xu t và làmấ ủ ộ ớ ữ ệ ậ ệ ấ
gi m b t l nh c a ch ng trình. ả ớ ệ ủ ươ
S đ c th c a b nh d li u PIC16F877A nh sau:ơ ồ ụ ể ủ ộ ớ ữ ệ ư
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
23
LU N VĂN T T NGHI PẬ Ố Ệ
Hình 2.5 S đ b nh d li u PIC16F877Aơ ồ ộ ớ ữ ệ
1. THANH GHI CH C NĂNG Đ C BI T SFRỨ Ặ Ệ
Đây là các thanh ghi đ c s d ng b i CPU ho c đ c dùng đ thi t l p vàượ ử ụ ở ặ ượ ể ế ậ
đi u khi n các kh i ch c năng đ c tích h p bên trong vi đi u khi n. Có th phânề ể ố ứ ượ ợ ề ể ể
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
24
LU N VĂN T T NGHI PẬ Ố Ệ
thanh ghi SFR làm hai l ai: thanh ghi SFR liên quan đ n các ch c năng bên trongọ ế ứ
(CPU) và thanh ghi SRF dùng đ thi t l p và đi u khi n các kh i ch c năng bênể ế ậ ề ể ố ứ
ngoài (ví d nh ADC, PWM, …). Ph n này s đ c p đ n các thanh ghi liên quanụ ư ầ ẽ ề ậ ế
đ n các ch c năng bên trong. Các thanh ghi dùng đ thi t l p và đi u khi n cácế ứ ể ế ậ ề ể
kh i ch c năng s đ c nh c đ n khi ta đ c p đ n các kh i ch c năng đó.ố ứ ẽ ượ ắ ế ề ậ ế ố ứ
Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi ch a k t qu th c hi nứ ế ả ự ệ
phép toán c a kh i ALU, tr ng thái reset và các bit ch n bank c n truy xu t trongủ ố ạ ọ ầ ấ
b nh d li u.ộ ớ ữ ệ
Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đ c và ghi, choọ
phép đi u khi n ch c năng pull-up c a các chân trong PORTB, xác l p các tham sề ể ứ ủ ậ ố
v xung tác đ ng, c nh tác đ ng c a ng t ngo i vi và b đ m Timer0.ề ộ ạ ộ ủ ắ ạ ộ ế
Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho phép đ c và ghi,ọ
ch a các bit đi u khi n và các bit c hi u khi timer0 b tràn, ng t ngo i viứ ề ể ờ ệ ị ắ ạ
RB0/INT và ng t interrput- on-change t i các chân c a PORTB. ắ ạ ủ
Thanh ghi PIE1 (8Ch): ch a các bit đi u khi n chi ti t các ng t c a các kh iứ ề ể ế ắ ủ ố
ch cứ
năng ngo i vi.ạ
Thanh ghi PIR1 (0Ch) ch a c ng t c a các kh i ch c năng ngo i vi, các ng tứ ờ ắ ủ ố ứ ạ ắ
này đ c cho phép b i các bit đi u khi n ch a trong thanh ghi PIE1.ượ ở ề ể ứ
SV: TR N XUÂN CHI N L P: ĐI N T 1Ầ Ế Ớ Ệ Ử
K2
25