Tr−êng ®¹i häc b¸ch khoa hμ néi
Khoa ®iÖn
Bé m«n ®iÒu khiÓn tù ®éng
X\[]^W
ĐỒ ÁN TỐT NGHIỆP
Đề tài:Thiết kế bộ điều khiển PID số trên nền
vi điều khiển PIC
Giáo viên hng dn : PGS.TS Phan Xuân Minh
Sinh viên thc hin : Phm Vn Cng
Hoàng Vn Quân
Lp : KT1
Khoá : 49
Hà Ni 5 - 2009
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
1
Mục lục
Li m u 5
Li cm n 6
Chng 1 : H vi iu khin PIC và vi iu khin PIC18F4520 7
1.1 Gii thiu chung 7
1.2 . Vi iu khin Pic18F4520 8
1.2.1. T chc b nh (Memory Organization) 13
1.2.2. 8 x 8 HARDWARE MULTIPLIER 22
1.2.3. Ngt (Interrupts) 23
1.2.4. Cng vào ra (I/O Port) 32
1.2.5. B nh thi (Timer) 33
1.2.6. B truyn nhn d liu ng b (EUSART-Enhanced Universal
Synchronous Asynchronous Receiver Transmitter)
37
1.2.7. Module chuyn i tong t sang s 10 bit (A/D) 50
Chng 2 : Thit k b iu khin PID s 57
2.1 Thit k mô hình phn cng mch iu khin 57
2.1.1. Yêu cu thit k 57
2.1.2. Các khi chc nng trên kit iu khin 58
a) Khi vi iu khin trung tâm 58
b) Khi giao tip máy tính qua cng ni tip 59
c) Khi bàn phím 60
d) Khi hin th LCD 2x16(2 dòng, 16ct) 61
e) Khi mch ng lc iu khin 62
f) Khi ngun 12V/5V 62
g) Các khi khác 63
2.2 Thit k phn mm trên nn vi iu khin PIC 64
2.2.1. Yêu cu phn mm 64
2.2.2. Gii thut chng trình 65
a) Loop iu khin 65
b) Thut toán PID s 66
2.2.3. Thit k phn mm iu khin và giám sát trên máy tính 69
2.3 Kit iu khin 71
Chng 3 : ng dng b iu khin PID s iu khin ng c mt chiu 72
3.1 i tng iu khin 72
3.1.1. Thông s k thut 72
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
2
3.1.2. Nhn dng mô hình ng hc ca ng c in mt chiu 72
3.1.3. Thu thp d liu vào/ra ca ng c in mt chiu t thcnghim. 72
3.1.4. Nhn dng ng c iên mt chiu bng Toolbox Identification cu
Matlab
74
3.1.5. ánh giá cht lng mô hình 76
3.2 Thit k lut iu khin PID 77
3.2.1. Phng pháp Ziegler-Nichols1 77
3.2.2. Phng pháp IMC 77
3.2.3. Mô phng và ánh giá cht lng b iu khin 78
3.3 Thit b chp hành(IC L298) 78
3.4 Cm bin (Encoder) 81
3.5 H thng iu khin 84
3.6 Mt s hình nh v Kit iu khin ng c s dng vi iu khin PIC 86
3.7 :Kt qu thc nghim 87
3.8 So sánh kt qu mô phng và thc t 88
Kt lun 89
Tài liu tham kho 91
Ph lc Code phn mm 92
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
3
MỤC LỤC HÌNH VẼ
Hình 1.1 S khi kin trúc vi iu khin PIC18F4520 9
Hình 1.2 S chân vi iu khin Pic18F4520 10
Hình 1.3: T chc b nh chng trình 13
Hình 1.5: Clock/Instruction Cycle 15
Hình 1.6 Instruction Pipeline Flow 15
Hình 1.7 Instruction In Program Memory 16
Hình 1.8 S cu trúc b nh d liu Pic18F4520 16
Hình 1.9 S cu trúc thanh ghi ca Pic18F4520 17
Hình 1.10 Pic 18 Interrup logic 23
Hình 2.1 Mô hình khi mch iu khin 57
Hinh 2.2.S khi vi iu khin trung tâm 58
Hinh 2.3 Mch np cho vi iu khin trung tâm 58
Hinh 2.4 Khi giao tip máy tính Max232 59
Hình 2.5 : Cu to cng COM 59
Hinh 2.6 Modul bàn phím 60
Bng s lc chc nng LCD 2x16 61
Hình 2.7 Khi hin th LCD 62
Hinh 2.8 Khi thit b chp hành 62
Hình 2.9 S khi ngun 62
S nguyên lý kit iu khin 63
S mch in hai lp 64
Hình 2.10 Lu loop iu khin 65
Hình 2.11 Lu hàm ngt dùng to chu lì trích mu 66
Hình 2.12 S b iu khin PID s 67
Hình 2.13 Chng bão hào tích phân 68
Hình 2.14. Giao din giao tip PC 69
Hình 3.1 ng c s dng trong án 72
Hinh 3.2 S thu thp d liu nhn dng 72
Hình 3.2 c tính thu thp d liu nhn dng 73
Hình 3.3Chn u vào và mô hình nhn dng ca i tng 75
Hình 3.4Phng thc nhn dng và ánh giá mô hình thu c 75
Hình 3.5 c tính quá i tng sau khi nhn dang 76
Hình 3.6 Sai lch mô hình nhn dng 76
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
4
Hình 3.7 Mô phng trên Simulink các phng pháp iu khin 78
Hình 3.9 c tính mô phng 78
Hình 3.10 S chân L298 79
Hình 3.11: Các ch ca L298 80
Hình 3.12 : S gii pháp 81
Hình 3.13 : Mô hình1 - En coder quang tng i 81
Hình 3.14 : Phng thc hot ng Encoder quang tng i 82
Hình 3.15 : Mô hình 2 -En coder quang tng i 82
Hình 3.16 : S xung ca En coder quang tng i(mô hình 2) 83
Hình 3.17 S h thngiu khin ng c 84
Hình 3.18 Cu trúc h thng iu khin 84
Hình 3.19 Cu trúc khi iu khin ng c 85
Mt s hình nh mch iu khin ng c mt chiu 86
Hình 3.20 c tính vi b iu khin PI 87
Hình 3.21 c tính vi b ièu khin PID 87
Hình 3.22 H thng khi có nhiu 88
Hình 3.23 c tính khi h thng có thay i giá tr t 88
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
5
Lời mở đầu
Khoa hc công ngh hin i ã có nhng bc tin nhanh và xa i theo ó là
nhng thành tu ng dng trong mi lnh vc di sng, công nghip. K thut iu
khin trong tin trình hoàn thin lý thuyt cng to cho mình nhiu phát trin có ý
ngha. Bây gi khi nhc ti iu khin con ngi dòng nh hình dung n s chính
xác, tc x lý và thut toán thông minh
ng ngha là lng cht xám cao hn.
Có th nói trong lnh vc iu khin và trong công nghip thì b iu khin PID
có ng dng kha rng rãi, mt gi pháp a nng chocác ng dng c Analog cng nh
Digital. Thng kê cho thy có ti hn 90% các b iu khin s dng trong thc t là
PID. Rõ ràng nu có thit k và chn la các thông s hp lý cho b
iu khin PID
thì vic t c các ch tiêu cht lng mong mun là kh thi B iu khin PID
cng giúp ngi s dng d dàng tích hp cng nh chn các lut iu khin nh : t
l(P), tích phân(I), t l tích phân(PI), t l vi phân(PD)… sao cho phù hp i vi các
i tng iu khin. Nhiu quá trình trong công nghip vic s dng b
iu khin
PID là không th thay th nh khng ch nhit , mc, tc …? Ngay c nhng lý
thuyt iu khin hin i cng không cho ta nhng hiu qu cao nh b iu khin
PID mang li.Ngoài ra b iu khin PID còn ng dng nhiu trong iu khin thích
nghi,bn vng vn mang li hiu qu cao trong các c cu ch
nh nh.
Bài toán thit k và iu khin ng c mt chiu là bài toán c bn và quen thuc
trong ngành iu khin t ng. Có th thit k iu khin cho i tng ngc in
mt chiu theo nhiu phng pháp nh :dùng PLC & bin tn, in t công sut, vi
iu khin… Mi phng pháp có u và nhc
im khác nhau nhng u có mc
ích n nh và iu khin c tc ng c. Ngày nay vi iu khin phát trin sâu
rng và ngày càng ng dng nhiu trong cài t thit k b iu khin cho các i
tng công nghip. Trên c s mun tìm hiu v lnh vc vi iu khin chúng em
chn tài: Thiết kế bộ
điều khiển PID số trên nền vi điều khiểnPIC. Vì kh nng
và thi gian có hn nên không th tránh khi nhng thiu sót trong án. Do vy
chúng em rt mong c thy cô và bn bè óng góp xây dng án ca chúng em
c hoàn thin hn.
Hà Ni, ngày tháng nm 2009
Sinh viên
Phm Vn Cng
Hoàng Vn Quân
Lp KT1 - K49
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
6
Lời cảm ơn
u tiên chúng em xin chân thành gi li cm n ti nhà trung, khoa in, b
môn KT, các thy cô ã dy d và dìu dt chúng em trong sut 5 nm hc va qua
có c nhng kin thc chuyên môn c s sau này chúng em có th vào i làm
vic, s dng có ích cho xã hi.
thc hin thành công án là s hng dn, ch bo tn tình ca PGS.TS Phan
Xuân Minh, Ngi ã hng dn t
n tình , giúp chúng em nh hng, góp ý và cung
cp ý tng cng nh ch dn tài liu và các tin trình thc hin án .S hng dn
ca cô là mt yu t quan trng chúng em có th hoàn thành án này .
Cui cùng chúng em xin chân thành gi nhng li cm n sâu sc n cha m và
gia ình, nhng ngi luôn sát cánh cùng chúng em, nuôi dng chm sóc chúng em
to iu kin tt nht cho chúng em hc tp có k
t qu nh ngày hôm nay.
Chúng em xin chân thành cm n
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
7
Chương 1: Họ vi điều khiển PIC và vi điều
khiển PIC18F4520
1.1 Giới thiệu chung
Ngày nay, nhng ng dng ca vi iu khin ã i sâu vào i sng sinh hot và
sn xut ca con ngi. Thc t hin nay là hu ht các thit b in hin nay u có
s góp mt ca vi iu khin và vi x lí. ng dng vi iu khin trong thit k h
thng làm gim chi phí thit k và h giá thành sn ph
m ng thi nâng cao tính n
nh ca thit b và h thng.
Trên th trng hin nay có nhiu h vi iu khin la chn nh: 8051,
Motola68HC, AVR, ARM, Pic…và có l 8051 là dòng mà chúng ta c làm quen
nhiu nht trong môi trng i hc nhng ti sao chúng ta chn dòng vi iu khin
Pic thc hin ng dng và phát trin không ngoài nhng nguyên nhân sau:
- H vi iu khin Pic phát trin và s
dng ph bin nc ta => vic tìm
mua và trao i kinh nghim là ht sc thun li.
- Giá thành các dòng Pic là không quá mc.
- Các dòng Pic có y tính nng hot ng c lp.
- Là s b sung hp lý v kin thc cng nh ng dng cho h vi iu khin
8051
- Có s h tr cao ca nhà sn xut v các công c l
p trình, trình biên dch,
mch np Pic t n gin ti phc tp. Không nhng vy các tính nng a
dng ca các òng Pic không ngng c phát trin.
- Có nhiu b phn ngoi vi ngay trên chip, bao gm: Cng và/ra s, b bin
i ADC, b nh EEFROM, b nh thi, b iu ch rng xung
(PWM)…
- B nh chng trình và b nh d
liu c tích hp ngay trên chip.
ây là h VK c ch to theo kin trúc RISC (Reduced Intruction Set
Computer) có cu trúc khá phc tp. Ngoài các tính nng nh các h VK khác, nó
còn tích hp nhiu tính nng mi rt tin li cho ngi thit k và lp trình.
Pic18F4520 nm trong dòng sn phm PIC18F2420/2520/4420/4520 ca nhà sn
xut Microchip vi c im 28/40/44 -Pin Enhanced Flash Microcontrollers with 10-
Bit A/D and nanoWatt Technology. Dòng sn phm này có nhiu ci tin áng k v
tính n
ng so các dòng Pic trc ó nh :
- B nh chng trình c tng cng (16Kbytes for PIC18F2420/4420
devices and 32Kbytes for PIC18F2520/4520 devices).
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
8
- I/O ports (3 bidirectional ports on 28-pin devices, 5 bidirectional ports on
40/44-pin devices).
- Tng cng modul CCP.
- S dng công ngh nanoWatl
Dòng sn phm này nói chung có nhiu s tng ng v tính nng nhng có th
chia làm hai nhóm Pic18F2420/2520 vi 28 chân và Pic 18F4420/4520 vi 40 hoc 44
chân ghép ni. Phn này ch yu chúng ta tìm hiu Pic18F4520 nhng nhng c
im các Pic khác thuc dòng này s hoàn toàn tng t vi các kí hiu tng ng.
Trong án chúng ta quan tâm ch yu Pic18F4520 loi PDIP s dng trong m
ch
thit k.
1.2 . Vi điều khiển Pic18F4520
Vi iu khin Pic18F4520 có các c im c bn:
- S dng công ngh nanoWatl: Hiu nng cao, tiêu th nng lng ít
- Kin trúc RISC
¾ 75 lnh mnh, hu ht các lnh thc hin trong bn chu kì xung.
¾ Tc thc hin lên ti 10 triu lnh trong 1s vi tn s 40Mhz
¾ Có b nhân cng .
- Các b nh chng trình và d liu c
nh
¾ 32 Kbytes b nh flash có kh nng t lp trình trong h thng có
th thc hin c 100.000 ln ghi/xóa
¾ 256 bytes EEPROM có th thc hin c 1.000.000 ln ghi/xóa-
¾ 256 bytes SRAM
- Nhng ngoi vi tiêu biu
¾ 4 b nh thi/b m 8 bit vi các ch t l t trc và ch
so sánh.
¾ B m thi gian thc v
i b to dao ng riêng bit
¾ 2 kênh PWM
¾ 13 kênh ADC 10 bit
¾ B truyn tin ni tip USART kh trình
¾ Watchdog Timer kh trình vi b to dao ng bên trong riêng bit
¾ B so sánh tng t
- Các c im c bit khác
¾ Power on Reset và dò Brown out kh trình
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
9
¾ B to dao ng RC c nh c bên trong
¾ Các ngun ngt bên trong và bên ngoài
- I/O và các kiu óng gói
¾ 32 ng I/O kh trình
¾ óng gói 40-pin PDIP, 44-lead TQFP, và 44-pad MLF
Hình 1.1 Sơ đồ khối kiến trúc vi điều khiển PIC18F4520
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
10
S chân ca các vi iu khin Pic18F4420/4520
Hình 1.2 Sơ đồ chân vi điều khiển Pic18F4520
Sau ây là gii thiu cu to chân loi 40 chân (40 Pin PDIP):
• Chân 1( MCLR /V
PP
/RE3) :
- MCLR là u vào Master Clear (reset) hot ng mc thp d reset toàn b
thit b.
- V
PP
dùng thay i in áp u vào.
- RE3 u vào s.
Các chân thuc cng vào ra Port A
• Chân 2(RA0/AN0):vi RA0 là cng vào ra s, AN0 là u vào tng t Input0.
• Chân 3(RA1/AN1): RA1 là cng vào ra s, AN1 là u vào tng t Input1.
• Chân 4(RA2/AN2/V
REF+
): RA2 là cng vào ra s, AN2 là u vào tng t
Input2. V
REF+
u vào tng t chuyn i A/D in áp tham chiu(mc thp),
còn CV
REF
là u ra tng t so sánh in áp chun.
• Chân 5(RA3/AN3/V
REF-
/CV
REF
): RA3 là cng vào ra s, AN3 là u vào tng
t Input3. V
REF-
u vào tng t chuyn i A/D in áp tham chiu(mc cao).
• Chân 6(RA4/T0CKI/C1OUT): RA4 là u vào ra s,T0CKI du vào xung bên
ngoài ca Timer0, C1OUT là u ra b so sánh 1.
• Chân 7(RA5/AN4/
SS /HLVDIN/C2OUT): trong ó RA5 là cng vào ra só, AN4
là u vào tng t Input 4,
SS chn u vào ph thuc SPI, HLVDINu vào
tng t dò in áp, C2OUT u ra b so sánh 2.
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
11
• Chân 13(OSC1/CLKI/RA7): vi OSC1là u vào b dao ng thch anh hoc là
u vào ngun xung t bên ngoài, khi ta ni dây vi các thit b tng t thì u
vào này dng ST( Schmitt Trigger input ith CMOS levels).CLKI là u vào
CMOS cho ngun xung bên ngoài và luôn c ghép ni vi chân OSC1. Còn
RA7 là chân vào ra s dng chung .
• Chân 14(OSC2/CLKO/RA6): OSC2 là u ra b dao ng thch anh c ni
vi thch anh hoc b công hng d la chn dng b dao ng thch anh.
CLK0 có tn s b
ng ¼ tn s ca OSC1 rng chu kì lnh, RA6 là u vào ra
chung.
Các chân cng vào ra hai chièu Port B. Port B có th lp trình bng phn mm khi
cho kéo u vào bên trong yu lên trên toàn b u vào.
• Chân 33(RB0/INT0/FLT0/AN12): Vi RB0 là cng vào ra s, INT0 là u vào
ngt ngoài Interrup 0, FLT0 là u vào báo li PWM c tng cng CCP1,
AN12 u vào tng t Input 12.
• Chân 34(RB1/INT1/AN10): RB1 là u vào ra s, INT1 u vào ngt ngoài
Interrup1, AN10 u tng t Input 10.
• Chân 35(RB2/INT2/AN8): RB2 là u vào ra s, INT2 u vào ngt ngoài
Interrup2, AN8
u tng t Input 8.
• Chân 36 (RB3/AN9/ccp2): RB3 là u vào ra s, AN9 u tng t Input 9,
CCP2 ( Capture 2 input/Compare 2 output/PWM2 output.)
• Chân 37(RB4/KBI0/AN11):): RB4 là u vào ra s, KBI0 thay i m ngt,
AN11 u tng t Input 9.
• Chân 38(RB5/KBI1/PGM): RB5 u vào ra s, KBI1 thay i m ngt, PGM
cho phép có th lp trình ISCP
TM
in áp thp.
• Chân 39(RB6/KBI2/PGC): RB6 là u vào ra s, KBI2 thay i m ngt, PGC
chân dùng trong mch chy và xung lp trình ICSP.
• Chân 40(RB7/KBI3/PGD): RB7 u vào ra s, KBI3 thay i m ngt, PGD
chân dùng trong mch chy và xung lp trình ICSP.
Các chân công Port C
• Chân 15(RC0/T1OSO/T13CKI):RC0 u vào ra s, T1OSO u ra b dao ng
Timer1, T13CKI u vào xung bên ngoài Timer1/Timer3.
• Chân 16(RC1/T1OSI/CCP2): RC1 u vào ra s, T1OSI u vào b dao ng
Timer1, CCP2(Capture 2 input/Compare 2 output/PWM2 output.).
• Chân 17(RC2/CCP1/P1A): RC2 l u vào ra s, CCP1(Capture1 input/Compare
1 output/PWM1 output.), P1A u ra tng cng CCP1.
• Chân 18(RC3/SCK/SCL): RC3 là
u vào ra s, SCK u vào ra chui xung
vào ra cho SPI la chn, SCL u vào ra a chui xung vào ra cho I
2
C
TM
la
chn.
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
12
• Chân 23(RC4/SDI/SDA): RC4 là u vào ra s, SDI u vào d liu API, SDA
u vào ra d liu cho I
2
C.
• Chân 24(RC5/SDO): RC5 u vào ra s, SDO u ra d liu SPI.
• Chân 25(RC6/TX/CK): RC6 u vào ra s, TX u ra chuyn i d b
EUSARRT, CK du vào ra xung ng b EUSART.
• Chân 26(RC7/RX/DT): RC7 u vào ra s, RX u vào nhn d b EUSART, DT
u vào ra d liu ng b EUSART.
Các chân cng Port D( Port D có th vào ra hai hng hoc cng song song ph
thuc(PSP) cho giao diên vi x lý và khi ó các u vào phi là TTL
• Chân 19(RD0/PSP0): RD0 u vào ra s, PSP0 cng d liu song song ph
thuc.
• Chân 20(RD1/PSP1): RD1 u vào ra s, PSP1cng d liu song song ph thuc
• Chân 21(RD2/PSP2): RD2u vào ra s, PSP2 cng d liu song song ph thuc
• Chân 22(RD3/PSP3): RD3 u vào ra s, PSP3 cng d liu song song ph thuc
• Chân 27(RD4/PSP4): RD4 u vào ra s, PSP4 cng d liu song song ph thuc
• Chân 28(RD5/PSP5/P1B): RD5 u vào ra s, PSP5 cng d liu song song ph
thuc, P1B u ra c tng cng CCP1.
• Chân 29(RD6/PSP6/P1C): RD6
u vào ra s, PSP6 cng d liu song song ph
thuc, P1C u ra c tng cng CCP1.
• Chân 30(RD7/PSP7/P1D): RD7 u vào ra s, PSP7 cng d liu song song ph
thuc, P1D u ra c tng cng CCP1.
Các chân cng Port E
• Chân 8(RE0/
R
D
/AN5): RE0 u vào ra s,
R
D
u vào iu khin c cho cng
PSP, AN5 u vào tng t Input5.
• Chân 9(RE1/
WR
/AN6): RE1 u vào ra s,
WR
u vào iu khin vit d liu
cng PSP, AN6 u vào tng t Input6.
• Chân 10(RE2/
CS /AN7): RE2 u vào ra s, CS iu khin chn Chip cho cng
PSP, AN7 u vào tng t Input7.
- u RE3 nm chân 1
Các chân khác
• Chân 12,31(V
SS
): ni t chun cho I/O và logic.
• Chân 11,32(V
DD
): cungcp ngun dng cho I/O và logic.
Loi 44 chân có thêm mt s chân ph khác khi cn thit ta có th d dàng tra
trong DataSheet. Chi tit hn chúng ta có th thy qua s khi ca
Pic18F4420/4520 trong tài liu do microchip cung cp s có hoàn toàn y thông
tin. c im cu to.
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
13
1.2.1. Tổ chức bộ nhớ (Memory Organization)
Dòng Pic18Fxxxx c t chc b nh thành ba loi:
• B nh chng trình (Program Memory).
• B n d liu RAM (Data RAM).
• B nh d liu EEPROM (Data EEPROM ).
T chc các b nh chng trình theo kin trúc Harvard c sp xp theo s :
Hình 1.3: Tổ chức bộ nhớ chương trình
Tổ chức bộ nhớ chương trình(Program Memory Organization)
Dòng vi iu khin Pic18xxxx là thit b vi 21bit b m chng trinh PC
(Program counter) có th qun lý 2Mbyte b nh chng trình. Vi Pic18F4520 có
32Kbytes b nh Flash có th lu tr lên ti 16,384 câu lnh n, dòng Pic này có
hai vector ngt: Reset vector có a ch 0000h và Interrupt vector a ch 0008h
và 0018h.
• Bộ đếm chương trình – PC (Program Counter)
PC có rng 21 bits phân chia trên 3 thanh ghi 8 bits: thanh ghi PCL, thanh ghi
PCH, thanh ghi PCU. D liu bytes a ch ca PC
c lu trong b nh chng
trình. Khi s dung cn lu ý ti cu trúc lnh có làm thay i giá tr PC hay không.
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
14
• Khôi phục dịa chỉ ngăn xếp (RETURN ADDRESS STACK)
ây ta có th cho phép lu tr gi 31 chng trình và các ngt xy ra. Trong
thc thi ngn xp cu trúc lnh CALL và RCALL là c quan tâm. S ngn
xp dng:
Hình 1.4: Sơ đồ địa chỉ ngăn xếp
Trong vùng ngn xp này cn quan tâm ti::
- Top-of-Stack Access
- Return Stack Pointer (STKPTR)
- Stack Full and Underflow Resets
Khi chúng ta lp trình cn thit chính xác khi gi chng trình qua lnh Call và
Rcall nên khi tác ng cn quan tâm s thay i các ngn xp cng nh qun lý
con tr (Pointer). Ta có th dùng các lnh Push và Pop iu khin con tr. Mt
quan tâm khác na ó là Stack Pointer Register (STKPTR) - thanh ghi con tr
ngn xp:
Bit 7 (STKFUL): bit c báo ngn xp y
− Giá tri 1 có ngha là ngn xp ã y hoc tràn
− Giá tr 0 thì ngn xp vn cha b y hoc tràn
Bit 6 (STKUNF): bit c báo tràn di
− Giá tr 1: xy ra tràn di
− Giá tr 0: không có tràn di
Bit 5 (Unimplementad): mang giá tr “0”
Bit 4-0 (SP<4:0>:Các bit xác nh con tr ngn xp
Chúng ta có th xóa bit 6 và bit 7 nh phn mm hoc bi mt POR
• FAST REGISTER STACK
Nhóm thanh ghi này gm có các thanh ghi: Status, WREG, BSR giúp vic khôi
ph
c nhanh lu chn cho các ngt. Ví d mt chng trình:
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
15
Vic qun lý tt b nh chng trình s giúp ta thc hin chng trình tt hn
cng nh ti u câu lnh.
• Chu kì lệnh Pic 18Fxxx
Bt kì mt vi iu khin Pic nào khi nhn mt xung t bên trong hay bên ngoài
u x lý theo mt chu kì gm 4 bc. H 18Fxxxx cng vy chu kì lnh c x
lý song song (Pipelining) qua 4 bc Q1,Q2,Q3,Q4.
Hình 1.5: Clock/Instruction Cycle
Hình 1.6 Instruction Pipeline Flow
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
16
Hình 1.7 Instruction In Program Memory
Tổ chức dữ liệu bộ nhớ(Data Memory Organization)
Pic18Fxxxx là h Statis Ram mi thanh ghi b nh d liu có 12 bit a ch,
cho phép truy nhp ti 4096 bytes d liu b nh. Không gian b nh chia làm
16 bank gm 256 byte mi bank Pic18F4520 nh s phía sau.
B nh d liu bao gm : thanh ghi chc nng c bit (SFRs), thanh ghi mc
ích chung (GPRs). Thanh ghi SFR dùng iu khin trng thái và chc nng
thit b
ngoi vi, trong khi thanh ghi GPR dùng lu tr hoc làm vùng nh tm
thi ang hot ng ca các ng dng.
Hình 1.8 Sơ đồ cấu trúc bộ nhớ dữ liệu Pic18F4520
Theo cu trúc lnh và kin trúc dòng Pic18Fxxxx cho phép các bank hot ng
ng thi. Toàn b b nh d liu có th cho phép truy nhp có hng, vô hng hay
a ch có ch s, c im chung ca các thanh ghi là cho phép x lý trong mt chu kì
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
17
n. Pic 18Fxxxx cung cp mt AccesBank gm 256 byte b nh cho phép truy cp
nhanh ti SFRs và phn Bank0 ca GPR nu không s dng BSR.
Chi tit các bank thanh ghi và chc nng ta có th theo dõi k hn trong
dataSheet
Sau ây là mt s cu trúc các thanh ghi in hình:
Hình 1.9 Sơ đồ cấu trúc thanh ghi của Pic18F4520
Thanh ghi Status (Status Register)
Bit 7-5 (Unimplemented): mang giá tr “0”
Bit 4 (N): bit xác nh du(Negative bit) dc s dng cho s có du(s bù 2), nó
c xác dnh khi kt qu mang du âm(ALU MSB=1)
− Giá tr 1: kt qu là âm
− Giá tr 0: kt qu là dng
Bit 3 (OV): bít báo tràn(overflow bit) c s dng cho s có du (s bù 2), nó
xác nh báo tràn cho dài 7 bit cái là nguyên nhân thayi trng
thái và du bit 7.
− Giá tr 1: xy ra tràn
− Giá tr 0 : không xáy ra tràn
Bit 2 (Z): bít không (Zero bit)
− Giá tr 1: kt qu các phép toán s h
c và logic là bng “0”
− Giá tr 0 : kt qu các phép toán khác “0”
Bit 1 (DC): Digit Carry/
borrow
bit. S dng cho các lnh ADDWF, ADDLW,
SUBLW và SUBWF
− Giá tr 1: xy ra vic thao tác 4 bit thp.
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
18
− Giá tr 0 : không xy ra vic thao tác 4 bit thp.
Bit 1 (DC): Carry/
borrow bit. S dng cho các lnh ADDWF, ADDLW,
SUBLW và SUBWF
− Giá tr 1: xy ra vic thao tác bit quan trng.
− Giá tr 0 : không xy ra vic thao tác vi bit quan trng.
• Các kiểu địa chỉ dữ liệu(Data Addressing Modes)
Có bn kiu ch nh sau:
• a ch có sn (Inherent addressing)
• a ch bng ch (Literal addressing)
• a ch có hng (Direct addressing)
• a ch vô hng (Indirect addressing)
Các ch này có ch a ch theo hng khi s dng có liên h thanh ghi
FSR
• Bộ nhớ dữ liệu và cấu trúc lệnh được mở rộng(Data Memory and the
Extended Instruction Set)
Pic 18 có kh nng cho ta m rng cu trúc lnh nh Access Bank và cho ta gp
dôi lnh khi la chon a ch không gian b nh. Nó có th mang li nhiu ý ngha v
kích thc b nh. Vi ch này ch yu thay i cu trúc kiu a ch có hng và
vô hng còn hai ch a ch
bàng ch và có sn là không thay i, c th ta có th
theo õi nh hình v
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
19
Bộ nhớ chương trình Flash (Flash Program Memory)
c im b nh Flash là có kh nng c vit và xoá trong thi gian hot ng
da vào khong in áp V
DD
mt cách d dàng.
Ti mt thi im chúng ta có th thc hin c mt byte, Vit mt khi 32 byte,
xoá mt khi 64 byte. Hot ng xoá mt khi ln không có kh nng t mã ngi
s dng.
Khi ta xoá hoc vit vào b nh chng trình s ngng ch dn cho khi hoàn
thành hot ng.Và không có s truy nhp trong sut quá trình vit hoc xoá d
liu. S có m
t b m thi gian khi có hot ng xoá hoc vit.
Sau ây chúng ta s tìm hiu mt s thuc tính c bn khi thao tác b nh Flash.
• Table Reads and Table Writes
Theo th t c và vit d liu cho phép vi x lý di chuyn các byte gia không
gian b nh chng trình và d liu trong RAM thông qua: Table Reads and Table
Writes. Nhng do b nh chng trình có rông 16bit còn b nh Ram ch là 8
bit nên di chuyn d liu gia chúng cn thanh ghi 8bit (TABLAT):
Bng c hot ng ly ra d liu t b nh chng trình a chúng ti khong
nh ca RAM.:
Bng vit hot ng lu tr d liu t b nh d liu htông qua ó gi trong b
nh chng trình:
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
20
• Control Registers
Có bn thanh ghi iu khin:
• EECON1 register
• EECON2 register
• TABLAT (TABLE LATCH ) register
• TBLPTR(TABLE POINTER) registers
Ta a ra thanh ghi EECON1 ví d:
Bit 7 (EEPGD): bit la chn b nh Flash và b nh d liu EEPROM
− Giá tr 1:Cng vào cho b nh Flash.
− Giá tr 0: Cng vào cho b nh EEPROM.
Bit 6 (CFGS): bit la chn b nh Flash , b nh d liu EEPROM hoc thanh
ghi cu hình (Configuration register):
− Giá tr 1:Cng vào cho thanh ghi cu hình.
− Giá tr 0: Cng vào cho b nh EEPROM hoc b nh Flash .
Bit 5 (Unimplemented): mang giá tr “0”
Bit 4 (FREE): bit cho phép xóa b nh Flash theo hàng:
− Giá tr 1: Xoá b
nh chng trình theo a ch hàng bi
TBLPTR trên c s lnh WR k tip.
− Giá tr 0: Ch thc hin hot ng vit.
Bit 3 (WRERR): bit c báo li trren b nh Flash và b nh d liu
EEPROM.
− Giá tr 1: Mt hot ng vit kt thúc sm.
− Giá tr 0: Hot ng vit c hoàn tt.
Bit 2 (WREN): bít cho phép hot ng vit trên b nh
Flash và b nh d liu
EEPROM.
− Giá tr 1: Cho phép vit theo chu k trên b nh Flash và b nh
d liu EEPROM.
− Giá tr 1: Ngn cn vit theo chu k trên b nh Flash và b nh
d liu EEPROM.
Bit 1 (WR): bit iu khin hot ng vit.
− Giá tr 1: Bt u chu k xóa/vit d liu trên b nh d liu
EEPROM hoc b
nh chng trình.
− Giá tr 0: Chu k vit trên b nh EEPROM hoàn tt.
Bit 0 (RD): Bit iu khin hot ng c.
− Giá tr 1: Bt u hot ng c d liu EEPROM.
− Giá tr 0: Cha bt u hot ng c d liu.
Ta có th xác nh hoc iu khin các bit 0 và bit 1 nh phn mm.
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
21
• Reading the Flash Program Memory
Khi c d liu chúng ta s dng cu trúc lnh TBLRD ly d liu t b nh
ti b nh RAM. Hot ng theo hình sau:
• Erasing Flash Program Memory
Vic thc hin xoá d liu có th thông qua ngi lp trình hoc thông qua iu
khin ISCP. Chúng ta có th xoá khi nh nht 32 t ti 64 byte, có kh nng cho
ta xoá khi ln nhng thông qua cng iu khin. Hot ông này c h tr t
thanh ghi EECON1.
• Writing to Flash Program Memory
Ta có th thc hin vit d liu t bên trong ti d liu c
n thit ti b nh.
kh nng vit có th t 16 t ti 32 byte và thông qua bng vit vi h tr khong
32 thanh ghi cho lp trình.
• Flash Program Operation During Code Protection
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
22
Bộ nhớ dữ liệu EEPROM (Data EEPROM Memory)
D liu EEPROM là mt mng b nh bt bin c phân chia t b nh RAM
và b nh chng trình, dc dùng lu tr lâu dài d liu chng trình. Nó coi là
ánh x có hng ti không gian b nh chng trình nhng li là a ch vô hng
thong qua thanh ghi SFRs. B nh EEPROM có kh nng c và vit trong quá trình
hot ông thông qua khong iên áp V
DD
.
Nm thanh ghi SFRs c s dng c và vit d liu b nh EEPROM gm:
EECON1, EECON2, EEDATA, EEADR.
Khi có giao din ti khi d liu b nh thì EEDATA nhim v gi d liu 8bit
c vit còn thanh ghi EEADR là cht a ch EEPROM cho phép truy nhp
Mt byte c vit ngay lp tc xoá tai v trí ó và vit d liu mi, quá trình này
c iu khin bi b
m thi gian on-Chip.
• Thanh ghi EEADR (EEADR Register)
Chc nng thanh ghi này dùng d a a ch d liu trong hot ng c/vit.
Thanh ghi này rng 8 bit có kh nng qun lý bnh rng 256byte(00h-FFh).
• EECON1 and EECON2 Registers
C hai thanh ghi này dùng iu khin truy nhp d liu EEPROM, hot ng
thanh ghi này hoàn toàn tng t nh các thanh gi iu khin truy nhp b nh
chng trình nhng
ây là iu khin truy nhp d liu EEPROM. Chúng có
cu trúc tng t nhau, cu trúc thanh ghi EECON1 chúng ta có phn b nh Flash.
• Reading the Data EEPROM Memory
Quá trình c d liu nh thanh ghi EEDATA, thanh ghi này s gi giá tr cn c
ti khi nó c vit bi ngi s dng. Nhng c dc d liu ngi s dng
phi vit d liu lên thanh ghi EEADR, xoá bit i
u khin EEPGD Thuc thanh gi
EECON1<7>, sau dó set bit iu khin EECON<0>.
• Writing to the Data EEPROM Memory
Quá trình vit d liu vào b nh EEPROM trc tiên là np a ch vào thanh ghi
EEADR, sau ó vit d liu lên thanh ghi EEDATA.
• Kiểm tra lại quá trình viết dữ liệu (Write Verify)
Hot ông này ph thuc vào tng ng dng và nó m bo ta có bài lp trình tt.
• Operation During Code-Protect
• Protection Against Spurious Write
• Using the Data EEPROM
1.2.2. 8 x 8 HARDWARE MULTIPLIER
Tt c các thit b Pic 18Fxxxx u có b nhân phn cng ging nh mt phn ALU.
B nhân có hình thc nhân không u và cho kt qu 16 bit lu tr trong thanh ghi kt
qu PRODH:PRODL. Hot ng b nhân không nh hng gì ti các c ca thanh ghi
trng thái STATUS.
Hot ng b nhân cho phép trong mt chu kì lnh góp phn nâng cao tc tính
toán và gim bt kích thc thut toán giúp Pic18 s dng nhiu ng dng h
n trong
phn cng và phn mm.
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
23
1.2.3. Ngắt (Interrupts)
Dòng Pic18Fxxxx này cung cp cho ngi s dng nhiu ngun ngt và mt c
trng u tiên ngt là hu ht các ngt u có c mc u tiên cao và thp. Ngt u tiên
cao a ch 0008h, ngt u tiên thp a ch 0018h. Nhng ngt u tiên cao thc
hin ngt còn các ngt u tiên thp phi c gi trong chng trình.
Có tt c mi thanh ghi s d
ng d iu khin hot dng ngt gm:
• RCON
• INTCON
• INTCON2
• INTCON3
• PIR1, PIR2
• PIE1, PIE2
• IPR1, IPR2
Nói chung các ngun ngt có 3 bit d iu khin hot ng ngt;
• Flag bit : xác nh s kin ngt xy ra.
• Enable bit : Cho phép thc hin ngt ti a ch Flag bit tr ti.
• Priority bit : chn mc u tiên cho ngt
Ngoài ra các thanh ghi chc nng c th phc v cho các ngt thì có các bit riêng
vi các ch
c nng giúp ngi lp trình có th qun lý và s dng các ngt hiu qu.
S trng thái Logic các ngt có th mô t :
Hình 1.10 Pic 18 Interrup logic
Vi điều khiển Pic
Phm Vn Cng - Hoàng Vn Quân. Lp KT1-K49
24
Bây gi chúng ta s tìm hiu cu trúc mt s thanh ghi in hình s dng phc v
hot ng ngt:
• INTCON Registers
Thanh ghi này cho phép dc ghi các ngt và cho phép u tiên ngt có c Flag bit.
INTCON 1 Registers
bit 7 (GIE/GIEH): bit cho phép ngt toàn cc.
• Khi IPEN = 0:
− Giá tr 1: Cho phép toàn b hot ng ngt.
− Giá tr 0: Không thc hin toàn b hot ng ngt.
• Khi IPEN = 1:
− Giá tr 1: Cho phép toàn b hot ng ngt vi mc u tiên
cao.
− Giá tr 0: Không thc hin toàn b hot ng ngt t ngoi vi.
bit 6 (PEIE/GIEL): bit cho phép các ngt t ngoi vi thc hin.
• Khi IPEN = 0:
− Giá tr
1: Cho phép toàn b hot ng ngt t ngoi vi.
− Giá tr 0: Không thc hin toàn b hot ng ngt t ngoi vi.
• Khi IPEN = 1:
− Giá tr 1: Cho phép toàn b hot ng ngt t ngoi vi vi
mc u tiên thp.
− Giá tr 0: Không thc hin toàn b hot ng ngt t ngoi vi
vi mc u tiên thp.
bit 5 (TMR0IE): bit cho phép ngt báo tràn TMR0
− Giá tr 1: Cho phép ng
t báo tràn TMR0.
− Giá tr 0: Không cho phép ngt báo tràn TMR0.
bit 4 (INT0IE): bit cho phép ngt ngoài INT0
− Giá tr 1: Cho phép ngt ngoài INT0 .
− Giá tr 0: Không cho phép ngt ngoài INT0
bit 3 (RBIE): bit cho phép thay i RB Port
− Giá tr 1: Cho phép ngt thay i RB Port .
− Giá tr 0: Không cho phép ngt thay i RB Port .
bit 2 (TMR0IF): bit c ngt báo trànTMR0
− Giá tr 1: thanh ghi TMR0 xy ra tràn (có th xoá bng phn
mm).
− Giá tr 0: Không xy ra tràn thanh ghi TMR0.
bit 1 (INT0IF): bit c báo ngt ngoài INT0