Tải bản đầy đủ (.pdf) (71 trang)

Luận văn Nghiên cứu về vi điều khiển PIC 16F877A và một số ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.58 MB, 71 trang )

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

×