Professional Documents
Culture Documents
Co Ban Ve PIC
Co Ban Ve PIC
Tt nhin, 3 loi vi dng PIC trn y c th tng thch vi nhiu dng PIC c hn,
nhng v th trng PIC Vit Nam ph bin vi 3 loi PIC ny, cho nn chng ti ch
cp n 3 loi PIC ny m thi.
Sau khi cc bn c mch np, chng trnh np, MPLAB IDE, CCS C hoc HT PIC, cc
bn lm mch chy ny. K t y khi thit k cch mch test, hoc cc thit b ngoi vi
khc, cn th nghim, cc bn ch vic thit k mch ngoi, sau cm vo cc chn ra
v chy th.
Khi mch chy tt, cc bn mun thit k c hon chnh, cc bn ch vic copy mch
chy t Orcad v dn vo mch nguyn l ca thit b ca bn. Xo cc chn header i,
v ni dy vo trong mch chy PIC. Nh vy, chng ta khng phi tn thi gian thit k
cho PIC na.
Mt vi im lu v mch nh sau:
-
Ngun ch dng cho PIC, tuyt i khng dng b ngun ny cho thit b ngoi
vi. Nu thit b ngoi vi cn ngun, cc bn thit k b ngun ring. Mt s thit
b ngoi vi qu n gin, v tn t dng, cc bn c th dng ngun chung
(khong 100mA)
Mch reset ny l mch reset n gin nht ca PIC, v to ch reset power on.
Mt s ng dng ca PIC yu cn mch brownout reset, cc bn c th tham kho
trong datasheet. Nhng ti thit ngh, nhng ti thng thng, khng cn dng
mch brownout reset ny.
y, ti khng chy ra mch in, v rng ti mun dnh cng vic ny cho cc
bn sinh vin mi hc. Sau khi cc bn lm xong mch in, nu cc bn c th chia
s vi chng ti th tht l tuyt vi. Ch c mt iu lu l, chng ta thng
khng cm trc tip vi iu khin vo mch hn, m chng ta cm qua mt
socket c th g ra lp trnh li, v m bo khng b chy PIC khi hn. Do
vy, khi cm socket, cc bn s c th nht hai t ni thch anh vo bn trong
socket, khi cm PIC ln, n s che hai ci t i, v mch ca cc bn s gn
gng hn. Socket loi 18 chn khng th nht thch anh
v in tr ni t chn MCLR n VDD vo bn trong c, nhng sau ny khi
dng PIC 28 hoc 40 chn, cc bn nn nht tt c vo bn di socket cho
mch gn gng hn.
Mt im cui cng, chng ti khng thit k phn np bng ICSP, bi v chng
ti khng mun lm cho cc bn mi hc PIC cm thy bi ri. Chng ta s thc
hin mch chy PIC vi cc chn ICSP v bootloader sau.
Bi tp 1: Bt tt n LED
Phn th hai cc bn cn hc, l khi to PIC. Phn ny l phn bt buc theo sau
phn ghi ch, bi v chng trnh dch cn phi hiu bn ang lm vic vi con PIC no,
lm vic vi n nh th no?
Code:
Ri, nh vy, chng ta thc hin xong mt chng trnh vit bng MPASM cho
PIC16F628A.
Phn tch chng trnh, chng ta s thy, mi khi ng, chng trnh gp lnh goto
main, n s nhy n nhn MAIN. nhn MAIN, n gp lnh banksel, tc l lnh bank
select. C ngha l n s chuyn sang hot ng bng c cha thanh ghi TRISB.
V sao? Bi v ban u khi ng, PIC lun nm bng 0. Nhng thanh ghi TRISB li
nm bng 1, v th cn phi chuyn sang bng 1 lm vic. Thc ra chng ta cng c
cch yu cu PIC chuyn sang bng 1 mt cch ch danh, ch khng phi l chuyn
sang bng c thanh ghi trisb nh chng ta va lm. Nhng vic ny l khng cn thit, c
hai vic lm u ging nhau. Chnh v vy, chng ta chn cch vit no cho d nh l
c.
Sau khi chuyn sang bng 1. Chng ta dng lnh CLRF xo thanh ghi TRISB.
Tc l TRISB = 00000000
Chng ta lu mt iu rng, thanh ghi TRISB c cng dng quy nh PORTB s c
nhng chn no l chn xut, chn no l chn nhp. Chng ta nh thm mt iu na, s
0 ging ch O, v s 1 ging ch I. Nh vy, khi TRISB = 00000000 tc l PORTB s l
OOOOOOOO, tc c ngha l tt c cc chn ca portB u l Output. Nu TRISB =
01010101 th PORTB s l OIOIOIOI. C ngha l RB0 s l Input, RB1 l Output, RB2
l Input, RB3 l Output.. c nh th cho n RB7 l Output. Lu rng RB0 n RB7
c tnh t phi sang tri.
Sau , chng ta li thc hin lnh Banksel portb, tc l chng ta li nhy v bng 0
(bng cha thanh ghi portb).
Tt c cc lnh lm thay i gi tr ca thanh ghi portb, s lm thay i tn hiu in
bn ngoi chn ca PORT B.
Sau khi chuyn sang bng 0, chng ta thc hin lnh BSF PORTB,0. C ngha l chng
ta set bit v tr 0 ca portb, tc l chng ta cho RB0 = 1.
C ngha l ngoi chn RB0 s mang gi tr in p 5V. Khi , n LED ni vi RB0
s sng.
Cc bn s thy mach ngoi hot ng nh th ny:
Khi bt in ln, PIC c reset. N lp tc bt sng n LED RB0, ri sau gi
nguyn nh vy, khng lm g c.
By gi cc bn lu chng trnh va vit thnh LED_1.asm vo mt th mc no .
Nhn Alt - F10, chng trnh s dch LED_1.asm thnh LED_1.hex
Cc bn dng mch np PG2C v chng trnh np IC-PROG np vo PIC (tham
kho Hng dn mch np Falleaf PG2C - PIC Tutorial).
Cng vic ca cc bn nh sau:
0) Chy th chng trnh ban u
1) Thay i lnh BSF PORTB, 0 bng lnh BSF PORTB, 1. Np li chng trnh mi
vo PIC. Bn s thy by gi n LED khng sng v tr RB0 na m sng v tr RB1.
BI 2: Hm DELAY
Qua bi hc th nht, chng ta hc v cch bt tt mt n LED. By gi nu mun
lm cho n LED nhp nhy, c ngha l chng ta bt n LED, sau ch mt khong
thi gian, v tt n led i, sau li ch mt khong thi gian na v li bt n led
ln. Mun thc hin vic ny, chng ta phi tm cch lm mt hm delay (delay - ting
Anh c ngha l tr, chm li)
Hm DELAY l mt hm rt thng dng khi lp trnh thi gian thc. Nguyn l ca hm
delay l dng thi gian thc hin cc lnh ca vi iu khin lm thi gian tr. Nh cc
bn bit (nu cha bit th by gi bit.. hihi), mi lnh ca vi iu khin, khi thc
hin, cn phi tn mt khong thi gian no . Nu mt vic lm m khng tn thi
gian th ng l v l. Vy thi gian thc hin mt lnh ca PIC l bao lu?
Nh trong bi hc u tin chng ta cp, chng ta s dng thch anh t 4MHz n
10MHz v n 20MHz. Thch anh ny to ra cc dao ng xung nhp chnh xc duy
tr nhng khong thi gian xc nh cho vi iu khin hot ng.
Chng ta xem hnh sau hiu c nguyn l to dao ng bn trong vi iu khin:
Hnh 1:
Thch anh to dao ng trn cc chn OSC, a vo bn trong PIC. PIC s m 4 nhp
trn dao ng thch anh, v thc hin mt lnh. Nh vy, thi gian thc hin mt lnh
chnh l 4 nhp dao ng ca thch anh.
Chng ta thng gi thi gian thc hin mt lnh ca PIC l mt chu k my (on s 2
trn hnh). Vy mt chu k my bng bao nhiu, nu chng ta s dng thch anh 10MHz
cho PIC?
Tn s dao ng ca thch anh:
F_osc = 10MHz
Chu k ca dao ng thch anh:
T_osc = 1/10.000.000 s
Chu k my
T_instruction = 4 * T_osc = 4/10.000.000 s = 0.0000004 s = 0.0004 ms = 0.4 us = 400
ns
Nh vy, mt lnh my c thc hin trong vng 0.4 micro giy, hay 400 nano giy.
Tng t, khi cc bn dng thch anh 4MHz, chu k my s l 1us, v dng thch anh
20MHz, chu k my s l 200 nano giy.
Quay tr li vi vic nu chng ta cn thc hin mt vic g ging nh nhp nhy n
LED, th chng ta cn PIC phi dng li, khng lm g c ch chng ta. Nu nh lnh
NOP (lnh khng lm g) s gip chng ta ch 0.4 us, m chng ta cn ch 1 giy, th
chng ta vit bao nhiu lnh NOP cho ?
Thay v nh vy, chng ta vit mt vng lp cho vi iu khin lm mt vic v thng
v pht no N ln, v mi ln nh vy n tn T chu k my. Nh vy, sau khi kt thc
vic lm v thng v pht , vi iu khin ch chng ta N * T chu k my.
vit mt vng lp nh vy, trc tin chng ta hc cch t bin.
Mt bin c t trong PIC, thc cht l mt tn gi chung cho mt hoc nhiu thanh
ghi cc gi tr. Trong phn ny, chng ta ch n gin lm t bin c ngha l t tn cho
mt thanh ghi. Thc ra, chng ta hon ton khng cn t tn, m c th gi trc tip a
ch ca thanh ghi, nhng nu lm nh vy, sau ny, khi chng trnh phc tp dn ln,
chng ta s d b ln ln cc bin.
Khi t bin, thanh ghi ny nm u? N s nm trong b nh chng trnh v c th,
n s nm trong vng nh dng chung m chng ta cp trong bi hc trc.
Vy lm th no t bin? C rt nhiu cch t bin, v trong phn ny, ti s hng
dn cc bn cch t bin m ti cho rng r rng nht.
Cc bn va lm g?
Directive ORG dng xc nh a ch vng nh. Cc bn lu rng, khi xc nh a
ch vng nh y, chnh l cc bn xc nh a ch vng nh d liu, ch khng phi
a ch vng nh lp trnh. Nhng g cc bn vit pha bn di, s gip cho trnh dch
hiu c rng cc bn ang lm vic trong vng nh lp trnh, hay vng nh d liu
Directive RES quy nh vic t bin. S 1 pha sau xc nh rng bin c tn COUNT_L
chim 1 thanh ghi 8 bit, tc l 1 byte.
Tip theo, cc bn li t bin tn l COUNT_H. Nh vy, bin COUNT_H cng chim
1 byte.
Cu hi t ra l cc thanh ghi ny nm u?
Cc bn lu , khi cc bn dng directive ORG, l cc bn xc nh ni bt u t
bin. Nh vy, bin COUNT_L s c di 1 byte, v c t a ch 0x020 tc l
a ch u tin ca vng nh d liu dng chung trong bng 0 (20h)
V COUNT_L chim 1 byte. Do , bin COUNT_H s chim byte tip theo, v a
ch u tin ca COUNT_H s l 21h, nhng COUNT_H cng ch c 1 byte, cho nn n
chnh l thanh ghi a ch 21h. n bin COUNT_N, tng t, a ch u tin ca n
s l 22h. Bin COUNT_N chim 3 thanh ghi, nh vy, bin COUNT_N s nm t 22h,
23h n 24h. Nu tip tc t thm cc bin khc, cc bin s bt u t a ch 25h,
c nh th.
Vy mun t bin cc bng khc th lm th no? Cc bn c ly a ch u ca vng
nh d liu dng chung ca bng v vit nh sau:
K t nay, cc bn bit cch t bin, bit cch vit phn khi to, chng ta s ch cn
bn ti vic vit phn chng trnh chnh nh th no na m thi.
Code:
Lu rng trn, chng ta gi chng trnh con CALL DELAY. Nh vy, vic gi hm
c thc hin bng lnh CALL [NHN].
Con tr chng trnh s nhy v [NHN] c gi. N thc hin cc lnh nm t nhn
tr i. Thc hin cho n khi gp lnh RETURN, n s quay tr v v thc hin lnh
tip theo ngay bn di lnh CALL. y, chng ta gp phi mt vn , l khi
nim Top of Stack. Tuy nhin, chng ta tm gc n li cho bi hc sau, cn by gi cc
bn ch cn nm c vic thc hin lnh CALL bao gi cng i km vi mt nhn. Con
tr nhy ti nhn v thc hin cc lnh bn trong , n khi gp lnh RETURN th n
nhy tr v v tr nm sau lnh CALL v thc hin tip cng vic ang lm.
V b qua khi nim Top of Stack, cho nn ngh cc bn khng t ra cu hi nu
trong cc lnh thc hin, n li c mt lnh CALL gi i ch khc th lm th no?
Chng ta s gii quyt vn ny phn sau.
Th bn trong hm DELAY chng ta lm nhng g?
Lu rng, trn chng trnh chnh, sau khi khi to PORTB l ng output, cc bn
thy chng ta ghi gi tr d'255' vo bin COUNT_L. Cch vit gi tr nh sau:
b'11001010' xc nh s nh phn
d'234' xc nh s thp phn
0xF3 xc nh s thp lc phn
Lu :
S nh phn ch c cc gi tr 0 v 1, v ti a di 8 bit. S thp phn ch c th c gi tr
t 0 n 255, v s thp lc phn ch c gi tr t 00 n FF
Quay tr li, bin COUNT_L ang mang gi tr 255.
Khi thc hin hm DELAY, cc bn thc hin lnh DECFSZ (DECrement File, Skip if
Zero), c ngha l n s gim gi tr ca mt thanh ghi no mt n v. Nu sau khi
gim xong, m kt qu l 0, th n s nhy cch ra mt nh trong b nh chng trnh,
v thc hin lnh tip theo . Nu gi tr sau khi gim mt n v cha bng 0, th n s
thc hin lnh lin k vi n.
Nh vy, vng lp c thc hin nh sau:
Nu chng ta dng thch anh 10MHz, mi chu k my tn 0.4 us, c ngha l lnh CALL
DELAY tn:
768 * 0.4 us tc l khong 1/3000 giy.
Chng ta khoan bn n vic xa hn, vy th chng ta bit cch tnh thi gian hao tn
ca hm DELAY ri. Nhng nu tnh nh th ny th qu mt cng, chng ta c th
chuyn n thnh cng thc c th nh sau:
CALL = 2
DELAY (COUNT_L) = [COUNT_L - 1] * (DECFSZ + GOTO) + 1 + 1
RETURN = 2
Cc bn nn nh cng thc ny sau ny pht trin ln tnh cc cng thc khc.
Tng kt: Cc bn hc c g ngy hm nay?
- Cc bn hiu c khi nim chu k my, dao ng thch anh to ra, PIC s thc
hin 1 lnh trong vng 4 dao ng ca thch anh. Nh vy, chu k my ca PIC s l chu
k dao ng ca thch anh nhn vi 4, hay tn s PIC s bng tn s thch anh chia 4.
- Cc bn hc c cch t bin trong mt chng trnh vit bng MPASM, cc bn
c th t bin bt k bng no cc bn mun
- Sau , cc bn b sung phn t bin ny vo trong sn chng trnh ln trc
hc, cc bn hon thin hn sn mt chng trnh vit bng MPASM
- Cc bn li thm vo sn chng trnh phn cc chng trnh con, vy ti thng
bo vi cc bn rng cc bn ch cn thiu 2 phn na l ngt (Interrupt) v bng (Table)
na, l cc bn c th c mt sn chng trnh vit bng MPASM hon chnh. Cc
bn s khng phi i lu hon tt sn chng trnh ny.
- Cc bn hc c cch dng hm CALL v RETURN, n lun lun i km tng cp
vi nhau.
- Cc bn hc thm cc lnh: BCF, CALL, RETURN, DECFSZ
Ti liu tham kho:
Cc bn tham kho datasheet PIC16F84A, PIC16F628A v PIC16F88 bit thm chi
tit v cu trc b nh d liu, v c ci th c bng 2, c ci khng c, c ci li c bng
3, bng 4.... Nh ch phn tp lnh c hiu thm v cc lnh va hc (Instruction
Set)
Bi 3: Ngt
Khi nim ngt l mt khi nim rt ph bin trong tt c cc h thng vi iu khin, vi
x l v my tnh. Vy ngt l g?
Cc bn hnh dung hnh nh chng ta ang i xe my trn b rung, con ng i rt di
v rt thng, bng nhin c mt con b chy ngang, hc chng ta xung rung. C xe v
ngi lao xung rung. Chng ta lm cm b dy, phi qun o, chi ng ln mt ci v
chng bit chi ai, th l chng ta em ng tri ra chi. Sau , chng ta dt xe my ln
b rung, ti ci ch m chng ta b hc t xung, ri chng ta ly xe chy tip. Nu l
c mt con b no khc, li hc chng ta.. th....
Hot ng ngt cng ging nh vy, khi chng ta ang chy mt chng trnh chnh no
, bng nhin c mt s kin xy ra, chng ta phi dng vic chng ta ang lm li, v
Chng ta ch n mt s im sau:
1) Trong hnh c cc k hiu cng logic AND v OR
Bn thy rng, trong hnh, r rng c 2 lp ngt. Lp th nht nm bn tay tri ngoi
cng, lp th hai nm gia hnh. Lp th ba ch c mt cng AND nn chng ta khng
k ti lm g.
Lp th nht c gi l lp ngt ngoi vi.
Thc cht lp ny v c qu nhiu ngun ngt, v cc ngun ngt ny u l mt s
chun giao tip, hoc chc nng c bit ca PIC, cho nn ngi ta phn ra lm lp ngt
ngoi vi. cc ngt ngoi vi hot ng, trc tin chng ta phi cho php ngt ngoi vi,
tc l bt bit PIE ln. Cn c th mun cho ngt ngoi vi no hot ng, th chng ta bt
ngt ln. Trn s cc bn cng thy r thng qua cc cng AND v OR.
Lp th hai tm gi l lp ngt ph thng.
Khi mun dng cc ngun ngt ph thng, chng ta ch vic bt cc bit IE ca ngun
ngt ny. Tt nhin, cui cng, chng ta phi bt ngt ton cc GIE th ngt mi c
php xy ra (k c ngt ngoi vi v ngt ph thng. Khi , PIE c coi l mt ngun
ngt ph thng.
iu ny cng ging nh khi bn chy xe trn b rung, mt hng ro di chy dc theo
con ng, chnh l ngt ton cc GIE. Lp bn ngoi th hai l lp ngt ph thng, bao
gm lun c ngt ngoi vi PIE. V ngoi cng l cc hng ro thuc lp ngt ngoi vi.
Nu cc bn bt cc ngun ngt, m khng bt ngt ton cc GIE th cho d ngt c xy
ra, th chng trnh vn khng dng thc hin ngt, ging nh con b c th lao qua
hng ro ngoi cng c m, nhng vn cn hng ro trong cng.
Nh vy, cc bn hiu mt cch tng quan v hot ng ngt ca PIC, nhng nguyn
tc phi bt hay tt ngt.
im lu cui cng, l ti mun gii thiu vi cc bn rng, ch k hiu trong bng,
l tn cc bit lin quan n vic bt tt ngt. VD: bit PIE, INTE.. nm trong thanh ghi
INTCON (ngt ph thng), cc bit quy nh ngt ngoi vi nm trong cc thanh ghi PIR v
PIE.
Vect ngt ca PIC:
Nh ln trc gii thiu, vect ngt ca PIC nm v tr 0x0004 cc bn xem li hnh
sau:
Khc vi khi bn b t rung, bn t xung ngay ti ch bn b hc, i vi vi iu khin,
khi xy ra interrupt, n s nhy v mt a ch c nh, v thc hin cng vic ti . Sau
khi thc hin xong, n s quay tr v v tr m t n thot ra. V tr c nh m n
s nhy v khi xy ra ngt l v tr 0x0004.
Chng trnh ngt:
Nh vy, mt ln na, chng ta b sung sn chng trnh ca chng ta mt cch chi tit
hn. Chng ta va thm vo mt on chng trnh con INTERRUPT. Thc ra, gi
INTERRUPT l mt chng trnh con cng khng sai, nhng v n kh c bit, nn
chng ta c tch ri n ra.
Khi to v kt thc ngt:
Ti cung cp di y on chng trnh khi to v kt thc ngt y cho PIC, t
nay v sau, khi mun s dng ngt, cc bn ch cn copy v paste on code ny li, hon
ton khng cn sa cha g v c th s dng.
Ti s dnh cho cc bn t cu hi v phn ny t cc cu hi, c th gii thch r
hn v sao chng ta li vit nh vy, tng im mt. Nu khng, ti khng th c thi
gian vit tt c mi vn v ngt ra y c.
Code:
;=================================================
===========================================
INTERRUPT
;------------------------------------------;Doan ma bat buoc de vao ngat
;------------------------------------------MOVWFW_SAVE
;W_SAVE(bank unknown!) = W
SWAPF STATUS,W
CLRF STATUS ; force bank 0 for remainder of handler
MOVWF STAT_SV; STAT_SV = swap_nibbles( STATUS )
; STATUS = 0
MOVFPCLATH,W
MOVWFPCH_SV ; PCH_SV = PCLATH
CLRF PCLATH ; PCLATH = 0
MOVF FSR,W
MOVWFFSR_SV; FSR_SV = FSR
; 10 cycles from interrupt to here!
;----------------------------------;Doan chuong trinh ngat
;----------------------------------; cac ban se viet chuong trinh ngat o day
;-------------------------------------------------;Doan ma bat buoc de ket thuc ngat
;-------------------------------------------------MOVFFSR_SV,W
MOVWF FSR; FSR = FSR_SV
MOVF PCH_SV,W
MOVWFPCLATH; PCLATH = PCH_SV
SWAPFSTAT_SV,W
MOVWF STATUS ; STATUS = swap_nibbles( STAT_SV )
SWAPF W_SAVE,F
SWAPF W_SAVE,W; W = swap(swap( W_SAVE )) (no change Z bit)
BSFINTCON,GIE
RETFIE
;=================================================
Nh vy, chng trnh ngt c chia lm 3 phn chnh.
Theo di hnh trn, chng ta thy. Khi bm nt, c qu trnh i xung ca nt bm, v
qu trnh i ln ca nt bm. Nhng thc t, i vi mch in trong nt bm, n ch c
th nhn c trng thi tip xc hoc khng tip xc, nn tn hiu nhn c s nh
ng mu xanh trong hnh di. Chng ta ch quan tm n trng thi ca ng mu
xanh trong cc ng dng ca nt bm.
Vy, trng thi nt bm li c thm 3 trng thi na l trng thi bm xung, trng thi
gi nt bm, v trng thi nh nt bm ln. Kt hp vi 2 trng thi iu khin trn,
chng ta c 6 trng thi ph bin ca nt bm. Cc bn lu rng, chng ta c 6 trng
thi ch khng phi ch c 4 trng thi, v thc ra rt nhiu ngi cho rng ch c 4 trng
thi khi cho rng trng thi ch trong lc gi nt bm khng phi l trng thi ph bin.
Nhng nu cc bn tng dng in thoi di ng th cc bn thy s ngi dng trng
thi ch ca nt bm cng khng phi l con s nh.
Phn 4: in t c bn