Professional Documents
Culture Documents
ViDieuKhien Pic
ViDieuKhien Pic
COM
Su tm v bin son:linhnc308@yhoo.com
Su tm v bin son:linhnc308@yhoo.com
Su tm v bin son:linhnc308@yhoo.com
C bn v pic
Di y l hnh mch chy ca PIC16F84A, PIC16F628A v PIC16F88. Tt c cc PIC ny u
c v tr chn tng ng nhau, v thm ch c th ni PIC16F628A tng thch PIC16F84A v
PIC16F88 tng thch vi hai loi cn li. C ngha l trong cc ng dng ca PIC16F84A, khi thay
i bng PIC16F88, hay PIC16F628A u c.
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)
- Ti khng khuyn khch dng dao ng ni ca PIC, bi v dao ng ni ch chy c 4MHz,
v khng n nh nh dng thch anh ngoi. Mt s ti cng nghip, h dng thch anh chun
cng nghip 4 chn, nn chng ta cng to thi quen dng thch anh ngoi, khng cn qu tn
dng 2 chn ca PIC.
- Mch reset ny l mch reset n gin nht ca PIC, v to ch reset power on. Mt s ng
Su tm v bin son:linhnc308@yhoo.com
Su tm v bin son:linhnc308@yhoo.com
Su tm v bin son:linhnc308@yhoo.com
;================================================= =======
; Ten chuong trinh
: Mach test den LED_1
; Nguoi thuc hien
: Falleaf
; Ngay thuc hien
: 23/05/2005
; Phien ban
: 1.0
; Mo ta phan cung
: Dung PIC16F628A - thach anh 10MHz
;
: LED giao tiep voi PORTB
;
: Cuc am cua LED noi voi GND
;
: RB0 - RB7 la cac chan output
;---------------------------------------------------------------; Ngay hoan thanh
: 23/05/2005
; Ngay kiem tra : 23/05/2005
; Nguoi kiem tra
: Doan Hiep
;---------------------------------------------------------------; Chu thich
: Mo ta cac diem khac nhau cua cac phien ban khac nhau
;
: hoac cac chu thich khac
;
: vd, dung che do Power On Reset, PORTB = 00000000
;
: hoac, chuong trinh viet cho PIC Tutorial
;
: hoac, chuong trinh nay hoan toan mien phi va co the dung cho
;
: moi muc dich khac nhau
;================================================= =======
Mc d cha chc rng on ch thch ny c th ngn hn chng trnh cc bn vit, v nh vy
vic vit ch thch di hn vic vit chng trnh? Khng, thc s cc ch thch ny rt quan
trng, v sau 1, 2, 3 nm, cc bn nhn li, cc bn s vn cn hiu c mnh lm g. C th
khi mi bt u, cc bn thy cng vic ghi ch ny l nhm chn, chnh v vy, ti cung cp
form ca ghi ch ny, cc bn sau ch cn ct v dn. Ti hy vng rng cc bn nn to thi
quen a on ch thch ny vo chng trnh cc bn tr nn chuyn nghip hn khi lm vic
vi vi iu khin, c th y l PIC.
Tt nhin, y l bi hc u tin, do vy cc ch thch s c ghi rt chi tit, nht l khi m t
phn cng. Sau ny, vi cc mch phc tp hn, cc bn khng th ghi ch qu chi tit nh th
ny c, cc bn ch ghi ch nhng im chnh thi. Cng tt nhin, khi lp trnh vi CCS C hay
HT PIC, cc bn cng nn ghi ch nh vy trong chng trnh chnh, nhng chng ta cha bn
n CCS C v HT PIC y.
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:
;================================================= ======
TITLE
"Mach test LED_1"
PROCESSOR
P16F628A
INCLUDE
<P16F628A.inc>
__CONFIG
_CP_OFF & _PWRTE_ON & _WDT_OFF &_HS_OSC
;================================================= ======
Cc bn s thy rng c mt s t kho nh sau:
TITLE: dng cc bn ghi ch thch tn chng trnh. TITLE l ten chng trnh chnh. C php
ghi TITLE nh trn. Nh phi c du nhy kp khi vit tn chng trnh.
PROCESSOR: dng khai bo dng vi iu khin m cc bn s dng. Cc bn lu , trong
MPLAB quy nh, khng vit y tn PIC16F628A m ch vit P16F628A, v trong chng trnh
dch quy nh nh vy.
INCLUDE: dng a thm vo cc file m bn vit trong chng trnh. Mc nh, trong MPLAB
ng dn n th mc cha file P16F628A.inc c sn. Nu bn t file ni khc khng phi
Su tm v bin son:linhnc308@yhoo.com
NHN
LNH
thamso1,
thamso2
By gi chng ta dnh cht thi gian cho l thuyt, cc bn m datasheet PIC16F628A trang 15,
Section 4. Memory Organization
Chng ta s thy rng t chc b nh chng trnh ca PIC c chia ra lm my phn nh sau:
- Pointer
- Stack
- Interrupt vector
- Program memory
Su tm v bin son:linhnc308@yhoo.com
;=================================================
ORG
0x0000
GOTO
MAIN
ORG
===================
0x0005
MAIN
.....
END.
;=================================================
===================
;=================================================
ORG
0x0000
GOTO
MAIN
ORG
==============================
0x0005
MAIN
Su tm v bin son:linhnc308@yhoo.com
TRISB
; bank select
; trisb = 00000000
; portb = output
BANKSEL PORTB
BSF
PORTB, 0
; rb0 = 1
; RB0 = 5V
GOTO
$
; dung chuong trinh tai day
; vong lap tai cho^~
; khong bao gio ket thuc
END.
; lenh bat buoc de ket thuc
;================================================= ===============================
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.
2) Thay lnh BSF PORTB,0 bng on lnh
MOVLW b'11110000'
MOVWF PORTB
Bn s thy cc cc chn t RB0 n RB3 s tt n, v cc chn t RB4 n RB7 n s sng.
3) Bn thay lnh CLRF TRISB bng on lnh
CLRF TRISB
BSF TRISB, 0
v gi nguyn lnh
BSF PORTB, 0
Cc bn s thy rng n LED trong trng hp ny s khng sng na.
Bi v cc bn lm cho TRISB = 00000001. Nh vy, RB0 tr thnh chn Input. Khi RB0 tr
thnh chn Input, th lnh BSF PORTB, 0 s khng cn tc dng na. RB0 lc ny khng th thay
i gi tr bng chng trnh, n ch c th nhn gi tr in p t bn ngoi vo.
Su tm v bin son:linhnc308@yhoo.com
10
*******
&&& *******
Thanh ghi W
Trong bi ny, chng ta ni i nt v thanh ghi W cc bn nm r hn phng thc hot ng
ca PIC.
Khi nim thanh ghi W:
Thanh ghi W l thanh ghi lm vic (Working register), v hu ht mi lnh ca PIC u lin quan
n thanh ghi W ny, ly th d nh ADDLW (cng mt s vo gi tr c trong thanh ghi W),
SUBWF (tr gi tr ca thanh ghi W cho mt thanh ghi khc), XORLW (ly XOR ca mt s v
thanh ghi W)... V cc bn rng, tng s lnh c th tng tc vi thanh ghi W l 23/35
lnh, gn nh chim ton b tp lnh ca PIC. Vy chng ta ghi nhn iu th nht, khi PIC lm
vic, gn nh lun lun tng tc vi thanh ghi W.
iu th hai, cc bn nhn trong bn b nh d liu ca PIC, cc bn s thy l thanh ghi W l
thanh ghi khng c mt bt k bng no ca b nh d liu, trong khi thanh ghi STATUS c
mt c 4 bng. Cc bn li thy mt iu rng, thanh ghi W v thanh ghi STATUS c th c
truy nht t tt c cc bng, v t bt k u trong chng trnh, v v vy chng tr thnh
nhng thanh ghi ton cc nht. im khc bit gia chng ra sao? u l s khc bit gia thanh
ghi W v cc thanh ghi khc?
im th ba, trong tp lnh ca PIC, khng c lnh no cho php tng tc trc tip gia mt
thanh ghi trong b nh d liu dng chung vi mt gi tr thm vo, m u phi thng qua thanh
Su tm v bin son:linhnc308@yhoo.com
11
Vi c im ny, chng ta s phn tch v sao cn phi c thanh ghi W, v sau chng
ta s phn tch tt c cc hot ng ca thanh ghi W trong mt chng trnh vit bng PIC, nu
c th. Nhng g cn li, chng ta s xem trong bi tp lnh ca PIC midrange.
V sao cn phi c thanh ghi W?
Bn s lm th no tnh php ton sau: ly gi tr a ca thanh ghi A cng vi gi tr b
ca thanh ghi B v t vo thanh ghi A? Mt gii hn ca tp lnh PIC l khng cho php cng hai
thanh ghi v t vo mt thanh ghi khc. Do , cc bn s phi thc hin thao tc sau:
Chuyn gi tr b t thanh ghi B vo thanh ghi W, sau ly gi tr ca thanh ghi W (lc ny l
b) cng vi gi tr a thanh ghi A, sau gn li vo thanh ghi A. on code c thc hin nh
sau:
Code:
MOVF
B,
W
ADDWF
A,
F
thanh ghi W v gn li vo A
Khi cc thanh ghi A v B khng nm trong cng mt bng, khi thao tc vi tng thanh ghi, cc
bn ch vic i v bng cha cc thanh ghi l xong. Mt on lnh hon chnh c th thc
hin cho bt k 2 thanh ghi no c vit nh sau:
Code:
BANKSEL B
MOVF
BANKSEL A
ADDWF
B,
A,
on chng trnh ny cng minh ho lun cho vic thanh ghi W l mt thanh ghi ton cc,
khi chng ta thao tc vi thanh ghi B mt bng b k, nhng khi chuyn gi tr b t thanh ghi B
vo thanh ghi W ri, th chng ta khng cn quan tm rng gi tr nm u, ch cn chuyn
v bng cha thanh ghi A th lnh cng s c thc hin mt cch d dng.
Mt th d khc v lnh cng, nhng khng phi l cng gi tr nm trong 2 thanh ghi, m l
cng gi tr a ca thanh ghi A vi mt s k cho trc no , gi s k = 5 v lu vo thanh ghi A.
Chng ta thy rng, hon ton trong tp lnh khng c lnh cng trc tip mt thanh ghi vi
mt s, m ch c lnh cng mt s vi thanh ghi W. Nh vy chng ta phi thc hin thao tc
sau: chuyn gi tr a t thanh ghi A vo thanh ghi W, cng thanh ghi W vi hng s k = 5, sau
chuyn gi tr mi ca thanh ghi W tr li thanh ghi A. iu ny c thc hin nh sau:
Su tm v bin son:linhnc308@yhoo.com
12
MOVF
ADDLW
MOVWF
A,
d'5'
A
Trong th d ny, chng ta s khng thy W l mt bin tm na, m tr thnh mt thanh ghi
dng lu kt qu cng vi mt con s. n by gi, th chng ta s gi thch r hn v sao
chng ta phi lm nh vy.
Chng ta thy r rng rng, mt dng lnh ca PIC midrange, c m t bng 14 bit. iu ny
c ngha l, khi thc hin mt lnh cng, khng th no dng lnh va lu a ch ca thanh
ghi A, va lu gi tr 8 bit ca hng s k c, v mt thanh ghi trong dng PIC midrange cn ti
thiu 7 bit biu din a ch thanh ghi, v mt hng s chim 8 bit. N vt qu con s 14 bit
cho php m ho lnh. Chnh v vy, khng th thc hin lnh cng trc tip t mt thanh ghi
vi mt s c. Quay li th d trn, chng ta cng thy rng khng th thc hin vic cng
hai thanh ghi vi nhau, nu nh cn lu 2 a ch thanh ghi, chng ta s mt 14 bit, v nh vy
khng c cc bit m ho m t lnh cn thc hin l g.
y chnh l im khc bit gia tp lnh RISC v tp lnh CISC. Tp lnh CISC c th thc hin
lnh phc, v n c th to ra mt lnh di 8 bit, 16 bit, 24 bit... v l b s ca 8 bit. Do , nu
cn cng 2 thanh ghi 8 bit, n hon ton c th to ra mt lnh di 24 bit, trong 8 bit dng
m ho, 8 bit dnh cho a ch ca thanh ghi th nht, 8 bit dnh cho a ch cua thanh ghi th 2.
Trong khi , tp lnh RISC l tp lnh rt gn, cho d n l lnh g, n cng lun lun ch c 14
bit (i vi PIC midrange).
Thanh ghi W ging nh mt thanh ghi mc nh duy nht, v vy, khi thc hin, b x l trung
tm c th gii m c nu lnh c cn thao tc vi thanh ghi W hay khng, m khng cn
lu a ch ca thanh ghi W bn trong on m lnh.
Chng ta xem hnh di y bit c b x l logic hot ng nh th no vi thanh ghi W.
Su tm v bin son:linhnc308@yhoo.com
13
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?
Code:
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,
Su tm v bin son:linhnc308@yhoo.com
14
;=================================================
=================
ORG 0x020
COUNT_L RES
COUNT_H RES
COUNT_N RES
1
1
3
;=================================================
=================
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.
Nu hiu nm na theo cch ny, bn c th s d hiu n hn, mt hng l mt gi tr. Gi
tr c th nm trong thanh ghi d liu (b nh d liu), nhng cng c th nm trong lnh iu
khin (b nh chng trnh). iu ny khng nh rng, hng l mt gi tr.
Mt khi bn t mt tn no , i din cho mt hng s, c ngha l thay v bn vit ci gi
tr , th bn vit ci tn i din , d nh. Chng hn, bn vit ch pi, i din cho hng
s c gi tr 3.1415926....
Trong khi , nu bn t mt bin pi, th c ngha l bn xc nh a ch ca thanh ghi d
liu no , m mi khi bn truy xut n bin pi, c ngha l bn ang thao tc vi thanh ghi
a ch m bin pi i din. V d: bn t bin pi thanh ghi 0x20 chng hn. iu c ngha l
khi ban lm g vi bin pi, chnh l bn ang lm vic vi thanh ghi a ch 0x20.
Nhng bn s thy rng, vy bin pi v hng s pi c g khc nhau? By gi bin pi v hng pi
cng u mang gi tr c. Nhng cc bn nn nh, trong cu lnh lc no v tr ca bin (thanh
ghi) F, v v tr ca hng s k (trong cu trc mt cu lnh MPASM, ti s post li bi ny t
dddt). c s phn bit r rng.
Vy ty theo v tr bn t n u, n s l bin, hoc l hng. Nu l bin, n ch mang
gi tr ca da ch ca thanh ghi nm trong b nh d liu, nu l hng, n nm u cng c k
c b nh d liu v b nh chng trnh.
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:
Code:
;=================================================
ORG
0x0A0h
COUNT_X RES
10
Su tm v bin son:linhnc308@yhoo.com
15
;=================================================
======================
1
1
RES
0x0A0
=======================
;=================================================
; Phn ch thch ban u
;
;=================================================
; Phn khi to vi iu khin
TITLE
PROCESSOR
INCLUDE
__CONFIG
=======================
;=================================================
; Phn t bin
=======================
=======================
Su tm v bin son:linhnc308@yhoo.com
16
========================
0x0005
MAIN
;
Nh vy, chng ta bit cch vit mt chng trnh y dnh cho vi iu khin PIC
bng ngn ng MPASM. Cc bn cn ch thm, nu pha trn ch bin bng 2, cc bn khng
t bin g c, th cc bn c nguyn nh vy, v ngay bn di, cc bn t li a ch
0x0000, n chng nh hng g n chng trnh. Cng ging nh, nu bn khng vit g on
ORG 0x0000 v GOTO MAIN, m bn ngay dng ORG 0x0005 th chng trnh vn chy bnh
thng. n gin l t on 0x0000 n 0x0004, PIC s khng lm g c. Chng ti ang c gng
tng bc hnh thnh cho bn kt cu chng trnh vit bng MPASM, mi ngy mt hon thin
hn, cc bn nm r l do v sao cc chng trnh c vit nh vy, v chng ta cng thng
nht vi nhau im ny khi vit chng trnh. Nu cc bn tin tng vo vic to ra mt chun
vit chng trnh MPASM cho Vit Nam, th cc bn l ngi ang t nn mng cho n. Ti cng
c tham vng ny, cho nn cc quy cch k hiu ti c gng dng mt chun thng nht, v
mong rng cc bn cng ti lm vic ny, sau ny tt c mi ngi khi lm vic cng vi nhau
c th hiu v truyn ti tng mt cch nhanh nht.
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:
;=================================================
ORG
0x0000
GOTO
MAIN
MAIN
LOOP
ORG
===========================
0x0005
BANKSEL TRISB
CLRF
TRISB
MOVLW
MOVWF
D'255'
COUNT_L ; COUNT_L l 1 byte
BANKSEL PORTB
BSF
CALL
BCF
CALL
GOTO
PORTB, 0
DELAY
PORTB, 0
DELAY
LOOP
; t portb l output
;=================================================
; Cc chng trnh con
;=================================================
DELAY
DECFSZ
COUNT_L,
GOTO
DELAY
RETURN
============================
;=================================================
GOTO
$
============================
Su tm v bin son:linhnc308@yhoo.com
============================
F
17
============================
[NHN]
cc cu lnh
RETURN
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:
Code:
Su tm v bin son:linhnc308@yhoo.com
18
Lnh DECFSZ
[File], F/W
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:
Su tm v bin son:linhnc308@yhoo.com
19
Bi 3: Ngt (interrupt)
Gii thiu
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 gii quyt ci s vic xy ra . Cui cng, chng ta li quay tr v
ci ch m chng ta tm dng li lc ny v tip tc cng vic ang lm.
Khi nim ngt ch n gin nh vy, tuy nhin, i vi vi iu khin ni chung, v PIC ni
ring, ngt c th do rt nhiu ngun xy ra, v vi mi ngun ngt khc nhau, chng ta c th
nh trc rng trong ngt chng ta s lm vic g. Cng nh khi i trn b rung, chng ta c
th b b hc, cng c th b tru hc, cng c th b vp cc , cng c th b lt g... V nu
nh b b hc th chng ta chi ng tri, b tru hc chng ta mng ng trng, b vp cc
chng ta t trch mnh xui xo, v n khi vp g... th chng ta v nh thng...
Cc ngun ngt trong PIC:
S lng v loi ngun ngt trong PIC rt a dng, v rt khc nhau mi dng PIC. Do vy
khng th lit k ht ra y tt c cc dng PIC v tt c cc loi ngt trong tng dng c.
Chng ta ch a ra y s tng qut ca cc ngun ngt, v i su vo mt s loi ngt ph
bin.
Su tm v bin son:linhnc308@yhoo.com
20
Su tm v bin son:linhnc308@yhoo.com
21
;=================================================
ORG
0x0000
GOTO
MAIN
ORG
0x0004
GOTO
INTERRUPT
ORG
0x0005
MAIN
; y l phn chng trnh chnh ca cc bn
==================
;=================================================
==================
Su tm v bin son:linhnc308@yhoo.com
22
==================
==================
==================
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
;------------------------------------------MOVWF
for remainder of handler
W_SAVE
SWAPF
CLRF
;W_SAVE(bank unknown!) = W
STATUS, W
STATUS
; force bank 0
MOVWF
STAT_SV
; STAT_SV = swap_nibbles(
MOVF
MOVWF
CLRF
MOVF
MOVWF
; STATUS = 0
PCLATH, W
PCH_SV
; PCH_SV = PCLATH
PCLATH
; PCLATH = 0
FSR,
W
FSR_SV
; FSR_SV = FSR
; 10 cycles from interrupt to
STATUS )
here!
;----------------------------------;Doan chuong trinh ngat
;-----------------------------------
FSR_SV, W
FSR
; FSR =
MOVF
PCH_SV,
MOVWF
PCLATH
SWAPF
STAT_SV,
Su tm v bin son:linhnc308@yhoo.com
FSR_SV
W
; PCLATH = PCH_SV
W
23
STAT_SV )
SWAPF
STATUS
SWAPF
W_SAVE, W
; STATUS = swap_nibbles(
W_SAVE, F
; W = swap(swap( W_SAVE )) (no change
Z bit)
BSF
INTCON, GIE
RETFIE
;=================================================
==================================================
Bi 4. Nt bm
Cc bn va bit khi nim ngt, v bit chng trnh ngt c vit nh th no. Vy
by gi chng ta chuyn n bi tip theo v nt bm.
Cng dng ca nt bm
Nt bm l mt hnh thc ra lnh ph bin nht trn th gii. Bn gi mt ci thang my, bn
bm nt, bn ku ca th bm chung, bn bt n th bm nt cng tc, v ti ang ngi vit
cho bn bng cch bm nt bn phm...
Nh vy, bn bit cng dng ca ci nt bm. By gi cc bn s hc cch lm mt ci
nt bm!!! iu ny c v bun ci, nhng vi vi iu khin, v my tnh, kh nng x l cc
lnh rt a ng. Bn c th bm cng mt nt, nhng lnh s khc nhau mi thi im, v mi
trng thi. V d, nh bn nhp chut my tnh, thc ra cng l bn nhp nt bm, nhng bn
thy r rng rng, nhng v tr di chuyn chut khc nhau, nt bm ca chut s a ra cc
mnh lnh khc nhau cho my tnh thc hin.
Mt s trng thi nt bm thng dng
Trng thi nt bm ra lnh tc thi, l khi bn bm nt, lp tc mi trng thi phi
c kim tra v chng trnh dng li thc hin lnh t nt bm ca bn. C ngha l bn ra
lnh ti thi im bm nt, v my hiu rng bn bm nt. Cn vic x l th no th hi sau
phn gii. Trng thi ch nt bm, l chng trnh bn ang chy, n mt giai on no ,
n cn phi c s ra lnh ca bn bng nt bm, v chng trnh ch bn bm nt chy tip,
hoc bt u mt cng vic no sau khi ch. Nhc li thao tc bm nt mt cht, ci nt ca
bn ang trn cao, bn bm n xung th n s c mt giai on nt bm i xung, khi chm
vo mch in, hin nhin bn mun hay khng mun th cng phi c mt khong thi gian bn
gi cho nt bm tip xc vi mch in, sau l giai on bn th nt bm ra.
Su tm v bin son:linhnc308@yhoo.com
24
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.
y, ti mun tn dc mt cht rng, khi cc bn lm vic v khoa hc k thut, v n
mt khi cc bn kh c th tm ra ng hng suy ngh gii quyt mt vn khoa hc k
thut, hy tm mi lin h vi n trong khoa hc x hi. Chnh v vy, cc bn thng thy ti hay
a ra nhng v d x hi minh ho cho vn k thut cn c gii quyt.
Ti s dnh vic ng dng tng trng thi nt bm ph bin trong cc ng dng cho cc
bn, cn y, ti ch mun nhn bi hc ny tip tc bi hc v interrupt m chng ta b
d trc . Vy chng ta ch xt trng thi khi bm nt, lp tc lnh s c thc hin, tc trng
thi tc thi ca nt bm.
Cc bn hy lm bi tp thc hnh, thc hin mt mch in t nh hnh sau chun b
cho bi hc ca chng ta.
Su tm v bin son:linhnc308@yhoo.com
25
Su tm v bin son:linhnc308@yhoo.com
26
in t c bn
Gii thiu
y l phn rt c bn v in t, m cc bn khi bt u lm vic vi vi iu khin cn
phi nm r. Nh ni, PIC to ra dng in khong 20mA v in p khong 5V, tng t nh
vy, nu dng ng vo qu cao so vi 20mA v in p ng vo qu cao so vi 5V, th PIC s b
h. V vy, bi hc ny trang b cho cc bn mt s khi nim c bn v in t, cc bn c
th nm vng nguyn l thit k mch v tnh ton cc gi tr in tr cn thit. ng l bi hc
ny cn c thc hin ngay t u, tuy nhin, ti cho rng bi tp n LED qu n gin, cc
bn cha bit g cng c th hiu c, nhng nay, nu nh cc bn mi hc v in t v vi iu
khin khng c trang b kin thc c bn ny, c th lm cho cc bn lng tng v mt s im
khng c lm r trong mch in t.
Hin tng tri in p
Cc bn xem hnh sau:
Chng ta cho rng ng vo ca PIC, cng ging nh ng vo ca mt linh kin in t thng dng
l 74HC04. Thay v v mt ci chn PIC, th chng ti v hnh mt con 74HC04 cho n n gin,
v cc bn d hnh dung. Nu mt con PIC ln mt hnh th qu phc tp hnh nh, v li
khng cn thit. Hn na, bi vit ny c tham kho t ti liu Very Basic Circuits ca Encoder,
v trong trang web ny, ngi ta s dng 74HC04 lm th d, ti tn trng v d ny nn khi
vit li bi vit cng s dng 74HC04 ging nh h.
Cc bn thy, nu nh nt bm c nhn xung, th ng vo ca 74HC04 hay PIC c ni vi
Mass. Nh vy, lc PIC c th c gi tr 0. Tuy nhin, nu nt nhn c th ra, chng ta
thy rng ng vo ca PIC chng c ni vi mt linh kin no, vy l in p chn ca PIC s
tri ni khng xc nh c. Nu khng may mn, in p tri ni ny ri vo vng logic 0, ri
li nhy sang vng logic 1... th cc bn thy r rng chng ta khng th xc nh c nt bm
c c bm hay khng?!!
V vy, m bo, nu khi khng bm nt, PIC phi c in p tham kho l 5V, sau khi bm
nt th in p s gim xung 0V, nh vy mc logic mi tht r rng, khng th tri ni nh
hnh trn. Vy chng ta c hnh di y
Cng dng ca in tr ko ln
Cc bn li thy, nu by gi khng bm nt, th in p ng vo ca PIC s l 5V. Nhng
nu bm nt mt ci, r rng chng ta gy ra ngn mch khi ni trc tip t ngun xung t.
Chnh v vy, chng ta phi a thm vo mt in tr gia t, nt bm v ngun.
Su tm v bin son:linhnc308@yhoo.com
27
(H.a)
(H.b)
Vy vn cn li l gi tr in tr bng bao nhiu?
Cc bn s thy, PIC hot ng 20mA v 5V trn cc chn. V vy, khi cha bm nt, ngun 5V
c ni vi in tr v i vo chn ca PIC. Nu nh trong mt trng hp no chn ca PIC
chuyn t ch input sang output, th vn xy ra l dng trn chn phi m bo nh hn
hoc bng 20mA. Nh vy, trong thit k trn, chng ta xem dng ti chn PIC nu PIC t 0V
l:
I = U/R = 5V/ 10000 Ohm = 5mA
Nh vy, thit k ny m bo cho hot ng ca PIC c an ton.
Khi ng nt bm dng 5mA ny s i xung t, v chn ca PIC c ni vi t.
Cc bn xem tip hnh sau(H.b)
Trng hp ny, nt bm c ni vi ngun 5V. in tr ni gia chn ca PIC vi t s khng
lm cho PIC c hin tng tri ni in p, v khi ng nt bm th dng vn 5mA.
Tng kt:
Qua bi hc ny, cc bn hiu c c bn v khi nim in tr ko ln (trng hp in tr
ni vi ngun), v in tr ko xung (trng hp in tr ni vi t). Gi tr in tr c t
y nhm loi b hin tng ngn mch, v m bo ng vo ca PIC khong 20mA. Khi an ton,
cn thit k sao cho ng vo nh.
To be continue
Su tm v bin son:linhnc308@yhoo.com
28