Professional Documents
Culture Documents
TNG CC DY NGH
D n gio dc k thut v dy ngh (VTEP)
GIO TRNH
VI IU KHIN NNG CAO
M s : CIO 02 27 02
H NI 2004
Tuyn b bn quyn
Ti liu ny thuc loI sch gio trnh
Cho nn cc ngun thng tin c th c
php dng nguyn bn hoc trch dng
cho cc mc ch v o to v tham kho
MI mc ch khc c lch lc hoc
s dng vI mc ch kinh doanh thiu
lnh mnh s b nghim cm
Tng cc dy ngh s lm mI cch
bo v bn quyn ca mnh
a ch lin h
D n gio dc k thut v ngh nghip
Tiu ban pht trin chng trnh hc liu
M ti liu :
M quc t ISBN :
LI TA
Ti liu ny l mt trong cc kt qu ca d n GDKT DN c ti tr bi ngn
hng pht trin chu cho cc trng k thut trng im ton quc trc thuc tng cc
dy ngh.
Ti liu c son l mt gio trnh phc v cho i tng cng nhn ngh sa
cha in t cng nghip. Do , trnh t ni dung c sp xp t d n kh nhm
gip ngi hc tip thu mt cch d dng. ng thi i km vi ti liu cn c s tay
hng dn dnh ring cho gio vin trong ngh cc bc thc hin qu trnh ging
dy mt cch nht qun t to iu kin cho gio vin khai thc ni dung gi trnh mt
cch tt nht
i ng bin son l nhm CDC ca trng cng nhn k thut cn th, ni dung
ca ti liu l s kt hp gia yu cu o to vi tnh hnh cng ngh hin ti trong thc
t sn xut v cng c tham kho theo tnh hnh ging dy ti cc trng k thut
cng nh cc c s o to ngh c lin quan.
Ti liu ny c thit k theo tng m un/ mn hc thuc h thng m un/ mn
hc ca mt chng trnh o to hon chnh ngh sa cha thit b in t cng nghip
cp trnh 3 v c dng lm gio trnh cho hc vin trong cc kha o to.
Ngoi ra, ti liu cng c th c s dng cho o to ngn hn hoc cho cc
cng nhn k thut, cc nh qun l v ngi s dng nhn lc tham kho.
y l ti liu th nghim s c hon chnh tr thnh chnh thc trong h
thng dy ngh.
H Ni, ngy
thng
nm 2005
Gim c D n quc gia
MC LC
LI TA.............................................................................................................................. 3
MC LC ............................................................................................................................ 4
GII THIU V M UN ................................................................................................... 8
V tr, ngha, vai tr m un........................................................................................... 8
Mc tiu ca mdun ........................................................................................................ 8
Mc tiu thc hin ca m un ....................................................................................... 8
Ni dung chnh ca m un............................................................................................. 8
S QUAN H THEO TRNH T HC NGH ............................................................. 9
CC HNH THC HC TP CHNH TRONG M UN................................................... 10
BI 1: NGN NG LP TRNH C51 ................................................................................ 11
GII THIU....................................................................................................................... 11
MC TIU THC HIN .................................................................................................... 11
NI DUNG CHNH ............................................................................................................ 11
1. KHI NIM C BN V ANSI-C .................................................................................. 12
1.1 Tp k t dng trong ngn ng C ........................................................................... 12
1.2 T kha ................................................................................................................... 12
1.3 Tn........................................................................................................................... 12
2. KIU D LIU .............................................................................................................. 13
2.1 Kiu char.................................................................................................................. 13
2.2 Kiu nguyn............................................................................................................. 13
2.3 Kiu du phy ng................................................................................................. 13
2.4 Kiu ENUM (lit k) ................................................................................................. 14
3. HNG ............................................................................................................................ 14
3.1 Hng du phy ng ............................................................................................... 14
3.2 Hng s nguyn....................................................................................................... 14
3.3 Hng k t ............................................................................................................... 15
3.4 Hng xu k t ........................................................................................................ 15
3.5 Tn hng.................................................................................................................. 15
4. BIN .............................................................................................................................. 16
5. MNG............................................................................................................................ 16
6. TYPEDEF...................................................................................................................... 18
7. CC LOI BIN ............................................................................................................ 18
7.1 Bin t ng ............................................................................................................ 18
7.2 Bin ngoi................................................................................................................ 19
7.3 Bin tnh................................................................................................................... 20
8.TON T ....................................................................................................................... 20
8.1 Ton t gn ............................................................................................................. 20
8.2 Ton t cng ........................................................................................................... 21
8.3 Ton t tr............................................................................................................... 21
8.4 Ton t nhn ........................................................................................................... 21
8.5 Ton t chia............................................................................................................. 21
8.6 Ton t modulus...................................................................................................... 21
8.7 Ton t tng / gim ................................................................................................. 22
8.8 Ton t gn phc hp............................................................................................. 22
8.9 Ton t sizeof.......................................................................................................... 22
8.10 Ton t p kiu...................................................................................................... 22
9. BIU THC V CU LNH.......................................................................................... 23
9.1 Biu thc ................................................................................................................. 23
9.2 Biu thc hng ........................................................................................................ 23
9.3 Cc cu lnh............................................................................................................ 23
9.4 Cu lnh phc hp (khi lnh) ................................................................................ 24
4
8.14 V tr ID .................................................................................................................120
8.15 Lp trnh ni tip trong h thng ..........................................................................121
9. TP LNH ...................................................................................................................121
TI LIU THAM KHO....................................................................................................145
GII THIU V M UN
Mc tiu ca mdun
Sau khi hon tt m-un ny, hc vin c nng lc:
Hiu, gii thch c nguyn l lm vic cc h iu khin ng dng vi
iu khin AVR
Ci tin c chc nng ca h iu khin nhng theo yu cu
Pht trin c cc h iu khin trn c s khi trung tm l vi iu
khin
Ni dung chnh ca m un
M un ny bao gm 3 bi hc nh sau :
1. Ngn ng C51
2. Vi iu khin AT90S8535
3. Vi iu khin PIC16F8x
K thut xung
Vi iu khin 1, 2
in K Thut
K thut s
L kin in t
kh l tr plc
U VO
O L
Vi mch PLD
U RA
Thc hnh PLC
MCH IN T
K.T. Cm bin
Cc mn hc chung
Ch to
Trang b in
X l li
Chnh tr
V IN
My in
profibus
PHP LUT
IN C BN
QuC NG
Mch T nng
cao
TH CHT
TIN HC
TKM in-in t
T chc sn
ANH VN
Vi x l
Hai mun b tr
Atl
BI 1
Tn bi:
M bi:
CIO 02 27 01
GII THIU
Bi ny trnh by v cng c phn mm h tr pht trin cc ng dng trn nn h
8051 l trnh dch C51, trnh lin kt L51 v trnh qun l th vin LIB51. Trnh dch
C51 l trnh dch ngn ng ANSI-C m rng vi h 8051 cng ging cc ngn ng lp
trnh cp cao khc do c tnh gn gi vi ngn ng t nhin nn gip n ha qu trnh
phn mm t to kh nng thc hin c nhng yu cu phc tp nhanh chng hn
so vi hp ng. y l mt kin thc b sung rt cn thit cho nhng ngi tng
quen thuc vi vic lp trnh vi iu khin bng hp ng.
Ni dung bi gm c l thuyt v thc hnh trn b thc tp UNIKIT, bi tp trong
phn ny l cc chng trnh hon chnh c th c np vo EPROM thc hin
NI DUNG CHNH
Ni dung bi hc tp trung v cc ch chnh nh sau:
Gii thiu chung v ngn ng ANSI-C
Khun dng mt chng trnh vit bng C, cu trc dng lnh
Cc ton t s hc, logic v cc ton t c bit khc
Cc ch dn v cc iu khin bin dch ca C51
Cc m rng ph hp vi iu khin 8051
Quy tc gi hm
Giao tip gia C51 vi hp ng
Hot ng lin kt, trnh lin kt L51
Chc nng trnh qun l th vin LIB51
Cc v d lp trnh bng C51 v to chng trnh thc thi bng L51
11
1.2 T kha
T kha l nhng t c mt ngha hon ton xc nh, thng c dng khai
bo cc kiu d liu, vit cc ton t v cc cu lnh. Sau y l cc t kha ca C:
asm
break
case
cdecl
char
const
continue
default
do
double
else
enum
extern
far
float
for
goto
huge
if
int
interrupt
long
near
pascal
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
ngha v cch x dng chng s c bn n cc phn sau, c hai im cn
lu , l:
Khng c dng t kha t tn cho cc hng, bin v hm
T kha phI c vit bng ch thng
1.3 Tn
Tn l mt khi nim rt quan trng, c dng xc nh cc I lng khc
nhau trong mt chng trnh nh tn hng, tn bin, tn hm..
Tn c t theo cu trc nh sau:
Tn l mt dy k t: Ch, s v du gch ni. K t u ca tn phI l ch hoc
du gch nI, di mc nh ca tn l 32, cc v d ng v tn:
A_1
BETA
x1
delta_7_x1
Cc tn sau l sai
3XYZ_7
(k t u tin l s)
r#3
(x dng k t #)
f(x)
(x dng du ngoc trn)
case
(trng vI t kha)
be ta
(x dng khong trng)
X-1
(x dng du gch ngang)
12
2. KIU D LIU
Trong C x dng cc kiu d liu sau: S nguyn (int), s thc hay s du phy
ng (float), s du phy ng c chnh xc kp (double) v k t (ch). Hng chnh l
mt gi tr thng tin c th, bin v mng l cc I lng mang tin. MI loI bin c th
cha mt dng thng tin no VD bin kiu int cha cc s nguyn, bin kiu float
cha cc s thc. c th lu tr c thng tin bin phI c cp pht b nh, bin
lI c chia thnh bin tnh, bin t ng v bin ngoi.
Bin t ng ch tn tI (c cp pht b nh) khi chng ang c x dng, bin
ngoi v tnh tn tI trong sut thI gian hot ng ca chng trnh. Cch t chc nh
vy va tit kim b nh va cho php x dng cng mt tn cho cc I tng khc
nhau m khng gy ra nhm ln.
M ASCII
048
049
050
065
066
097
098
C hai kiu char l: Signed char v unsigned char. Kiu th nht biu din mt s
nguyn t -128 n +127, kiu th hai c gi tr t 0 n 255
C th chia 256 k t thnh 3 nhm:
Nhm th nht l cc k t iu khin c m t 0 n 31, cc k t trong nhm
ny khng hin th ra mn hnh.
Nhm th hai l cc kl t vn bn c m t 32 n 126, cc k t ny c th
a ra mn hnh v my in.
Nhm ba l cc k t ha c m t 127 n 255 c th a ra mn hnh.
Kch thc
2 byte
2 byte
4 byte
4 byte
Kch thc
4 byte
8 byte
13
Long double
3.4E-49321.1E+4932
10 byte
type_name
E1, e2,
Var_name
ngha:
Dng th nht c 3 chc nng sau
1. nh ngha cc macro (ging nh #define) e1, e2,vi cc gi tr nguyn lin
tip tnh t 0 (e1 = 0, e2 = 1), chc nng ny tng ng cc cu lnh:
#define e1 0
#define e2 1
2. nh ngha kiu enume c tn l type_name
3. Khai bo cc bin kiu enume c tn l var_name1, var_name2
Dng th hai c chc nng 1 v 2, dng th ba c chc nng 1 v 3 v dng th t
ch c chc nng 1
Bin kiu enum thc cht l bin nguyn, n c cp pht 2 byte b nh v c th
nhn mt gi tr nguyn bt k. Mc ch ca enum l to ra macro, cc kiu v cc bin
gi nh. VD cc ngy trong tun c th nh ngha thng qua kiu week_day v bin day
nh sau:
Enum week_day
Saturday} day;
3. HNG
Hng l cc I lng m gi tr ca n khng thay I trong qu trnh tnh ton,
cc loI hng x dng trong C gm c:
4007
635
hoc
-4893l
3.3 Hng k t
L mt k t ring bit c vit trong hai du nhy n. VD: a, gi tr ca a
chnh l m ASCII ca ch a. Nh vy, gi tr ca a l 97. Hng k t c th tham gia
vo cc php ton nh mI s nguyn khc.VD:
9 0 = 57 48 = 9
I vI cc hng k t c bit phI dng cch vit sau:
Cch vit
\
\
\\
\n
\0
\t
\b
\r
\f
K t
\
xung dng
\0 (null)
tab
backspace
CR (v u dng)
LF (sang trang)
3.4 Hng xu k t
L mt dy k t bt k t trong hai du nhy kp. V d:
H Ni
Hi Phng
(xu rng)
Xu k t c lu tr trong my di dng mt mng c cc phn t l cc k t
ring bit. Trnh bin dch t ng thm k t null vo cui mi xu bo kt thc xu.
Lu a l hng k t c lu tr trong 1 byte cn a l hng xu k t c lu
tr trong 1 mng gm hai phn t: Phn t th nht cha ch a v phn t th hai cha
\0
3.5 Tn hng
Tc dng ca ton t
15
4. BIN
Mi bin cn phi c khai bo trc khi s dng, mu khai bo nh sau
Type
var_name;
V d:
Main ( )
{
int
a, b, c; /* 3 bin kiu integer */
char d, e, f; /* 3 bin kiu char */
float
x, y, z; /* 3 bin kiu float */
.
}
Bin kiu int ch nhn cc gi tr int, cc bin kiu khc cung c c tnh tng t, v
d bin kiu char ch cha mt k t, lu tr mt xu k t cn phi dng mt mng
kiu char
Cc khai bo bin phi t ngay sau du { u tin ca thn hm v phi ng
trc mi cu lnh khc.
Cc bin c th c khi gn ngay khi khai bo bng cch t thm du = km
theo mt gi tr V d:
Int
a, b = 20, c, d = 40;
Kt qu ny cng tng ng bng cc cu lnh gn sau:
Int
a, b, c, d;
b = 20;
d = 40;
5. MNG
Mi bin ch c th biu din c mt gi tr. biu din mt dy s hoc mt
bng s c th dng nhiu bin nhng cch ny khng thun tin khi s gi tr qu nhiu,
cch tt nht l s dng mng trong nhng trng hp nh th ny.
16
a[10], b[4][2];
x[5], y[3][3];
S xc nh 4 mng: a, b, x v y nh sau:
- Mng th nht c kiu l int, tn l a, s chiu l 1, kch thc l 10. Mng
gm 10 phn t c s th t l: a[0], a[1], a[2],,a[9]. Mi mt phn t a[i]
cha mt gi tr int v mng ny biu din mt dy gm 10 s nguyn.
- Mng th hai c kiu l int, tn l b, s chiu l 2, kch thc cc chiu l 4
v 2. Mng gm 8 phn t c nh s v sp xp nh sau:
b[0][0]
b[1][0]
b[2][0]
b[3][0]
b[0][1]
b[1][1]
b[2][1]
b[3][1]
y[0][1]
y[1][1]
y[2][1]
y[0][2]
y[1][2]
y[2][2]
l a[2]
l b[3][0]
l x[0]
l y[2][1]
17
6. TYPEDEF
T kha typedef c dng t tn cho mt kiu d liu, tn kiu li c dng
khai bo kiu d liu sau ny. Nn chn tn ngn gn v gi nh
t typedef trc mt khai bo thng thng, khi tn d liu s tr thnh tn
kiu. VD:
Typedef int nguyen;
S t tn kiu d liu int l nguyen, t lc ny tr i c th dng int hoc nguyen
khai bo bin nh sau:
Nguyen x, y, a[10], b[20][30];
Cc v d tng t
typedef float mt[50]; // t tn mng thc 1 chiu 50 phn t l m50
typedef int m_20_30[20][30]; // mng nguyn 2 chiu 20 hng 30 ct tn l
m_20_30
typedef enum {T1, T2, T3} T; // kiu enum c 3 phn t {T1, T2, T3} c tn l T
Sau , c th dng cc tn ny khai bo
mt50 x, y; // cc mng thc 1 chiu c 50 phn t
m_20_30 a, b; // cc mng nguyn 2 chiu 20x30
T t; // t l bin enum
7. CC LOI BIN
Bin l mt i lng cha d liu v d liu ny b thay i trong sut thi gian
chy chng trnh, cc bin c nhn dng thng qua tn bin, bin phi c khai
bo trc khi em ra s dng, mi bin phi thuc v mt kiu d liu.
7.1 Bin t ng
Cc bin khai bo bn trong cc hm l cc bin t ng hay bin cc b. i ca
hm cng c xem l bin t ng.
18
3.
V d:
float x[8] = {6.3, 12.5} ;
4.
V d:
float a[ ][3] = {
{0},
{2.5, 3.6, 8},
{-6.3}
};
19
5.
-
V d:
char name[ ] = {h, a, n, g, \0} ;
char name[ ] = hang ;
8.TON T
Ton hng (operand) c th xem l mt i lng c mt gi tr no v d: Hng,
bin, mng v hm. Ton l l cc php ton tc ng ln cc ton hng. Trong C ton
hng c chia thnh cc nhm chnh nh sau:
- Ton t s hc (arithmatic operator)
- Ton t quan h (relative operator)
- Ton t logic (logical operator)
- Ton t x l bt (bitwise operator)
Ngoi ra, C cn gii thiu thm 2 ton t mi l:
- Ton t tng (incrementing operator)
- Ton t gim (decrementing operator)
8.1 Ton t gn
Theo C k hiu = khng c ngha l bng, k hiu ny c gi l ton t gn
(assignment operator), ton t gn c gi l gn n (single assignment) phn bit
vi gn phc hp (compound assignment)
lulu = 2002 ;
Gn gi tr nguyn 2002 cho bin tn l lulu, ton t gn cho php gn mt tr mi
cho mt bin. Dng n gin nht l:
bin = biu thc ;
Ngha l biu thc bn phi du = s c nh tr v kt qu nh tr s c
gn cho bin pha tri du =. Ni cch khc bn tri du = phi l bin ch khng
c l hng cn bn phi l tr ca bin, xem cu lnh sau
I=I+1;
20
8.3 Ton t tr
ton t tr ly gi tr trc du tr i gi tr sau du tr
tien_dem_ve = thu_nhap tien_hoi_lo
Du tr cn c dng thay du i s ca mt gi tr. V d:
toto = -12 ;
lili = - toto ;
Du tr c dng theo cch ny c gi l ton t mt ngi v n ch cn mt
ton hng
21
hoc
hoc
toto++
kiki
22
kiu thng qua ton t p kiu bng cch t trc ton hng cn chuyn kiu d liu
mun chuyn trong ngc n., c php chung nh sau:
(kiu d liu) biu thc
x = (float) I / j ; d liu bin I c chuyn thnh float
a = 1.5 + 1.5
kt qu a l 3.0
a = (int) 1.5 + (int) 1.5 kt qu a l 2
9.3 Cc cu lnh
Chng trnh l mt tp hp cc cu lnh, mi cu lnh c kt thc bi du
chm phy. i vi my cu lnh l mt ch th y
tay = 2
l mt biu thc hoc c th l thnh phn ca mt biu thc ln hn, nhng
tay =2 ;
23
10. HM TRONG C
Mt chng trnh C gm mt hoc nhiu n th chng trnh c gi l hm
(function) ghp li, thng hm tr v cho chng trnh mt tr sau khi c thc hin.
Hm cho php chia mt chng trnh ln thnh nhng chng trnh nh nhm d
qun l v do lm n gin ha cng vic lp trnh. Ngoi ra, mt hm hot ng tt
chng trnh ny c th c ghp vo mt chng trnh khc m khng cn phi vit li
t u nn gip gim thi gian pht trin chng trnh. Hm c chia lm 2 loi:
- Hm do ngi dng vit gi l user defined function (UDF). y l nhng
hm thc hin cc cng vic c th no ti nhiu ni trong chng trnh
- Hm th vin chun ca C nh hm printf ( ). C cung cp mt s hm th
vin chun kh phong ph tnh ton, x l chui, x l bt, xut nhp d
liu
10.1 Cu trc ca hm
c im chung ca hm:
1.
c t chung trong cng mt file chng trnh ngun hoc ghp t mt
file ngun khc nh ch th #include hoc c bin dch ring r sau
lin kt li to thnh file thc thi c.
2.
c gi t chng trnh chnh main ( ) hoc t mt hm khc hoc t
chnh n ( quy)
24
3.
4.
5.
6.
Mt s lu i vi hm trong C:
1.
Khng cho php cc hm lng nhau c ngha l khng c nh ngha
mt hm trong mt hm khc
2.
Cc i mc thc s ca hm ch c th chuyn bng tr c ngha l tr ca
i mc c sao chp vo mt bin tm c gi l i mc hnh thc v
hm thao tc trn bin tm
Dng tng qut ca mt hm nh sau:
Kiu
{
nh hn
ln hn
nh hn hoc bng
ln hn hoc bng
bng
!=
khng bng
Trong C ton t bng dng k hiu == phn bit vi k hiu gn =. Ngoi ra, k
hiu <=, >=, != gm hai k hiu lin tip nhau nn khng c c khong trng gia.
Cc ton t quan h trn l ton t hai ngi ngha l hot ng da trn hai biu
thc hai bn ton t v dn n kt qu logic l true hoc false
AND
OR
NOT
Gi s mun chng trnh chuyn hng khi tha mn cng lc hai iu kin th
phi dng ton t AND
If (phai == 1 && tuoi >= 65)
Phu_nu_gia++ ;
Lnh if trn c 2 iu kin: iu kin gii tnh phi l n (phai == 1), iu kin th
hai l tui phi ln hn hoc bng 65 (tuoi >= 65). Hai biu thc ny phi c nh tr
trc v ton t == v >= c mc u tin cao hn && v sau mi phi hp vi ton t
&& cho ra tr cui cng nu kt qu l true th tng bin phu_nu_gia ln 1
Ton t && v || thuc loi ton t hai ngi, ngha l hot ng trn hai biu thc
a n mt tr hoc true hoc false. C hai ton t ny xem cc ton hng nh l tr
logic.
Ton t ph nh (!) l ton t mt ngi. Mt s biu thc dng ton t ! nh sau:
!5
!0
!t
3 + !x
!!5
!!0
11.4 Cu trc lp
a s chng trnh my tnh u lin quan n vic thi hnh lp i lp li mt nhm
lnh cho n khi mt iu kin chm dt no c tha mn. C hai cch iu
khin vng lp.
27
1.
2.
Theo cch th nht, s ln thc hin vng lp s c bit trc cn theo cch th
hai th s ln lp s khng bit trc v c th l v hn.
Vi phng php th nht cn phi c mt bin iu khin dng nh mt ci m
m s vng lp thc hin, bin ny thng c tng 1 sau mi vng lp, khi tr
ca bin t tr t trc th vng lp ngng li, quyn iu khin s c trao cho lnh
k tip ngay sau vng lp.
Phng php th hai ch c s dng khi:
- S ln lp khng bit trc.
- Trong thn vng lp c lnh c tr canh chng mi ln vng lp c thi
hnh
11.4.1 Vng lp iu khin bng bin m
Vng lp ny i hi:
1. Tn ca bin iu khin.
2. Mt tr khi u gn cho bin m.
3. Nc tng m bin m s b thay i mi khi vng lp c thi hnh. Nc tng
mc nh l 1.
4. iu kin trc nghim tr cui cng ca bin m quyt nh tip tc hoc
ngng vng lp.
V d:
(1)
(2)
(3)
(4)
(5)
(6)
#include <stdio.h>
main ( )
{
int cai_dem = 1;
while (cai_dem <= 10) {
printf (%d\n, cai_dem) ;
cai_dem++ ;
}
}
: L t kha
: L biu thc gn tr khi u cho bin m.
: Biu thc iu kin cho ra tr true hoc false.
: L nc tng ca bin i khin.
: Thn vng lp.
Loi
A
B
C
D
E
F
loi = F ;
11.5.2 Lnh switch
Nh trong v d trn cho thy vic s snh tr ca mt bin vi cc tr khc nhau
c xy ra nhiu ln, thun tin C a ra mt lnh c bit cho mc ch ny l
lnh switch, switch c ngha l bt chuyn qua li, switch c hnh dung nh l mt
cng tc xoay nhiu v tr. C php nh sau:
switch (biu thc)
{
case biu_thc_hng_1:
lnh 1a ;
lnh 1b ;
case biu_thc_hng_2:
lnh 2a ;
lnh 2b ;
.
case biu_thc_hng_n:
lnh na ;
lnh nb ;
default:
lnh da ;
lnh db ;
}
Biu thc iu kin trong du ngoc s c nh tr, kt qu nh tr phi l kiu
nguyn k c kiu char. Cc biu thc hng tng trng hp sau t kha case
(thng c gi l case labels) cng phi l mt s nguyn v khng th c hai s
nguyn trng nhau.
Khi thc hin lnh switch th trc tin biu thc nm sau t switch c nh tr.
Tr kt qu sau c em so snh vi tng case label, nu bng nhau th quyn iu
khin s c trao cho lnh u tin trong nhm case label ny v tt c cc lnh k t
y cho n cui switch s c thi hnh. V d:
n=2;
switch (n)
{
case 1: printf (mt\n) ;
case 2: printf (hai\n) ;
case 3: printf (ba\n) ;
case 4: printf (bn\n) ;
default: printf (default\n) ;
}
printf (cui switch\n) ;
Biu thc iu kin y l tr ca n = 2. Kt qu chng trnh nh sau:
hai
ba
bn
default
cui switch
31
Lnh trong case label c th l mt lnh rng. Nu khng c biu thc hng ca
case label no bng vi tr ca biu thc iu kin th cc lnh ca default s c thi
hnh. Trong v d trn nu n = 7 th kt qu s nh sau
default
cui switch
T default v cc lnh lin quan l ty chn c ngha l khng c cng c. Nu
tr ca biu thc iu kin khng bng vi bt ca biu thc hng no v trong trng
hp ny cng khng c default th cc lnh trong switch s khng c thi hnh.
11.5.3 Lnh break
Nh trnh by trn khi quyn iu khin trao v cho trng hp case label
bng vi tr ca biu thc iu khin, th vic thi hnh s bt u t cho n cui
switch. Tuy nhin, thng thng lnh switch c s dng nh l mt phng thc la
chn nhiu chiu. Mt khi quyn iu khin c trao cho mt case label th ch nhng
lnh thuc case label ny c thi hnh ri nhy v cui switch b qua nhng lnh ca
cc case label khc. Vic ny c thc hin bng cch t tip theo sau lnh cui trong
case label mt lnh break. V d:
n=3;
switch (n)
{
case 1: printf (mt\n) ; break ;
case 2: ;
case 3: printf (hai hoc ba\n) ; break ;
case 4: printf (bn\n) ; break ;
}
printf (cui switch\n) ;
s cho kt qu nh sau:
hai hoc ba
cui switch
Thc ra trong case 4 khng cn lnh break
32
Vit tt
Mc nh
[NO]LISTINCLUDE
[NO]SYMBOLS
[NO]PREPRINT
[NO]CODE
[NO]PRINT
[NO]COND
PAGELENGHT
PAGEWIDTH
[NO]DEBUG
SMALL
COMPACT
LARGE
[NO]INTVECTOR
[NO]OBJECT
OBJECTEXTEND
ROM
[NO]EXTEND
SAVE
RESTORE
OPTIMIZE
[NO]LC
[NO]SB
[NO]PP
[NO]CD
[NO]PR
[NO]CO
PL
PW
[NO]DB
SM
CP
LA
[NO]IV
[NO]OJ
OE
OT
NOLC
NOSB
NOPP
NOCD
PR(file name)LST
CO
PL(69)
PW(80)
NODB
SM
IV
OJ(file name.OBJ)
ROM(LARGE)
EXTEND
OT(5,speed)
File
ngun
YES
YES
NO
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
Dng
lnh
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
NO
NO
YES
Loi
S cp
S cp
S cp
S cp
S cp
S cp
S cp
S cp
S cp
S cp
S cp
S cp
S cp
S cp
S cp
S cp
S cp
Th cp
Th cp
Th cp
33
EJECT
[NO]REGPARMS
REGISTERBANK
[NO]AREGS
DISABLE
DEFINE
EJ
[NO]RP
RB
[NO]AR
DF
RP
RB(0)
AR
YES
YES
YES
YES
YES
YES
NO
YES
NO
YES
NO
YES
Th cp
Th cp
Th cp
Th cp
Th cp
Th cp
SYMBOLS
Hng dn ny bo cho trnh dch C a vo mt danh sch tt c cc k hiu
x dng.
Mc nh: NOSYMBOLS
Vit tt: SB, NOSB
V d:
C51 VD.C51 SB
#pragma SYMBOLS
PREPRINT
Ra lnh cho C to mt file lit k c tn ging file ngun vi phn m rng l .LI.
Trong khng c phn ghi ch v cc ch th tin x l, c th thay i tn file lit k
bng c php PREPRINT (name). Thng s ny ch c gi trong dng lnh.
Mc nh: NPEPRINT.
Vit tt: PP, NOPP.
V d:
C51.VD.C51 PP (test.LI)
CODE
Dch ra m assemler ca tng lnh C tng ng trong file lit k
Mc nh: NOCODE.
Vit tt: CD, NOCD.
V d:
C51 VD.C51 CD
#pragma CODE
PRINT
Thng thng trnh dch C to ra mt danh sch v t trong file source.LST vi
thng s PRINT (name.ext) c th to danh sch ny trong mt file bt k.
Mc nh: PRINT (source.lst)
Vit tt: PR, NOPR
V d:
C51 VD.C51 NOPR
#pragma PRINT (listing.prn)
COND
34
V d:
C51 VD.C51 PW (80)
#pragma PW (75)
DEBUG
Trnh dch C s thm cc thng tin g ri vo file i tng nh: S th t dng v
cc k hiu phc v cho qu trnh tm li chng trnh v sau
Mc nh: NODEBUG
Vit tt: DB, NODB
V d:
C51 VD.C51 DB
#pragma DEBUG
SMALL / COMPACT / LARGE
Cc hng dn iu khin ny thit lp kiu b nh cho vng nh d liu
SMALL: t tt c cc bin trong vng nh ni
COMPACT: Tt c cc bin c t trong b nh ngoi v p dng
cch nh a ch ngn truy cp (MOVX @R0 / R1), ln vng d liu
c gii hn trong phm vi 256 byte (1 trang)
35
Mc nh: SMALL
V d:
C51 VD.C51 LA
#pragma COMPACT
INTVECTOR
Trnh dch C to ra vect ngt cho mi phc v ngt ti v tr tng ng
Mc nh: INTVECTOR
Vit tt: IV, NOIV
V d:
C51 VD.C51 NOIV
#pragma NOINTVECTOR
OBJECT
iu khin OBJECT (file name) bo cho C to ra file i tng c tn mong mun.
Gi tr mc nh l tn v ng dn ca file ngun vi phn m rng l .OBJ
Mc nh: OBJECT (source.obj)
Vit tt: OJ, NOOJ
V d:
C51 VD.C51 OJ (test.obj)
#pragma NOOJ
OBJECTEXTEND
Thm vo thng tin v kiu ca cc k hiu trong file i tng (nh dng INTELOMF), thng tin ny gip cho vic hin th cc bin c r rng hn trong trnh g ri
Mc nh: Khng c thng tin m rng
Vit tt: OE
V d:
C51 VD.C51 OE
#pragma OBJECTEXTEND
EXTEND
Cho php trnh dch C m rng cc lnh c bit C51 trong mi trng ANSI C
Mc nh: EXTEND
Vit tt: Khng c.
V d:
36
V d :
#pragma AREGS
; Lnh hp ng
PUSH AR6
PUSH AR7
#pragma NOAREGS
; Lnh hp ng
MOV
PUSH
MOV
PUSH
A, R6
ACC
A, R7
ACC
DISABLE
iu khin DISABLE phi c t trc mt hm cm tt c cc ngt trong
thi gian thc hin hm. Hm c th khng tr v gi tr bt do PSW c ct khi gi hm
Mc nh : Khng c
Vit tt : Khng c
V d :
#pragma DISABLE
/* cm tt c cc ngt */
void wait_5mS(void)
{
/* ct PSW */
unsigned int zaehler ;
for (zaehler = 0 ; zaehler < 5000 ; zaehler++)
; /* trng */
/* phc hi PSW */
}
void main(void)
{
/* chng trnh chnh */
wait_5mS( ) ;
/*..*/
}
DEFINE
Qu trnh tin x l c th c iu khin bi DEFINE. Ch dn ny c thc
hin trc khi bin dch. Qu trnh tin x l c th x l cc lnh tip theo sau
#define NH DANH BIU THC nh ngha mt tn cho biu thc sau tn
ny khi c trong file ngun s c thay bng biu thc ingh ngha
#undef NH DANH xa nh danh
defined (NH DANH) to ra nu #if- hoc #elif- lnh NG hoc khng to ra
nu SAI
#if BIU THC. Nu tha mn iu kin th dch on chng trnh theo sau
#elif BIU THC nu iu kin trc #if-lnh SAI v iu kin ca #elif-lnh
c tha th dch on chng trnh theo sau
39
#else nu iu kin trc #if-lnh hoc #elif-lnh SAI th bin dch on chng
trnh theo sau
#ifdef NH DANH nu nh danh nh ngha th dch on chng trnh theo
sau
#ifndef NH DANH nu nh danh khng c nh ngha th dch on
chng trnh theo sau
#endif phi c t sau mi pht biu #if. Nn lu n k t hoa hoc
thng khi vit INH DANH v BIU THC
Mc inh : Khng c
Vit tt : DF
V d :
#define ENDLOS while(1) ; /* vng lp ENDLOS */
ENDLOS
/* ng dng nh danh */
#define DEMO
#ifdef DEMO
#include <demo.h>
#else
#include <profi.h>
#endif
40
FFFFh
FFFFh
idata
sfr
sfr16
sbit
80h
xdata
80h
7Fh
data
idata
30h
2Fh
code
FFh
bit/sbit/bdata
Data/idata
pdata
20h
1Fh
00h
RB0-3
data/idata
00h
0000h
RAM ni
0000h
RAM ngoi
B nh chng trnh
41
V d :
Static data char counter ;
Extern xdata int loop_count ;
Idata char string1[20] ;
Bit alarm ;
CODE
Cc bin c nh ngha vi kiu b nh CODE ch cho php c, cung x nh
cc hng s, chng c t trong b nh chng trnh ca vi iu khin.
V d :
Static code char error[ ] = { phim khong cho phep } ;
Code int MAX_COUNT = 10 ;
BIT
Cc bin kiu BIT c trnh dch a vo b nh trong t a ch 20h n 2Fh,
chng ch thch hp vi cc kiu b nh DATA, BDATA v IDATA, khng cho php nh
ngha bin bt cho con tr (bit *bit_ptr ;) cng khng c nh ngha mng con tr (bit
bit_array[4] ;)
V d :
Extern bit Y_N ;
Static data bit back_light ;
DATA
Cc bin c kiu b nh DATA c t trong b nh d liu ni t a ch 00h n
7Fh, v vng nh ny rt hp v i vi hu ht cc h vi iu khin 8051 khng tn ti
vng nh bt u t a ch 80h, nn ngn xp cng c t trong vng nh ny nn
y ch thng c dng cho cc bin V d : B m v con tr.
V d :
Data char *string_ptr ;
Data char counter ;
BDATA
Vi cc bin c nh ngha kiu BDATA, chng c trnh dch t vo b nh
ni t a ch 20h n 2Fh, kiu b nh ny khng c dng trong cc cu trc.
V d :
Bdata char bitfield ;
Sbit bit0 = bitfield^0 ;
Sbit bit1 = bitfield^1 ;
Sbit bit2 = bitfield^2 ;
Sbit bit3 = bitfield^3 ;
IDATA
Cc bin kiu IDATA c t b nh d liu trong t a ch t 00h n 7Fh.
Vi cc vi iu khin c b nh d liu trong l 256 byte th vng a ch t 80h n FFh
cng c dng cho IDATA. Cc bin IDATA c truy cp gin tip qua thanh ghi R0
v R1
V d :
Idata char array [5] ;
42
PDATA
Vng nh PDATA nm trong b nh d liu ngoi v c ln 256 byte. Cc bin
kiu ny c nh a ch thng qua thanh ghi R0 v R1. cc trang trong b nh ny
c c nh trong file STARTUP.A51. Trang c th c thay i bi SFR P2. Tuy
nhin, sau n phi c sp xp lun ph hp vi bin t.
V d :
Void test (void)
{
pdata char c ;
P2 =1 ; /* t trang 1*/
c=c+2;
P2 = 0 ; /* t trang 0 */
}
XDATA
Cc bin kiu XDATA c t trong b nh d liu bn ngoi c ln n 64
Kbyte, cc bin ny c truy cp thng qua con tr d liu DPTR nn thi gian x l
chm
V d :
Xdata char buffer [300] ;
Struct TIME
{
unsigned char sec ;
unsigned ch min ;
unsigned char hour ;
unsigned char day ;
}
xdata struct TIME times [100] ;
X l thanh ghi chc nng c bit (SFR)
Cc thanh ghi iu khin khi ngoi vi tch hp ca 8051 nm trong vng thanh ghi
chc nng c bit, truy cp trc tip C51 khng dng cc nh nfgha ca ANSI-C m
thay vo l cc t nh sn sfr v sfr16. Phng php nh sau :
Sfr name = hng s ;
Sfr16 name = hng s ;
Name l tn ty chn. Trong khi hng s l gi tr cho php t 80h n FFh. i vi
cc vi iu khin thng dng nht, cc m t sfr c cha trong cc file h trong mi
trng pht trin ca chng trnh dch.
c bit i vi cc h vi iu khin 8051 mi hn cc thanh ghi chc nng c
bit thng c di 16 bt nn tng hiu qu truy cp thng phi dng cc nh
ngha sfr16. Vic p dng sfr16 cng cho php khi phn cao ca sfr theo sau ngay phn
thp. sau , xc nh phi cho bit a ch phn thp ca bin
V d :
Sfr P0 = 0x80 ; /* nh ngha port 0 */
Sfr16 T2 = 0xCC ; /* thanh ghi Timer2: Phn thp CCh, phn cao CDh */
Mc nhp sau du = khng phi l mt ch dn m l mt m t cho bit a ch
ca cc thanh ghi chc nng c bit.
43
X l cc sfr a ch bt
Mt s thanh ghi chc nng c bit cho php truy cp a ch bt nhm mc ch
n gin vic truy cp ny trnh dch C51 cung cp mt kh nng m t bt c bit.
Sbit sbit_name = sbit_adr ;
Trong , sbit_name l bt k, tn bin ty chn. sbit_adr c nh ngha nh sau
:
Sfr_name^const : Mt bin nh ngha vi sfr.
Const1^const2 : Mt a ch byte.
Const : Mt a ch bt
V d ng dng cch 1 :
Sfr PSW = 0xD0 ;
Sbit OV = PSW^2 ;
Sbit CY = PSW^7 ;
Trong const nhn gi tr t 0 n 7
V d ng dng cch 2 :
Sbit OV = 0xD0^2 ;
Sbit CY = 0xD0^7 ;
Trong const1 l a ch trong vng t 80h n FFh v const2 l t 0 n 7
V d ng dng cch 3 :
Sbit OV = 0xD2 ;
Sbit CY = 0xD7 ;
Trong const l a ch bt ca cc bt c a ch ha. Cc bt ny phi trong
vng t 80h n FFh.
S dng con tr
Ging nh ANSI-C. Trnh dch C51 cng c th dng con tr. tnh ton c cu
trc c bit ca 8051, c hai kiu con tr c cung cp :
Con tr tng qut
Con tr xc nh b nh
Con tr tng qut
Con tr tng qut cho php tt c cc vng b nh ngoi tr BDATA. Ti v kiu b
nh phi c t trong con tr. Mt con tr tng qut c nh ngha nh sau :
SP_TYP_PTR DATYP *VAR_NAME ;
Trong ,
SP_TYP_PTR : Vng b nh ni t bin con tr. C th l cc kiu data, idata,
pdata, xdata.
DATATYP : Kiu d liu ca bin m con tr ch n. Tt c cc kiu c nh
ngha trong ANSI-C
VAR_NAME : Tn bt k theo chun ANSI-C
44
Address+0
Kiu b nh
Address+1
Address+2
Kiu b nh :
01
02
03
04
05
idata
xdata
pdata
data
code
0x02
V d : Con tr n a ch
1234h trong b nh d
liu ngoi
0x12
0x34
LCd display
WR
RD
D0-7
adrss
P0
Cht
8051
P1
47
Hm con 2
Hm con 1
Hm con 5
Hm con3
Hm con 4
Vng nh
Data
bt
Pdata
bt
Xdata
Bt
Vng a ch
00h FFh
00h 7Fh
00h FFh
00h 7Fh
0000h FFFFh
00h 7Fh
Tn k hiu
?DT?FKT_NAME?MOD_NAME
?BI?FKT_NAME?MOD_NAME
?PD?FKT_NAME?MOD_NAME
?BI?FKT_NAME?MOD_NAME
?XD?FKT_NAME?MOD_NAME
?BI?FKT_NAME?MOD_NAME
Char
R7
R5
R3
Int
R6+R7
R4+R5
R2+R3
Kiu bin
Long
R4+R5+R6+R7
R4+R5+R6+R7
****
Float/double
R4+R5+R6+R7
R4+R5+R6+R7
****
8 bt
R7
R5
R3
Con tr
16 bt
Tng qut
R6+R7
R1+R2+R3
R4+R5
R1+R2+R3
R2+R3
R1+R2+R3
50
Ngun ngt
Ngt 0 ngoi
Ngt Timer0
Ngt 1 ngoi
Ngt Timer1
Ni tip Port 0
Ngt Timer2
Chuyn A/D
Ngt 2 ngoi
Ngt 3 ngoi
Ngt 4 ngoi
Ngt 5 ngoi
Ngt 6 ngoi
Ni tip Port 1
Compare Match
0-7
So snh Timer
trn
Compare Match
COMSET
Compare Match
COMCLR
a ch ngt
0003h
000Bh
0013h
001Bh
0023h
002Bh
0043h
004Bh
0053h
005Bh
0063h
006Bh
0083h
0093h
C ngt
IE0
TF0
IE1
TF1
RI/TI(RI0/TI0)
TF2/EXF2
IADC
IEX2
IEX3
IEX4
IEX5
IEX6
RI1/TI1
ICMP0-7
Reset
Phn cng
Phn cng
Phn cng
Phn cng
Phn mm
Phn mm
Phn mm
Phn cng
Phn cng
Phn cng
Phn cng
Phn cng
Phn mm
Phn mm
009Bh
CTF
Phn cng
00A3h
ICS
Phn cng
00Abh
ICR
Phn cng
V d :
Extern int count ;
Void timer1 (void) interrupt 3
{
TR1 = 0 ; /* ngng Timer1 */
count = TL1 + 256 * TH1 ; /* c b nh thi Timer1 */
TR1 = 1 ; /* khi ng Timer1 */
}
Khi cc php tnh float c thc hin trong mt chng trnh phc v ngt th
trng thi cc trnh phc v du chm di ng phi c lu tr, chng c th mt khi
cc trnh du chm di ng khng x dng cc hm khc. Vi cc hm fpsave ( ) v
fprestore ( ) c m t trong file math.h c th bo m yu cu ny.
V d :
#include<math.h>
51
52
Thanh ghi
C carry
R7
R6+R7
R4+R5+R6+R7
R4+R5+R6+R7
R1+R2+R3
Con tr 8 bt
Con tr 16 bt
R7
R6+R7
Ghi ch
Khong c #pragma DISABLE
MSB trong R6
MSB trong R4
MSB trong R4, du v s m trong
R7
MSB trong R2, kiu b nh trong
R3
MSB trong R6
53
bit bvar1 ;
/*.*/
ret_val = asm_funkt (var1, var2, bvar1) ;
}
Cch nh ngha hm ny trong file ngun hp ng
NAME
ASM_MODUL1
; nh ngha tn modul
nh
ngha
nh
ngha
; Khai bo cc k hiu
;***********************************************************************
;** FUNKTION : int asm_funkt (int var1, char var2, bit bvar1) **
;***********************************************************************
rseg
?DT?asm_funkt?ASM_MODUL1
; Segment cho bin byte cc b
?asm_funkt?BYTE :
var1 : ds
2
; Tham s int var1
var2 : ds
1
; Tham s char var2
lok_var : ds
2
; Bin cc b int lok_var
rseg
?BI?asm_funkt?ASM_MODUL1
; Segment cho cc bin bt
?asm_funkt?BIT :
bvar1 : dbit1
; Tham s bt bvar1
lok_bvar :
dbit1 ; Bin bt cc b bit lok_bvar
rseg
?PR?asm_funkt?ASM_MODUL1
; Bt u phn chng trnh ca
asm_funkt
asm_funkt :
; C th truy cp cc bin v tham s da theo cc tn var1, var2 v lok_var
mov
add
mov
clr
addc
mov
a, var2
a, var1 + 1
; lok_var = var2 + var1
lok_var + 1, a
a
a, var1
lok_var, a
mov
ret
R7, lok_var
; Thot khi hm hp ng
ASM_MODUL1
; nh ngha tn modul
2
1
2
?BI?asm_funkt?ASM_MODUL1
lok_bvar :
rseg
asm_funkt
ds
ds
ds
dbit
; on cc bin byte cc b
; on cc bin bit cc b
?PR?asm_funkt?ASM_MODUL1
asm_funkt :
mov
?c_funkt?BYTE+0, lok_var1 ; int var1
mov
?c_funkt?BYTE+1, lok_var1+1
mov
mov
mov
c, lok_bvar
?c_funkt?BIT+0, c
; bit var3
lcall
c_funkt
; Gi hm C
mov
lok_var3+0, R6
mov
lok_var3+1, R7
;
; Tr tr v trong lok_var3
55
/*.*/
/******************************************************************/
/** FUNKTION : int c_funkt (int var1, char var2, bit var3 ) **/
/******************************************************************/
#pragma NOREGPARMS /* iu khin bin dch ny cng phi c khai bo khi
nh ngha */
int c_funkt (int var1, char var2, bit var3)
{
int ret_val ; /* bin cc b */
/* s dng tham s byte */
ret_val = var2 + var1 ;
/* s dng tham s bt */
P1^1 = var3 ;
return (ret_val) ; /* tr tr v */
}
Gi hm hp ng v C trong cu hnh COMPACT
Vi cu hnh b nh kiu COMPACT, cc tham s chuyn giao v cc bin cc b
c t vo vng nh pdata. Hm hp ng c th truy cp cc bin bng lnh MOVX
@Ri. Hm hp ng c gi trong file ngun C nh sau :
#pragma COMPACT
#pragma NOREGPARMS /* khng chuyn tham s trong thanh ghi */
int asm_funkt (int var1, char var2, bit bvar1) ;
void main (void)
{
int var1, ret_val ;
char var2 ;
bit bvar1 ;
/**/
ret_val = asm_funkt (var1, var2, bvar1)
/*.*/
}
Cch nh ngha hm trong file ngun hp ng nh sau :
NAME
ASM_MODUL1
; nh ngha tn modul
nh
ngha
nh
ngha
56
;**********************************************************************
;** FUNKTION : int asm_funkt (int var1, char var2, bit bvar1) **
;**********************************************************************
rseg
?PD?asm_funkt?ASM_MODUL1
; Segment cc bin byte cc b
?asm_funkt?BYTE :
var1 : ds
2
; Tham s int var1
var2 : ds
1
; Tham s char var2
lok_var : ds
2
; Bin cc b int lok_var
rseg
?BI?asm_funkt?ASM_MODUL1
; Segment cc bin bit cc b
?asm_funkt?BIT :
bvar1 :
dbit
1
; Tham s bit bvar1
lok_bvar :
dbit
1
; Bin bt cc b bit lok_bvar
rseg
?PR?asm_funkt?ASM_MODUL1
asm_funkt
asm_funkt :
; C th
MOVX @Ri
mov
movx
mov
mov
movx
add
mov
movx
dec
dec
movx
addc
movx
ASM_MODUL1
; nh ngha tn modul
57
; nh ngha on m chng
trnh
?PD?asm_funkt?ASM_MODUL1 segment XDATA OVERLAYABLE IPAGE ;
ngha on tham s byte v bin byte cc b
?BI?asm_funkt?ASM_MODUL1 segment BIT OVERLAYABLE
;
ngha on tham s bit v bin bit cc b
;*********************************************
;** FUNKTION : void asm_funkt (void) **
;*********************************************
rseg
?PD?asm_funkt?ASM_MODUL1
lok_var1 :
lok_var2 :
lok_var3 :
rseg
ds
ds
ds
2
1
2
dbit
c, lok_bvar
?c_funkt?BIT+0, c
lcall
c_funkt
mov
A, R6
mov
R0, #LOW lok_var3
movx
@R0, A
inc
R0
mov
A, R7
movx
@R0, A
;.
; on bin byte cc b
; on bin bit cc b
rseg
?PR?asm_funkt?ASM_MODUL1
asm_funkt
asm_funkt :
mov
R0, #LOW lok_var1
movx
A, @R0
mov
?c_funkt?BYTE+0, A ; int var1
inc
R0
movx
A, @R0
mov
?c_funkt?BYTE+1, A
inc
R0
movx
A, @R0
mov
?c_funkt?BYTE+2, A ; char var2
mov
mov
Bt
; bit var3
; Gi hm c_funkt
; Tr tr v trong lok_var3
nh
?BI?asm_funkt?ASM_MODUL1
lok_bvar :
nh
on
chng
trnh
/*..*/
/*****************************************************************/
/** FUNKTION : int c_funkt (int var1, char var2, bit var3) **/
/******************************************************************/
#pragma NOREGPARMS /* iu khin bin dch ny cng c khai bo khi nh
ngha */
int c_funkt (int var1, char var2, bit var3)
{
int ret_val ;
/* p dng bin byte */
ret_val = var1 + var2 ;
/* p dng bin bt */
P1^1 = var3 ;
return (ret_val) ; /* tr tr v */
}
Gi hm hp ng v C trong cu hnh LARGE
Trong cu hnh b nh kiu LARGE, cc tham s truyn v cc bin cc b c
t vo vng nh XDATA. Hm hp ng c th truy cp cc bin ny bng lnh MOVX
@DPTR. Hm hp ng c gi trong file ngun C nh sau :
#pragma LARGE
#pragma NOREGPARMS /* khng truyn tham s trong thanh ghi */
int asm_funkt (int var1, char var2, bit bvar1) ;
void main (void)
{
int var1, ret_val ;
char var2 ;
bit bvar1 ;
/*..*/
ret_val = asm_funkt (var1, var2, bvar1) ;
/*.*/
}
Cch nh ngha hm trong file ngun hp ng
NAME
ASM_MODUL1
; nh ngha tn modul
; nh ngha on m chng
trnh
?XD?asm_funkt?ASM_MODUL1 segment XDATA OVERLAYABLE ; nh ngha
on tham s byte v cc bin byte cc b
?BI?asm_funkt?ASM_MODUL1 segment BIT OVERLAYABLE
; nh ngha
on tham s bt v cc bin bt cc b
Public asm_funkt, ?asm_funkt?BYTE, ?asm_funkt?BIT
; Khai bo k hiu cng
cng cho chng trnh gi C
;******************************************************************
59
dbit
DPTR, #var2
A, @DPTR
; lok_var = var1 + var2
B, A
DPTR, #var1+1
A, @DPTR
A, B
DPTR, #lok_var+1
@DPTR, A
DPTR, #var1
A, @DPTR
A, #0
DPTR, #lok_var
@DPTR, A
ASM_MODUL1
; nh ngha tn modul
; nh ngha on m chng
trnh
?XP?asm_funkt?ASM_MODUL1 segment XDATA OVERLAYABLE
ngha on tham s v cc bin cc b byte
?BI?asm_funkt?ASM_MODUL1 segment BIT OVERLAYABLE
ngha on tham s v cc bin cc b bt
;*********************************************
;** FUNKTION : void asm_funkt (void) **
;*********************************************
rseg ?XD?asm_funkt?ASM_MODUL1
; on bin byte cc b
lok_var1:
lok_var2:
lok_var3 :
ds
ds
ds
2
1
2
; on bin bt cc b
lok_bvar :
dbit
nh
nh
rseg ?PR?asm_funkt?ASM_MODUL1
; Bt u chng rnh asm_funkt
asm_funkt :
mov DPTR, #lok_var1
movx A, @DPTR
mov ?c_funkt?BYTE+0, A ; int var1
inc
DPTR
movx A, @DPTR
mov ?c_funkt?BYTE+1, A
inc
DPTR
movx A, @DPTR
mov ?c_funkt?BYTE+2, A ; char var2
mov
mov
c, lok_bvar
?c_funkt?BIT+0, c
; bit var3
lcall
c_funkt
; Gi hm c_funkt
mov A, R6
mov DPTR, #lok_var3
movx @DPTR, A
inc
DPTR
mov A, R7
movx @DPTR, A
;
; Tr tr v trong lok_var3
/*****************************************************************/
#pragma NOREGPARMS /* iu khin bin dch ny cng phi c khai bo khi
nh ngha */
int c_funkt (int var1, char var2, bit var3)
{
int ret_val ; /* bin cc b */
/* p dng cc bin byte */
ret_val = var1 + var2
/* p dng cc bin bt */
P1^1 = var3
return (ret_val) ; /* tr tr v */
}
62
L51 @command-file
Input-list : L danh sch cc file nhp c phn cch nhau bi du phy. Phn
m rng thng l .OBJ, cc file ny cha cc modul ti nh v cn lin kt li
vi nhau to ra chng trnh a ch tuyt i.
Output-file : L tn ca file chng trnh a ch tuyt i, c th khng cn khai
bo ny khi tn ca file u tin trong input-list s c chn v khng c
phn m rng.
Control-list : Cha cc lnh v thng s ca dng lnh gi chng trnh lin kt
Command-file : L file c c t dng lnh nhp, lnh v thng s trong file
ny tng vi trong dng lnh gi
V d :
L51 PROG1
L51 PROG1, PROG2
L51 PROG1, PROG2 to PROGRAM. ABS
L51 PROG1, PROG2, PROG3 to PROGRAM. ABS RAMSIZE(256) CODE(100h)
L51 @LINK. MAK
LINK. MAK :
PROG1,
PROG2, PROG3
To PROGRAM. ABS
RAMSIZE(256) CODE(100h)
63
64
L51 BEISP1. OBJ, BEISP2. OBJ to BEISP OVERLAY (FUNK1 (FUNK2, FUNK3),
FUNK1 ! (FUNK4, FUNK5))
Tham chiu t FUNK1 trn FUNK2 v FUNK3 c g b v to ra mt tham chiu
t FUNK1 trn FUNK4 v FUNK5
L51 BEISP1. OBJ BEISP2. OBJ to BEISP OVERLAY (FUNK1 !*)
FUNK1 c nhn t qu trnh x l OVERLAY
65
66
BI 2
Vi iu khin AT90S8535
Tn bi:
M bi:
CIO 02 27 02
GII THIU
Bi ny trnh by v c tnh v cu trc ca h vi iu khin AVR thng qua vi
mch c th l AT90S8535. Ni dung bi thun ty l thuyt.
NI DUNG CHNH
Ni dung bi hc tp trung v cc ch chnh nh sau:
Cu trc chung v AVR
c tnh ca AT90S8535
S khi cu to AT90S8535
T chc b nh
Cu to v hot ng ca b timer/counter
Cu to v hot ng ca b ADC
Cu to v hot ng ca b so snh analog
67
1. M U
AT90S8535 l b vi iu khin CMOS 8 bit tiu th t nng lng da trn kin trc
RISC AVR. Bng vic thc hin cc lnh mnh trong mt chu k xung nhp (a single clock
cycle), AT90S8535 t c tc x l d liu ln n 1 triu lnh/ giy tn s 1
MHz. Vi iu khin ny cn cho php ngi thit k h thng ti u ha mc tiu th
nng lng m vn m bo tc x l.
Phn ct li ca AVR (AVR core) kt hp tp lnh phong ph vi 32 thanh ghi lm
vic a nng. Tt c 32 thanh ghi u c ni trc tip vi khi ALU (Arithmetic Logic
Unit), cho php truy cp hai thanh ghi c lp bng mt lnh n l trong mt chu k xung
nhp. Kin trc t c tc x l nhanh gp 10 ln vi iu khin CISC thng thng.
Cc vi iu khin AT90S8535 c h tr bng tt c cc cng c lp trnh pht
trin h thng hin c nh trnh dch C, trnh dch Macro Assembler, trnh g ri/ m
phng v cc bn mch nh gi.
Cc c im ca AT90S8535 c tm tt nh sau:
AVR kin trc RISC c ch tiu cht lng cao v tiu th t nng lng.
118 lnh mnh, hu ht c thc hin trong 1 chu k xung nhp (clock).
32 thanh ghi a nng 8 bit.
Tc x l d liu 8 triu lnh/ giy tn s 8MHz.
B nh d liu v b nh chng trnh khng t mt d liu (nonvolatile).
B nh flash 8k byte lp trnh c ngay trong h thng, c th ghi/xa
c 1000 ln, giao din ni tip SPI lp trnh ngay trong h thng.
512 bytes EEPROM, c th ghi/x c 100.000 ln.
512 bytes SRAM ni (internal SRAM).
Lp trnh kha bo v phn mm.
Cc tnh nng ngoi vi (peripheral features).
B bin i ADC 8 knh, 10 bit.
UART ni tip lp trnh c.
Giao din SPI ch / t ni tip.
2 Timer/Counter 8 bit vi ch chia tn s v ch so snh.
1 Timer/ Counter 16 bit vi b chia tn s ring bit, ch so snh v
bt mu (capture).
B nh thi watchdog lp trnh c vi b dao ng trn chip.
B so snh tng t c sn trn chip.
Cc tnh nng iu khin c bit.
C mch power-on reset.
ng h thi gian thc (Real-time clock) vi b dao ng ring bit v
ch b m (counter mode).
Cc ngun ngt ngoi v trong.
C 3 ch ng: ngh (Idle), tit kim nng lng (Power save), v gim
nng lng (Power-down).
Mc tiu th nng lng 4 MHz, 3V, 20oC.
Hot ng: 6.4 mA.
Ch ngh: 1.9 mA.
Ch tit kim nng lng: < 1 A
Vo/Ra v cc hnh thc ng v
32 ng xut/ nhp c th lp trnh c.
PDIP: 40 chn; PLCC, TQFP, MLF: 44 chn.
in p hot ng.
Vcc: 4.0 V n 6.0 V i vi AT90S8535.
Vcc: 2.7 V n 6.0 V i vi AT90LS8535.
Phn loi tc x l.
0 n 8 MHz i vi AT90S8535.
68
0 n 4 MHz i vi AT90LS8535.
2. S KHI AT90S8535
69
3. M T CC CHN RA
3.1 S chn
70
Port A (PA0PA7)
Port A (cng A) l cng vo/ra hai hng 8 bit. Cc chn ca cng c cc in tr
ni ln ngun dng (pull up resistor) ( c chn cho mi bit ). Cc chn ra ca cng
A c th chu c dng in 20 mA i qua v trc tip iu khin Led hin th. Khi cc
chn PA0 n PA7 l cc ng vo v c t xung mc thp t bn ngoi, chng s l
ngun dng nu cc in tr ko ln c kch hot.
Port A cn ng vai tr l ng vo ca b chuyn i A/D (Analog to Digital
Converter).
Cc chn ca port A c t trng thi th 3 (khng cho php xut/ nhp d liu)
khi ang reset, hoc ngay c khi xung nhp khng hot ng.
Port B (PB0PB7)
Port B l cng vo/ra hai hng 8 bit c cc in tr ko ln ngun dng bn
trong. Cc chn ra ca cng B c th chu c dng in 20 mA i qua. Khi cc chn
ca cng B l cc ng vo v c t xung mc thp t bn ngoi, chng s l ngun
dng nu cc in tr ni ln ngun dng c kch hot. Cng B cng cung cp cc
chc nng ng vi cc tnh nng c bit ca AT90S8535 c trnh by bng sau:
BNG 2.1 Chc nng cc chn Port B
Chn
Cc chc nng chuyn i
PB0
T0 (Timer/Counter0 External Counter Input)
PB1
T1 (Timer/Counter1 External Counter input)
PB2
AIN0 (Analog Comparator Positive Input)
PB3
AIN1 (Analog Comparator Negative Input)
PB4
SS ( SPI Slave Select Input)
PB5
PB6
PB7
71
4. CU TRC AT90S8535
4.1 S lc
Khi nim tp thanh ghi (register file) truy nhp nhanh gm 32 thanh ghi lm vic a
nng 8 bit vi thi gian truy nhp trong mt chu k xung nhp (one single clock cycle).
iu ny c ngha l trong mt chu k xung nhp, ALU thc hin c mt php ton. Hai
ton hng c xut t tp thanh ghi, php ton c thc hin vi kt qu c lu tr
li vo tp thanh ghi trong mt chu k xung nhp. 6 trong s 32 thanh ghi ny c th lm 3
con tr a ch gin tip 16 bit nh a ch khng gian d liu (data space addressing)
v cho php tnh a ch hiu dng. Mt trong 3 con tr a ch cn c dng lm con tr
a ch cho chc nng tm kim bng hng s. Cc thanh ghi c cc chc nng b sung
ny l cc thanh ghi 16 bit X,Y v Z.
72
Khi ALU h tr chc nng logic v s hc gia cc thanh ghi hoc gia mt hng
s vi mt thanh ghi. Cc php ton trn thanh ghi n (single register) cng c thc
hin trong khi ALU. Hnh trn th hin kin trc RISC AVR ca vi iu khin AT90S8535.
Thm vo s hot ng ca thanh ghi, nhng ch nh a ch b nh thng
thng c th c s dng trn tp thanh ghi (register file). V tp cc thanh ghi a
nng c t ti 32 a ch thp nht trong khng gian d liu (t $00 n $1F) nn
chng c th truy nhp nh nhng v tr trong b nh thng thng.
Khng gian b nh xut/ nhp cha 64 a ch cho cc chc nng ngoi vi ca CPU
cc thanh ghi iu khin, Timer/counter, b ADC v cc chc nng xut/ nhp khc. B
nh xut/ nhp c th truy nhp trc tip hoc theo v tr trong khng gian d liu ca cc
tp thanh ghi (register file), t a ch $20 n $5F.
AVR s dng kin trc Harvard vi b nh v bus ring bit cho chng trnh v
d liu. B nh chng trnh c hot ng vi mt ng ng 2 tng. Trong khi mt
73
4.2 T chc b nh
Khi ngt linh ng (flexible interrupt module) c cc thanh ghi iu khin trong
khng gian vo/ra v mt bit cho php ngt ton cc trong thanh ghi trng thi. Mi ngt
u c mt vc t ngt ring trong bng vc t ngt u b nh chng trnh. Cc
ngt c th t u tin tng ng vi v tr vc t ngt ca chng. a ch vc t ngt
cng thp th th t u tin cng cao.
B nh chng trnh (Program Memory).
AT90S8535 cha 8 K byte b nh flash lp trnh c ngay trong h thng, dng
lu chng trnh. B nh ny c th chu ng t nht 1000 ln ghi xa
.
74
75
77
78
B ADC c 2 chn cp ngun analog ring bit l AVCC v AGND. AGND phi
c ni n GND v in p AVcc phi khng khc nhiu hn 0.3V so vi Vcc.
in p tham chiu bn ngoi (external reference voltage) phi c t vo chn
AREF. in p ny phi khong t 2V-Avcc.
79
BI 3
Tn bi
Vi iu khin PIC16F8x
M bi
CIO 02 27 03
GII THIU
Bi ny trnh by v c tnh v cu trc ca h vi iu khin ca cng tyMicrrochip
thng qua h vi mch thng dng l PIC16F8x. Ni dung bi gm c l thuyt v thc
hnh nh cc phn mm bin dch Assembler (MPASM) v C (MPLAB C17) kt hp vi
cc board m phng phn cng
NI DUNG CHNH
Ni dung bi hc tp trung v cc ch chnh nh sau:
Cu trc chung v h PIC
c tnh chung ca PIC16CRxx v PIC16F8x
S khi cu to h PIC16F8x
T chc b nh
Cu to v hot ng ca b timer/counter
T chc v cch truy cp b nh d liu EEPROM
Cu to v t chc ngt
B nh thi canh chng
Cc phng php reset
Tp lnh h PIC16F8x
80
1. M T CHUNG
PIC16F8x l mt nhm trong ho vi iu khin CMOS 8 bt PIC16Cxx gi r, hiu
nng cao, ch tnh ton phn. Nhm ny bao gm cc thit b sau
PIC16F83
PIC16F84
PIC16CR83
PIC16CR84
Tt c cc vi iu khin h PIC u c cu trc RISC ci tin. cc thit b 16F8x
c tng cng cc c tnh ch yu, ngn xp c lng su 8 cp v nhiu ngun
tn hiu ngt trong cng nh ngoi. Bus m lnh v d liu ring bit theo cu trc
Harvard cho php mt lnh 16 bt tch bit vi bus d liu 8 bt. ng ng lnh hai tng
cho php tt c cc lnh c thc hin ch trong mt chu k ngoi tr cc lbh r nhnh
(cc lnh ny cn n hai chu k) tng cng c 35 lnh kh thi (tp lnh rt gn). Thm
vo l mt tp hp cc thanh ghi c s dng nhm t mc thc thi cao.
Cc vi iu khin PIC16F8x in hnh t mc nn m lnh 2:1 v tc tng 4:1
(ti 20 MHz) so vi cc vi iu khin 8 bt khc cng loi.
PIC16F8x c n 68 byte RAM, 64 byte b nh d liu EEPROM v 13 chn I/O v mt
b timer/counter
H PIC16Cxx c nhng tnh nng c bit gim thit b ngoi, h gi thnh, tng
tin cy ca h thng v gim cng sut tiu th. C bn ty chn dao ng : Dao ng
RC n cc cung cp gii php r tin, dao ng LP ti thiu ha cng sut tiu th, XT
l mt thch anh chun v HS i vi cc thch anh tc cao. Ch ng (h ngun)
cho php tit kim nng lng. Ngi dng c th nh thc thit b t ch ny bng
cc ngt trong v ngoi v reset.
Mt b nh thi watchdog c tin cy cao, b nh thi ny c mch dao ng
RC ring trn chip cung cp kh nng treo my
Cc thit b vi b nh chng trnh flash cho php ng gi thit b ging nhau
cho vic ly mu v sn xut. Vi kh nng lp trnh trong h thng cho php cp nht
chng trnh ngay trong ng dng m khng cn phi tho ri thit b. iu ny rt hu
dng cho vic pht trin nhiu ng dng m vic tip cn thit b khng d dng nhng
li cn thit phi cp nht m lnh v cng rt c li cho cc ng dng t xa cn cp
nht m lnh VD thng tin v tc .
Bng 3.1 lit k cc tnh nng ca h PIC16F8x v mt s khi n gin c
trnh by trong hnh 3.1
PIC16F8x rt thch hp trong cc lnh vc ng dng t ng tc cao, h thng
iu khin ng c cho n cc cm bin t xa cng sut thp, kha in t, thit b bo
mt v card thng minh. Cng ngh Flash/EEPROM cho php kh nng ty bin chng
trnh ng dng theo khch hng (m pht, tc ng c, tn s nhn, m bp mt)
rt nhanh v thun tin
Kch thc ng gi nh gn thch hp vi tt c cc ng dng c khng gian hn
ch. Gi thnh r, cng sut thp, hiu nng cao v kh nng I/O linh ng lm cho
PIC16F8x rt linh hot ngay c nhng ni trc y khng dng vi iu khin nh :
nh thi, so sanh, PWM v cc ng dng ng x l.
c tnh lp trnh trong h thng ni tip (thng qua hai chn) to nn tnh linh hot
ty bin sn phm sau khi lp rp v kim tra hon tt. Tnh nng ny c th c dng
sn xut sn phm, cha d liu nh chun hoc lp trnh thit b vi phn do hin
hnh trc khi phn phi.
81
Ngoi vi
c tnh
Tn s (MHz)
B
nh
chng trnh
flash
B
nh
chng trnh
EEPROM
B
nh
chng trnh
ROM
B nh d
liu (bytes)
B nh d
liu EEPROM
(bytes)
Timer
Ngun ngt
Chn I/O
in p (V)
Dng v
PIC16F83
10
512
PIC16CR83
10
-
PIC16F84
10
1K
PIC16CR84
10
-
512
1K
36
36
68
68
64
64
64
64
TMR0
4
13
2.0 6.0
18
pins
DIP, SOIC
TMR0
4
13
2.0 6.0
18 pins DIP,
SOIC
TMR0
4
13
2.0 6.0
18
pins
DIP, SOIC
TMR0
4
13
2.0 6.0
18 pins DIP,
SOIC
2. CC LOI 16F8x
Ty thuc vo ng dng v yu cu sn xut, ty chn thit b tng ng c th c
chn da trn cc thng tin phn ny.
C 4 chng loi thit b c ch ra trong s hiu ca thit b.
1.
F nh PIC16F84, y l cc thit b c b nh chng trnh flash v hot
ng trong di in p chun.
2.
LF nh PIC16LF84, cc thit b ny c b nh chng trnh flash v hot
ng trn di in p m rng
3.
CR nh PIC16CR83, cc thit b ny c b nh chng trnh loi ROM v
hot ng trong di in p chun
4.
LCR nh PIC16LCR83, l cc thit b c b nh chng trnh ROM v
hot ng trn b nh m rng
Khi cp n bn b nh v cc tnh nng cu trc khc, cc k hiu F v CR cng
c dng m ch LF v LCR.
82
3. S LC V CU TRC
H PIC16Cxx hiu nng cao c xp vo loi vi x l RISC thng dng, h ny p
dng cu trc Harvard c b nh chng trnh v b nh d liu c truy cp ring, cc
thit b nh th c mt bus b nh chng trnh v mt bus b nh d liu, iu ny lm
ci thin bng thng so vi cu trc Neumann truyn thng chng trnh v d liu
u c ly t cng mt b nh (truy cp trn cng mt bus). Do b nh chng trnh
v d liu ring bit cn cho php di cc lnh khc vi di d liu 8 bt. M lnh
ca PIC16Cxx c di l 14 bt, ton b bus b nh chng trnh 14 bt nhn lnh 14
bt ch trong mt chu k. Mt ng ng hai tng gi chng cc lnh c vo vi cc lnh
ang thc hin (v d 3.1). Do , tt c cc lnh c thc hin trong mt chu k ngoi
tr cc lnh r nhnh chng trnh.
PIC16F83 v PIC16CR83 a ch ha 512 x 14 b nh chng trnh, PIC16F84 v
PIC16CR84 a ch ha 1 K x 14 b nh chng trnh. Tt c c b nh chng trnh l
vng nh bn trong.
H PIC16Cxx c th nh a ch trc tip cc dy thanh ghi v b nh d liu ca
chng. Tt c cc thanh ghi chc nng c bit bao gm c b m chng trnh u
c nh x trong vng nh d liu. Mt tp lnh trc giao (i xng) gip n c kh
nng thc hin mi thao tc trn mi thanh ghi bng cch nh a ch bt k, dn n kt
qu l chng trnh n gin v hiu qu. Thm vo qu trnh hc cng gim mt
cch ng k.
Cc thit b PIC16Cxx gm mt khi ALU 8 bt v cc thanh ghi hot ng. Khi
ALU l mt n v s hc cng dng chung. N thc hin cc php tnh s hc v logic
gia d liu trong thanh ghi ang hot ng vi dy thanh ghi bt k.
ALU c ln 8 bt c kh nng : Cng, tr, dch chuyn v cc php ton logic.
Tr khi c lu , nu khng th cc php tnh s hc u da trn c s s b bc hai.
i vi cc lnh hai ton hng : Mt ton hng l thanh ghi hot ng v ton hng khc
l mt thanh ghi dy hoc mt hng s tc thi. i vi cc lnh mt ton hng, ton
hng l thanh ghi hot ng hoc mt thanh ghi dy.
Thanh ghi hot ng l mt thanh ghi 8 bt c dng cho khi ALU, thanh ghi ny
khng c a ch.
Ty theo lnh c thc hin, ALU c th nh hng n gi tr ca cc bt : Carry
(C), Digit Carry (DC), v Zero (Z) trong thanh ghi trng thi. Cc bt C v DC c chc
nng ln lt nh l bt ra borrow v digit borrow trong php tr
S khi ca PIC16F8x c trnh by trong hnh 3.1 vi cc chn tng ng
c m t trong bng 3.1
83
S
DIP
16
15
S
SOIC
16
15
Kiu
I/O/P
I
O
Kiu m
MCLR
I/P
ST
RA0
RA1
RA2
RA3
RA4/T0CK1
17
18
1
2
3
17
18
1
2
3
I/O
I/O
I/O
I/O
I/O
TTL
TTL
TTL
TTL
ST
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7
VSS
VCC
6
7
8
9
10
11
12
13
5
14
6
7
8
9
10
11
12
13
5
14
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
P
P
TTL/ST
TTL
TTL
TTL
TTL
TTL
TTL/ST 3
TTL/ST 3
-
OSC1/CLKIN
OSC2/CLKOUT
ST/CMOS
-
M t
1
Thay i vi ngt
Thay i vi ngt
Thay i vi ngt, ng h np ni tip
Thay i vi ngt, d liu np ni tip
GND
Ngun nui
84
4. T CHC B NH
C h+ai khi nh trong PIC16F8x l b nh chng trnh v b nh d liu. Mi
khi c bus ring do vic truy cp n mi khi c th xy ra trong cng chu k dao
ng.
Hn na, b nh d liu c th phn ra thnh vng RAM cng dng chung v cc
thanh ghi chc nng c bit (SFRs). Hot ng ca cc SFR l trng tm m t trong
phn ny. Cc SFR c dng iu khin thit b ngoi vi v c trnh by theo tng
khi ngoi vi tng ng.
Vng nh d liu cng bao gm vng d liu EEPROM, vng nh ny khng c
nh x trc tip trong vng nh d liu m ch c nh x gin tip. C ngha l mt
85
Hnh 4.1 Bn b nh
chng trnh v ngn xp
PIC16F83/CR83
86
87
a
ch
Bt 6
Bt 5
Tn
Bt7
Bt 4
Bt 3
Bt 2
00h
INDF
01h
TMR0
02h
PCL
03h
STATUS
04h
FSR
05h
Port A
RA4/T0CK1
06h
Port B
RB7
RB6
RB5
RB4
Bt 1
Bt 0
Gi tr
khi
power
on
rest
Cc
trng
hp
reset
khc
1
( )
Dy 0
07h
IRP
RP1
RP0
T0
08h
EEDATA
09h
EEADR
1
2
88
DC
RA3
RA2
RA1
RA0
RB3
RB2
RB1
RB0/INT
PD
---- --xxxx
xxxx
0000
0000
0001
1xxx
xxxx
xxxx
---x
xxxx
xxxx
xxxx
---- --xxxx
xxxx
xxxx
---- ---uuuu
uuuu
0000
0000
000q
quuu
uuuu
uuuu
---u
uuuu
uuuu
uuuu
---- ---uuuu
uuuu
uuuu
0Ah
PCLATH
B m 5 bt cao ca PC
0bh
INTCON
GIE
EEIE
T0IE
INTE
80h
INDF
81h
OPTIONREG
RBPU
82h
PCL
83h
STATUS 2
IRP
84h
FSR
85h
TRISA
86h
TRISB
RBIE
T0IF
INTF
RBIF
xxxx
---0
0000
0000
000x
uuuu
---0
0000
0000
000u
Dy 1
87h
INTEDG
RP1
T0CS
RP0
T0SE
T0
PSA
PS2
PS1
PS0
PD
DC
88h
EECON1
EEIF
WRERR
89h
EECON2
0Ah
PCLATH
B m ghi 5 bt cao ca PC
0bh
INTCON
GIE
EEIE
T0IE
INTE
RBIE
WREN
T0IF
WR
RD
INTF
RBIF
---- --1111
1111
0000
0000
0001
1xxx
xxxx
xxxx
---1
1111
1111
1111
---- -----0
x000
---- -----0
0000
0000
000x
Byte cao ca PC khng c truy cp trc tip. PCLATH l thanh ghi slave i vi PC<12:8>. Ni dung ca
PCLATH c th chuyn ln byte cao ca PC nhng ni dung ca PC<12:8> khng th chuyn vo PCLATH
89
---- ---1111
1111
0000
0000
000q
quuu
uuuu
uuuu
---1
1111
1111
1111
---- ------0
q000
---- ------0
0000
0000
000u
90
91
4.3.1 Nhy n a ch xc nh
Vic nhy n a ch xc nh c hon thnh bng cch cng mt lch
(offset) vo b m chng trnh (ADDWF PCL). Trong khi c mt bng bng phng
php GOTO nn kim tra cn thn s trng lp gia v tr ca bng vi phm vi b nh
PCL (mi khi 256 word).
4.3.2 Phn trang b nh chng trnh
PIC16F83 v PIC16CR83 c 512 t b nh chng trnh. PIC16F84 v
PIC16CR84 c 1 K t nh chng trnh, cc lnh CALL v GOTO c phm vi a ch l
11 bt, di a ch ny cho php mt lnh nhy trong vng mt trang c ln l 2 K.
m rng b nh chng trnh ca h PIC16F8x trong tng lai phi dng hai bt khc
xc nh trang ca b nh chng trnh. Cc bt phn trang ny l cc bt
PCLATH<4:3> (hnh 4.1). Khi thc hin mt lnh CALL hoc lnh GOTO, ngi dng
phi chc chn rng cc bt phn trang c lp trnh ph hp vi trang mong mun.
Nu mt lnh CALL (hoc ngt) c thc hin, ton b 13 bt ca PC s c ct
vo ngn xp. Do , vic x dng PCLATH<4:3> l khng cn thit cho cc lnh tr v.
Lu :
PIC16F8x b qua cc bt PCLATH<4:3>, cc bt ny c dng cho cc trang 1, 2
v 3 ca b m chng trnh (0800h 1FFFh), khng nn dng cc bt phn trang nh
cc bt R/W cng dng chung v iu ny s lm nh hng n s tng thch vi cc
sn phm trong tng lai.
4.4 Ngn xp
H PIC16Fxx c lng su 8 cp x 13 bt. Vng ngn xp khng phi l mt phn ca
b nh chng trnh hoc ca b nh d liu v con tr ngn xp khng cho php c
v ghi.
Ton b 13 bt ca PC c ct vo ngn xp khi mt lnh CALL c thc hin
hoc mt ngt c chp nhn. Ngn xp c ly ra khi thc hin lnh RETURN,
RETLW hoc RETFIE. PCLATH khng b nh hng bi thao tc ct v ly ra t ngn
xp.
Lu :
Khng c lnh no ct hoc ly ra t ngn xp. Cc thao tc ny ch xy ra khi thc
hin cc lnh CALL, RETURN, RETLW v RETFIE hoc vic tr n mt a ch ngt.
92
V d 4-2 trnh by mt chng trnh n gin xa vng RAM 20h 2Fh bng cch nh
a ch gin tip
V d 4-2:
NEXT clrf
movlw
movwf
INDF
incf
btfss
goto
CONTINUE
93
Mt a ch hiu dng 9 bt nhn c bng cch ghp 8 bt thanh ghi FSR vi bt IRP
(STATUS<7>) nh ch trong hnh 4.1. Tuy nhin, IRP khng c dng trong PIC16F8x
94
PORT A
Tn
RA0
RA1
RA2
RA3
RA4/T0CK1
Bt
Bt 0
Bt 1
Bt 2
Bt 3
Bt 4
Kiu m
TTL
TTL
TTL
TTL
ST
Chc nng
Input/output
Input/output
Input/output
Input/output
Input/output hoc ng vo xung ng h ca
TMR0, ng ra cc thot h
a
ch
Tn
Bt
7
Bt
6
Bt
5
Bt 4
Bt 3
Bt 2
Bt 1
Bt 0
Gi tr
khi m
ngun
05h
PORTA
RA4/T0CK1
RA3
RA2
RA1
RA0
---x xxxx
85h
TRISA
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
---1 1111
Gi tr
khi reset
---u
uuuu
---1
1111
95
Ngt c th nh thc thit b khi trng thi SLEEP. Ngi dng c th xa ngt
theo cc cch sau :
a) c hoc ghi port B, iu ny s chm dt gi tr bin thin
b) Xa c ngt RBIF
Mt gi tr bin thin s tip tc t bt RBIF. Vic c port B s kt thc s bin
thin ny v cho php xa bt RBIF
Ngt da trn c tnh bin thin (tc ng cnh) cng vi mch ko ln cu hnh
theo phn mm cho php d dng giao tip vi bn phm thc hin vic nh thc
thit b bng cch n phm.
Lu :
c th nhn ra s thay i chn I/O, b rng xung ti thiu phi bng Tcy
(fOSC/4)
Ngt tc ng cnh nn c dng nh thc thit b bng phm nhn v trong
cc thao tc m port B ch c dng cho ngt tc ng cnh. Khng nn dng
chui vng ca port B cho ngt tc ng cnh.
96
PORTB
; Khi to port B bng cch t cc cht d liu ra
STATUS, RP0 ; Chn dy 1
0xCF
; Gi tr chn hng d liu
TRISB
; RB<3:0> l vo
; RB<5:4> l ra
; RB<7:6> l vo
Bt
Kiu m Chc nng
Bits 0
TTL/ST (1) Chn I/O hoc ng vo ngt ngoi, mch ko ln bn trong
lp trnh bng phn mm
Bits 1
TTL
Chn I/O, mch ko ln bn trong lp trnh bng phn mm
Bits 2
TTL
Chn I/O, mch ko ln bn trong lp trnh bng phn mm
Bits 3
TTL
Chn I/O, mch ko ln bn trong lp trnh bng phn mm
Bits 4
TTL
Chn I/O (ngt cnh), mch ko ln bn trong lp trnh
bng phn mm
Bits 5
TTL
Chn I/O (ngt cnh), mch ko ln bn trong lp trnh
bng phn mm
Bits 6
TTL/ST (2) Chn I/O (ngt cnh), mch ko ln bn trong lp trnh
bng phn mm, ng vo ng h np ni tip
(2)
Bits 7
TTL/ST
Chn I/O (ngt cnh), mch ko ln bn trong lp trnh
bng phn mm, d liu np ni tip
Bng 5.3 Chc nng port B
1
2
97
a
ch
Tn
Bt 7
Bt 6
Bt 5
Bt 4
Bt 3
Bt 2
Bt 1
Bt 0
06h
PORTB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0/INT
86h
TRISB
TRISB7
TRISB6
TRISB5
TRISB4
TRISB3
TRISB2
TRISB
1
TRISB0
81h
OPTION
_REG
RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
Gi tr
khi
m
my
xxxx
xxxx
1111
1111
1111
1111
Gi tr
khi
reset
uuuu
uuuu
1111
1111
1111
1111
98
99
100
101
102
a
ch
Tn
Bt 7
01h
TMR0
0B
h
INTCON
GIE
EEIE
T0IE
INTE
RBIE
T0IF
NT
RBIF
81h
OPTION_RE
G
RBPU
INTED
G
T0C
S
T0SE
PSA
PS2
PS1
PS0
85h
TRISA
TRISA
4
TRISA
3
TRISA
2
TRISA
1
TRISA
0
Bt 6
Bt 5
Bt 4
Bt 3
Bt 2
Bt 1
Bt 0
Gi
tr
m
my
xxx
x
xxx
x
000
0
000
x
111
1
111
1
---1
111
1
Gi
tr
reset
uuu
u
uuu
u
0000
0000
1111
1111
---1
1111
7. B NH D LIU EEPROM
B nh d liu EEPROM cho php c/ghi trong khi hot ng bnh thng (ton
b di in p VDD). B nh ny khng c nh x trc tip ln vng khng gian thanh
ghi. Thay vo n c nh a ch gin tip thng qua cc thanh ghi chc nng c
bit. C bn thanh ghi chc nng c bit c dng c/ghi b nh ny, l :
EECON1
EECON2
EEDATA
EEADR
EEDATA lu gi 8 bt d liu c/ghi v EEADR lu gi a ch ca v tr EEPROM
ang c truy cp. Cc thit b PIC16F8x c 64 byte d liu EEPROM chim a ch t
0h n 3Fh.
B nh d liu EEPROM cho php ghi/c theo byte. Khi ghi v tr cn ghi s b xa
trc khi ghi byte mi. B nh d liu EEPROM c xem nh c chu k c/ghi cao,
thi gian ghi c iu khin bi mt b nh thi tch hp trn chip, thi gian ghi thay
i theo in p v nhit cng nh theo chip. Tham kho phn c tnh AC bit
chnh xc hn.
Khi mt thit b c m ha bo v, CPU c th tip tc c v ghi b nh
EEPROM. My np chng chng trnh c th khng cn truy cp c b nh ny.
7.1 EEADR
Thanh ghi EEADR c th nh a ch ti a n 256 byte b nh EEPROM. Ch c
64 byte u tin ca b nh c cung cp.
Hai bt phn trn c gii m a ch. C ngha l hai bt ny phi lun bng 0 chc
chn rng a ch nm trong vng 64 byte
103
on m lnh
cn thit
Qu trnh ghi s khng khi ng nu on m lnh trn khng c vit tip theo
sau mt cch chnh xc (ghi 55h vo EECON2, ghi AAh vo EECON2 sau t bt WR)
cho mi byte. Nn cm cc ngt trong on m lnh ny.
Thm vo , bt WREN trong EECON1 phi c t cho php ghi. K thut
ny ngn hin tng ghi ngu nhin vo EEPROM (khng mong mun) do vic thc hin
sai m lnh (mt chng trnh) nn duy tr trng thi xa cho bt WREN mi thi im
tr khi cn cp nht EEPROM. Bt WREN khng b xa bng phn cng.
Sau khi mt chui ghi tun t c khi ng vic xa bt WREN khng nh hng n
chu k ghi. Bt WR b cm khi ang t tr phi bt WREN c t.
Khi hon tt chu k ghi, bt WR b xa bi phn cng v bt c ngt hon tt ghi
(EEIF) c t, ngi dng c th hoc cho php hoc thm d bt ny. EEIF phi
c xa bng phn mm.
BSF
BCF
c
BTFSS, z
105
Tn
Bt 7
Bt 6
08h
EEDATA
09h
EEADR
88h
EECON1
89h
EECON2
Bt 5
Bt 4
Bt 3
Bt 2
Bt 1
Bt 0
EEIF
WRERR
WREN
WR
RD
Gi tr
khi m
my
xxxx
xxxx
xxxx
xxxx
---0
x000
---- ----
Gi tr
khi
reset
uuuu
uuuu
uuuu
uuuu
---0
q000
---- ----
8.1 Cc bt cu hnh
Cc bt cu hnh c th c lp trnh (c bng 0) hoc khng lp trinh (c bng
1) chn cu hnh cho thit b, cc bt ny c nh x ti v tr 2007h trong b nh
chng trnh
a ch 2007h nm ngoi khng gian b nh chng trnh ca ngi dng v
trong vng kim tra/cu hnh c bit (2000h 3FFFh). Vng ny ch c th c truy
cp trong khi np chng trnh.
107
Phm vi th nghim
Ch
Tn s
OSC1/C1
OSC2/C2
XT
455 KHz
47 100 pF
47 100 pF
2 MHz
15 33 pF
15 33 pF
4 MHz
15 33 pF
15 33 pF
HS
8 MHz
15 33 pF
15 33 pF
10 MHz
15 33 pF
15 33 pF
Lu :
Nn chn C1 v C2 bng nhau trong bng phm vi th nghim
T gi tr cao lm tng n nh nhng cng lm tng thi gian khi ng
Cc gi tr ny ch l gi . Do mi mch cng hng c c tnh ring. Nn tham kho
ti liu nh sn xut chn cho ph hp
Mch cng hng th nghim
455 KHz
Panasonic EFO-A455K04B
0.3%
2 MHz
Murata Erie CSA2.00MG
0.5%
4 MHz
Murata Erie CSA4.00MG
0.5%
8 MHz
Murata Erie CSA8.00MT
0.5%
10 MHz
Murata Erie CSA10.00MTZ
0.5%
Khng c t trong cc mch cng hng
Bng 8.1 Chn t cho mch cng hng gm
108
Ch
LP
XT
HS
Tn s
32 KHz
200 KHz
100 KHz
2 MHz
4 MHz
4 MHz
10 MHz
OSC1/C1
68 100 pF
15 33 pF
100 150 pF
15 33 pF
15 33 pF
15 33 pF
15 33 pF
OSC2/C2
68 100 pF
15 33 pF
100 150 pF
15 33 pF
15 33 pF
15 33 pF
15 33 pF
Lu :
Nn chn C1 v C2 bng nhau trong bng phm vi th nghim
T gi tr cao lm tng n nh nhng cng lm tng thi gian khi ng
Cc gi tr ny ch l gi . Rs c th cn thit trong ch HS v XT trnh iu khin
qu mc so vi mc iu khin thp ca thch anh theo s tay. Do cc thch anh c c
tnh khng ging nhau. Nn tham kho ti liu nh sn xut chn cho ph hp
Vi VDD > 4,5 V nn chn C1 = C2 = 30 pF
Thch anh th nghim
32,768 KHz
Epson C-001R32.768K-A
20 PPM
100 KHz
Epson C-2 100.00 KC-P
20 PPM
200 KHz
STD XTL 200.000 KHz
20 PPM
1 MHz
ECS ECS-10-13-2
50 PPM
2 MHz
ECS ECS-20-S-2
50 PPM
4 MHz
ECS ECS-40-S-4
50 PPM
10 MHz
ECS ECS-100-S-4
50 PPM
Hnh 8.2 Gi tr t trong ch dao ng thch anh
109
8.2.4 Dao ng RC
Vi nhng ng dng khng cn thi gian chnh xc th ty chn dao ng RC s
gip gim gi thnh. Tn s dao ng RC thay i theo in p ngun, Rext v Cext v c
nhit lm vic. Hn na tn s dao ng cn thay i theo thit b do s thay i
thng s x l. V in dung lin cc gia cc dng v khc nhau ca chip cng nh
hng c bit i vi gi tr Cext thp. Ngi dng cn lu n dung sai ca R v C.
Hnh 8.7 trnh by mt mch RC kt hp vi PIC16F8x. Vi nhng Rext thp hn 4 K
hot ng ca mch c th khng n nh hoc khng dao ng. Nu Rext qu ln VD. 1
M dao ng d b nh hng bi nhiu, m v r in. Do nn chn Rext trong
khong t 5 K n 100 K.
Mc d mch dao ng khng cn t ngoi nhng (Cext = 0 pF) nhng cng nn
thm t khong 20 pF chong nhiu v n nh hn. Nu khng c Cext tn s dao ng
c th thay i bt thng do in dung bn ngoi bin thin nh in dung lp rp, in
dung lin cc.
Tn s c chia 4 xut hin chn OSC2/CLKOUT c th c dng kim tra
hoc ng b cc linh kin khc.
Lu :
Khi ang dao ng bng RC khng nn iu khin chn OSC1 bng mt ngun dao
ng khc c th lm h thit b
8.3 Reset
C nhiu cch reset PIC16F8x :
Reset khi m my (POR)
MCLR rest trong khi SLEEP
WDT reset khi hot ng bnh thng
WDT nh thc trong khi SLEEP
Hnh 8.8 trnh by s khi ca mch reset tch hp trn chip. Trn ng reset
110
iu kin
Reset m my
Reset MCLR khi hot ng bnh thng
Reset MCLR trong khi SLEEP
Reset WDT trong khi hot ng bnh thng
nh thc bng WDT
nh thc SLEEP bng ngt
B
m
chng trnh
000h
000h
Thanh
ghi
trng thi
0001 1xxx
000u uuuu
000h
0001 0uuu
000h
PC + 1
PC + 1 (1)
0000 1uuu
uuu0 0uuu
uuu1 0uuu
Thanh ghi
a
ch
Xxxx xxxx
Uuuu uuuu
Uuuu uuuu
111
INDF
TMR0
PCL
STATUS
FSR
PORTA
PORTB
EEDATA
EEADR
PCLATH
INTCON
INDF
OPTION_REG
PCL
STATUS
FSR
TRISA
TRISB
EECON1
EECON2
PCLATH
INTCON
00h
01h
02h
03h
04h
05h
06h
08h
09h
0Ah
0Bh
80h
81h
82h
83h
84h
85h
86h
88h
89h
8Ah
8Bh
112
Hnh 8.10 th thi gian tng ngun ( MCLR khng ni ln VDD) : Trng hp 1
113
Hnh 8.11 th thi gian tng ngun ( MCLR khng ni ln VDD) : Trng hp 2
Hnh 8.12 Thi gian tng ngun ( MCLR ni ln VDD) : VDD tng nhanh
Hnh 8.13 Thi gian tng ngun ( MCLR ni ln VDD) : VDD tng chm
114
K t khi thi gian tr bt u sau xung POR. Nu thi gian duy tr mc thp ca
MCLR lu th thi gian tr s kt thc. Sau khi MCLR ln mc cao. Mch lp tc hot
ng (hnh 8.10). iu ny rt hu dng cho yu cu kim tra hoc ng b nhiu thit b
PIC16F8x khi lm vic song song vi nhau.
Bng 8.6 cho thy ngha ca cc bt T0 v PD . Bng 8.3 lit k cc iu kin
reset i vi mt s cc thanh ghi c bit trong khi bng 8.4 th lit k i vi tt c cc
thanh ghi
Hnh 8.14 S bo v st p 1
115
Hnh 8.15 S bo v st p 2
116
117
SWAPF
MOVWF
ISR
POP
:
:
SWAPF
MOVWF
SWAPF
SWAPF
Kt qu ca v d 8-1 :
a) Ct thanh ghi W
b) Ct thanh ghi STTUS vo STATUS_TEMP
c) Thc hin chng trnh phc v ngt
d) Phc hi thanh ghi STATUS
e) Phc hi thanh ghi W
Tn
Bt cu
hnh
OPTIO
N_RE
G
Bt 7
Bt 6
Bt 5
Bt 4
Bt 3
Bt 2
Bt 1
Bt 0
Gi tr khi
m my
(2)
(2)
(2)
(2)
PWRTE
1
( )
WDTE
FOSC1
FOSC0
( )
REP0
INT
EDG
T0CS
T0SE
PSA
PS2
PS1
PS0
1111 1111
1
2
118
Gi tr khi
reset
1111
1111
t v bt PD khng b xa
Nu ngt xy trong hoc sau khi thc hin lnh SLEEP, thit b s c nh
thc ngay lp tc khi trng thi SLEEP. Lnh SLEEP s c hon tt trc
khi thc dy. Do , WDT v b nh thang WDT s b xa, bt T0 c t v
bt PD b xa.
Mc d cc c c kim tra trc khi thc hin lnh SLEEP nhng chng c th
c t trc khi lnh SLEEP hon tt . xc nh lnh SLEEP c thc hin
hay cha th phi kim tra bt PD . Nu PD c t th lnh SLEEP c thc hin
nh mt lnh NOP.
chc chn WDT b xa, nn thc hin lnh CLRWDT trc lnh SLEEP.
8.14 V tr ID
C 4 nh c thit k lu tr cc s kim tra hoc cc m nhn dng khc.
Nhng v tr ny khng th truy cp khi ang hot ng bnh thng m ch c th c
hoc ghi trong khi ang lp trnh. Ch c 4 bt bt thp trong cc v tr ny s dng.
120
i vi cc thit b ROM, c 2 b
nh chng trnh v b nh d liu
EEPROM u cho php c nhng
ch c b nh EEPROM cho php
np
9. TP LNH
Mi lnh ca PIC16Cxx l mt t di 14 bt gm c phn m cng tc xc nh thao
tc cn thc hin v mt hoc nhiu ton hng cn thit cho thao tc d. Tm tt tp lnh
ca PIC16Cxx trong bng 9.2 lit k cc lnh byte, lnh bt, k t v cc lnh iu khin.
Bng 9.1 trnh by cc m t vng m lnh.
i vi cc lnh byte. f biu din mt thanh ghi c ch nh v d l ch, thanh
ghi c ch nh l thanh ghi c lnh s dng.
ch l ni t kt qu ca php tnh. Nu d bng 0 th kt qu c t vo thanh
ghi W, nu d bng 1 th kt qu c t vo thanh xc nh trong lnh
i vi cc lnh bt, b biu din mt vng bt c ch nh, vng bt ny chn s
bt b nh hng bi thao tc. Trong khi f biu din s file trong cha cc bt.
i vi cc thao tc hng s v iu khin, k biu din mt hng 8 bt hoc 11 bt
hoc gi tr k t.
Vng
f
w
b
k
x
d
label
TOS
M t
a ch tp thanh ghi 0x00 n 0x7f
Thanh ghi lm vic (b tch ly
a ch bt trong mt thanh ghi 8 bt
Vng hng s, hng d liu hoc nhn
Vng khng xc inh (= 0 hoc 1)
ch chn, d = 0 : kt qu lu vo W
D = 1 : kt qu lu vo thanh ghi f. Mc nh d = 1
Tn nhn
nh ngn xp
121
PC
PCLATH
GIE
WDT
T0
B m chng trnh
Cht phn cao b m chng trnh
Bt cho php ngt ton cc
Watchdog Timer/Counter
Bt thi gian tr
PD
dest
[]
()
<>
nghing
Bt h ngun
ch hoc thanh ghi w hoc v tr tp thanh ghi xc nh
Ty chn
Ni dung
Gn n
Vng bt
Trong tp hp ca
K hiu c nh ngha bi ngi dng
Bng 9.1 M t vng m lnh
122
123
Lnh gi nh
M t
Chu
k
M 14 bt
MSB
1
1
1
1
1
1
1(2)
1
1(2)
1
1
1
1
1
1
1
1
1
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
0111
0101
0001
0001
1001
0011
1011
1010
1111
0100
1000
0000
0xx0
1101
1100
0010
1110
0110
dfff ffff
dfff ffff
1fff ffff
0xxx xxxx
dfff ffff
dfff ffff
dfff ffff
dfff ffff
dfff ffff
dfff ffff
dfff ffff
1fff ffff
0000
dfff ffff
dfff ffff
dfff ffff
dfff ffff
dfff ffff
1
1
1(2)
1(2)
01
01
01
01
00bb
01bb
10bb
11bb
bfff
bfff
bfff
bfff
1
1
2
11
11
10
00
111x
1001
0kkk
0000
kkkk
kkkk
kkkk
0110
kkkk
kkkk
kkkk
0100
1kkk
1000
00xx
0000
01xx
0000
0000
kkkk
kkkk
kkkk
0000
kkkk
0000
0110
kkkk
kkkk
kkkk
1001
kkkk
1000
0011
LSB
Bt nh
hng
Ghi
ch
C,DC,Z
Z
Z
Z
Z
Z
1, 2
1, 2
2
Z
Z
Z
C
C
C,DC,Z
Z
ffff
ffff
ffff
ffff
GOTO k
IORLW k
MOVLW k
RETFIE
RETLW k
RETURN
SLEEP
Nhy n a ch
OR hng s vi w
Chuyn hng s vo w
Tr v t chng trnh ngt
Tr v vi hng s trong w
Tr v t chng trnh con
Vo ch ng
2
1
1
2
2
2
1
10
11
11
00
11
00
00
SUBLW k
XORLW k
Tr w cho hng s
XOR w vi hng s
1
1
1, 2
1, 2
1,2,3
1, 2
1,2,3
1, 2
1, 2
1, 2
1, 2
1, 2
1, 2
1, 2
1, 2
1, 2
3
3
C,DC,Z
Z
T0 , PD
T0 , PD
C.DC.Z
Z
Ghi ch 1 : Khi mt thanh ghi I/O c thay i nh hm ca chnh n VD: MOVF PORT,
1 th gi tr c s dng chnh l gi tr ti chn ca n. VD: Nu cht a ch
l 1 i vi 1 chn c cu hnh l ng vo v c ko xung thp bi
thit b ngoi th d liu s c ghi vo tr li l 0
Ghi ch 2 : Nu lnh ny c thc hin trn thanh ghi TMR0 v d =1 th b nh thang
s b xa nu ang c gn cho Timer0
Ghi ch 3 : Nu PC b thay i hoc mt kim tra iu kin l ng th lnh cn n 2 chu
k my, chu k th hai c thc hin nh 1 lnh NOP
Bng 9.2 Tp lnh PIC16Fxx
ADDLW
C php :
Ton hng :
Thao tc :
Bt nh hng :
124
Cng hng s vi W
[label] ADDLW k
0 k 255
(W) + k (W)
C, DC, Z
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
V d :
ADDWF
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
11
111x
Q1
Gii m
Q2
c hng k
00
0111
dfff
ffff
Gii m
ANDLW
C php :
Ton hng :
Thao tc :
Bt nh hng :
AND hng s vi W
[label] ANDLW k
0 k 255
(W) AND (k) (W)
Z
Words :
Q4
Ghi vo W
Cng W vi f
[label] ADDWF f, d
0 f 127
d [0,1]
(W) + (f) (ch)
C, DC, Z
V d :
M t :
Q3
X l d liu
ADDLW 0x15
Trc khi thc hin lnh :
W = 0x10
Sau khi thc hin lnh :
W = 0x25
ADDWF FSR, 0
Trc khi thc hin lnh :
W = 0x17
FSR = 0xC2
Sau khi thc hin lnh :
W = 0xD9
FSR = 0xC2
M lnh :
kkkk
Q1
Chu k hot ng Q :
kkkk
11
1001
kkkk
Q4
Ghi vo ch
kkkk
Cycles :
Chu k hot ng Q :
V d :
ANDWF
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
1
Q1
Gii m
Q2
c hng k
V d :
BCF
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
126
Q4
Ghi vo W
ANDLW 0x5F
Trc khi thc hin lnh :
W = 0xA3
Sau khi thc hin lnh :
W = 0x03
AND W vi f
[label] ANDWF f, d
0 f 127
d [0,1]
(W) AND (f) (ch)
Z
00
0101
dfff
ffff
Chu k hot ng Q :
Q3
X l d liu
Q2
Q3
c thanh ghi
X l d liu
f
Gii m
ANDWF FSR, 1
Trc khi thc hin lnh :
W = 0x17
FSR = 0xC2
Sau khi thc hin lnh :
W = 0x17
FSR = 0x02
Xa bt f
[label] BCF f, b
0 f 127
0b7
0 (f<b>)
khng
01
00bb
bfff
ffff
Q4
Ghi vo ch
Q1
Chu k hot ng Q :
V d :
BSF
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Q2
Q3
c thanh ghi
X l d liu
f
Gii m
BCF FLAG_REG, 7
Trc khi thc hin lnh :
FLAG_REG = 0xC7
Sau khi thc hin lnh :
FLAG_REG = 0x47
t bt f
[label] BSF f, b
0 f 127
0b7
1 (f<b>)
khng
01
01bb
V d :
BTFSC
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
bfff
ffff
Chu k hot ng Q :
Q4
Ghi
vo
thanh ghi f
Q2
Q3
c thanh ghi
X l d liu
f
Gii m
Q4
Ghi
vo
thanh ghi f
BSF FLAG_REG, 7
Trc khi thc hin lnh :
FLAG_REG = 0x0A
Sau khi thc hin lnh :
FLAG_REG = 0x8A
Kim tra bt, b qua nu xa
[label] BTFSC f, b
0 f 127
0b7
B qua nu (f<b>) = 0
khng
01
10bb
bfff
ffff
127
Q1
Chu k hot ng Q :
Q2
c thanh ghi
Gii m
f
Nu b qua (chu k th 2)
Q1
Q2
NOP
NOP
Q3
Q4
X l d liu
NOP
Q3
NOP
Q4
NOP
HERE
FALSSE
TRUE
V d :
BTFSS
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
BTFSC FLAG, 1
GOTO PROCESS_CODE
*
*
*
Trc khi thc hin lnh
PC = a ch ca HERE
Sau khi thc hin lnh
Nu FLAG<1> = 0
PC = a ch ca TRUE
Nu FLAG<1> = 1
PC = a ch ca FALSSE
Kim tra bt, b qua nu t
[label] BTFSS f, b
0 f 127
0b7
B qua nu (f<b>) = 1
khng
01
11bb
bfff
ffff
Q2
c thanh ghi
Gii m
f
Nu b qua (chu k th 2)
Q1
Q2
NOP
NOP
V d :
128
HERE
FALSSE
TRUE
Q3
Q4
X l d liu
NOP
Q3
NOP
Q4
NOP
BTFSS FLAG, 1
GOTO PROCESS_CODE
*
*
*
Trc khi thc hin lnh
PC = a ch ca HERE
Sau khi thc hin lnh
Nu FLAG<1> = 0
PC = a ch ca FALSSE
Nu FLAG<1> = 1
PC = a ch ca TRUE
CALL
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
0kkk
Kkkk
Q2
Q3
c k, ct
PC vo ngn X l d liu
xp
Q4
NOP
NOP
V d :
HERE
CALL THERE
Trc khi thc hin lnh
PC = a ch ca HERE
Sau khi thc hin lnh
PC = a ch ca THERE
TOS = a ch HERE +1
CLRF
C php :
Ton hng :
Thao tc :
Xa f
[label] CLRF f
0 f 127
00h (f)
1Z
Z
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
kkkk
00
0001
1fff
NOP
Ghi vo PC
ffff
Q2
Q3
c thanh ghi
X l d liu
f
Q4
Ghi
vo
thanh ghi f
129
V d :
CLRF FLAG_REG
Trc khi thc hin lnh
FLAG_REG = 0x5A
Sau khi thc hin lnh
FLAG_REG = 0x00
Z=1
CLRW
C php :
Ton hng :
Thao tc :
Xa w
[label] CLRW
khng
00h (W)
1Z
Z
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
00
0001
0xxx
xxxx
Q2
Q3
Gii m
NOP
X l d liu
V d :
CLRW
Trc khi thc hin lnh
w = 0x5A
Sau khi thc hin lnh
w = 0x00
Z=1
CLRWDT
C php :
Ton hng :
Thao tc :
Xa Watchdog Timer
[label] CLRWDT
khng
00h WDT
0 b nh thang WDT
Q4
Ghi
vo
thanh ghi w
1 T0
1 PD
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
T0 , PD
00
130
0110
0100
V d :
0000
Q2
NOP
CLRWDT
Trc khi thc hin lnh
WDT counter = ?
Sau khi thc hin lnh
Q3
X l d liu
Q4
Xa WDT
T0 = 1
PD = 1
COMF
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
o f
[label] COMF f, d
0 f 127
d [0,1]
( f ) (ch)
Z
00
1001
dfff
Q2
c thanh ghi
f
Gii m
V d :
COMF REG1, 0
Trc khi thc hin lnh
REG1 = 0x13
Sau khi thc hin lnh
REG1 = 0x13
W = 0xEC
DECF
C php :
Ton hng :
Gim f
[label] DECF f, d
0 f 127
d [0,1]
(f) -1 (ch)
Z
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
00
0011
dfff
Q3
Q4
X l d liu
Ghi vo ch
ffff
V d :
ffff
Q2
Q3
c thanh ghi
X l d liu
f
Q4
Ghi vo ch
DECF CNT, 1
Trc khi thc hin lnh
CNT = 0x01
Sau khi thc hin lnh
131
CNT = 0x00
Z=1
DECFSZ
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
1011
dfff
ffff
Q2
c thanh ghi
Gii m
f
Nu b qua (chu k th 2
Q1
Q2
NOP
NOP
V d :
DECFSZ CNT, 1
GOTO
LOOP
CONTINUE *
*
*
Trc khi thc hin lnh
PC = a ch HERE
Sau khi thc hin lnh
CNT = CNT - 1
Nu CNT = 0
PC = a ch CONTINUE
Nu CNT 0
PC = a ch HERE + 1
GOTO
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
132
Q3
Q4
X l d liu
Ghi vo ch
Q3
NOP
Q4
NOP
HERE
10
1kkk
kkkk
kkkk
Gi tr tc thi 11 bt c np vo cc bt PC<10:0>, cc bt
trn ca PC c np t PCLATH<4:3>, lnh ny cn 2 chu k
Words :
Cycles :
Chu k hot ng Q :
1
2
V d :
GOTO THERE
Sau khi thc hin lnh
PC = a ch ca THERE
INCF
C php :
Ton hng :
Tng f
[label] INCF f, d
0 f 127
d [0,1]
(f) + 1 (ch)
Z
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
Q1
Gii m
NOP
00
Q2
c k
NOP
1010
dfff
Q1
INCF CNT, 1
Trc khi thc hin lnh
CNT = 0xFF
Z=0
Sau khi thc hin lnh
CNT = 0x00
Z=1
INCFSZ
C php :
Ton hng :
M lnh :
M t :
Words :
Cycles :
ffff
Q2
Q3
c thanh ghi
X l d liu
f
V d :
Bt nh hng :
Q4
Ghi vo PC
NOP
Gii m
Thao tc :
Q3
X l d liu
NOP
00
1111
dfff
Q4
Ghi vo ch
ffff
Chu k hot ng Q :
Q1
Q2
c thanh ghi
Gii m
f
Nu b qua (chu k th 2)
Q1
Q2
NOP
NOP
V d :
INCFSZ CNT, 1
GOTO
LOOP
CONTINUE *
*
*
Trc khi thc hin lnh
PC = a ch HERE
Sau khi thc hin lnh
CNT = CNT + 1
Nu CNT = 0
PC = a ch CONTINUE
Nu CNT 0
PC = a ch HERE + 1
IORLW
C php :
Ton hng :
Thao tc :
Bt nh hng :
OR hng s vi W
[label] IORLW k
0 k 255
(W) OR (k) (W)
Z
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
V d :
IORWF
C php :
Ton hng :
Thao tc :
Bt nh hng :
134
Q3
Q4
X l d liu
Ghi vo ch
Q3
NOP
Q4
NOP
HERE
11
1000
kkkk
kkkk
Q2
c hng k
IORLW 0x35
Trc khi thc hin lnh :
W = 0x9A
Sau khi thc hin lnh :
W = 0xBF
Z=1
OR W vi f
[label] IORWF f, d
0 f 127
d [0,1]
(W) OR (f) (ch)
Z
Q3
X l d liu
Q4
Ghi vo W
M lnh :
M t :
Words :
Cycles :
00
0100
V d :
MOVF
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Q2
Q3
c thanh ghi
X l d liu
f
Gii m
00
1000
dfff
ffff
Gii m
MOVF FSR, 0
Sau khi thc hin lnh :
W = gi tr ca thanh ghi FSR
Z=1
MOVLW
C php :
Ton hng :
Thao tc :
Bt nh hng :
Chuyn hng s vo W
[label] MOVLW k
0 k 255
k (W)
khng
M t :
Ghi vo ch
Chuyn f
[label] MOVF f, d
0 f 127
d [0,1]
(f) (ch)
Z
V d :
M lnh :
Q4
IORWF RESULT, 0
Trc khi thc hin lnh :
W = 0x91
RESULT = 0x13
Sau khi thc hin lnh :
W = 0x93
RESULT = 0x13
Z=1
Q1
Chu k hot ng Q :
ffff
Chu k hot ng Q :
dfff
11
00xx
kkkk
Q4
Ghi vo ch
kkkk
Words :
Cycles :
Chu k hot ng Q :
hp dch l 0
1
1
Q1
Gii m
Q2
c hng k
V d :
MOVLW 0x5A
Sau khi thc hin lnh :
W = 0x5A
MOVWF
C php :
Ton hng :
Thao tc :
Bt nh hng :
Chuyn W vo f
[label] MOVWF f
0 f 127
(W) (f)
khng
M lnh :
M t :
Words :
Cycles :
00
0000
Gii m
MOVWF OPTION_REG
Trc khi thc hin lnh :
W = 0x4F
OPTION = 0xFF
Sau khi thc hin lnh :
W = 0x4F
OPTION = 0x4F
NOP
C php :
Ton hng :
Thao tc :
Bt nh hng :
Khng lm g c
[label] NOP
khng
Khng lm g c
khng
M t :
Words :
Cycles :
Chu k hot ng Q :
V d :
136
ffff
Q2
Q3
c thanh ghi
X l d liu
W
V d :
M lnh :
Q4
Ghi vo W
Chu k hot ng Q :
dfff
Q3
X l d liu
00
0000
0xx0
Q4
Ghi
vo
thanh ghi f
0000
Khng lm g c
1
1
Q1
Gii m
NOP
Q2
NOP
Q3
NOP
Q4
NOP
RETFIE
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
Tr v t ngt
[label] RETFIE
khng
TOS PC
1 GIE
khng
00
0000
0000
Q2
Q3
Gii m
NOP
t bt GIE
NOP
NOP
NOP
V d :
RETFIE
Sau ngt
PC = TOS
GIE = 1
OPTION
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
1001
00
0000
0110
Q4
Ly ra
ngn xp
NOP
0010
Q2
NOP
Q3
NOP
Q4
NOP
V d :
RETLW
C php :
Ton hng :
Thao tc :
Tr v vi hng s trong W
[label] RETLW k
0 k 255
K (W)
137
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
V d :
TOS PC
khng
11
01xx
kkkk
kkkk
Np hng s k 8 bt vo W. np nh ngn xp vo PC (a ch
tr v), lnh ny 2 chu k
1
2
Q1
Q2
Q3
Gii m
c k
NOP
NOP
NOP
NOP
Q4
Ghi vo W,
ly ra t ngn
xp
NOP
RETURN
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
V d :
138
0000
0000
1000
Q2
Q3
Gii m
NOP
NOP
NOP
NOP
NOP
RETURN
Q4
Ly ra
ngn xp
NOP
1101
dfff
ffff
M t :
Words :
Cycles :
Chu k hot ng Q :
Q2
c f
V d :
RLF REG1, 0
Trc khi thc hin lnh
REG1 = 1110 0110
C=0
Sau khi thc hin lnh
REG1 = 1110 0110
W = 1100 1100
C=1
RRF
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
00
1100
dfff
Q3
X l d liu
Q4
Ghi vo ch
ffff
M t :
Words :
Cycles :
Chu k hot ng Q :
V d :
Q2
c f
Q3
X l d liu
Q4
Ghi vo ch
RRF REG1, 0
139
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
T0 , PD
00
0000
0110
Q2
Q3
Gii m
NOP
NOP
V d :
SLEEP
SUBLW
C php :
Ton hng :
Thao tc :
Bt nh hng :
Tr W vi hng s
[label] SUBLW k
0 k 255
K (W) (W)
C, DC, Z
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
V d 1 :
140
0011
11
110x
kkkk
Q4
i
SLEEP
vo
kkkk
Q2
c hng k
SUBLW 0x02
Trc khi thc hin lnh :
W=1
C=?
Q3
X l d liu
Q4
Ghi vo W
V d 2 :
V d 3 :
SUBWF
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Z=?
Sau khi thc hin lnh :
W=1
C = 1 ; kt qu dng
Z=0
Trc khi thc hin lnh
W=2
C=?
Z=?
Sau khi thc hin lnh
W=0
C = 1 ; kt qu l 0
Z=1
Trc khi tr
W=3
C=?
Z=?
Sau khi tr
W = 0xFF
C = 0 ; Kt qu m
Z=0
Tr W t f
[label] SUBWF f, d
0 f 127
d [0,1]
(f) (W) (ch)
C, DC, Z
00
V d 1 :
V d 2 :
dfff
ffff
Chu k hot ng Q :
0010
Gii m
Q2
Q3
c thanh ghi
X l d liu
f
Q4
Ghi vo ch
SUBWF REG1, 1
Trc khi tr
REG1 = 3
W=2
C=?
Z=?
Sau khi tr
REG1 = 1
W=2
C = 1 ; Kt qu dng
Z=0
Trc khi tr
141
V d 3 :
SWAP
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
REG1 = 2
W=2
C=?
Z=?
Sau khi tr
REG1 = 0
W=2
C =1 ; Kt qu l 0
Z=1
Trc khi tr
REG1 = 1
W=2
C=?
Z=?
Sau khi tr
REG1 = 0xFF
W=2
C = 0 ; Kt qu m
Z=0
Hon chuyn 4 bt trong f
[label] SWAP f, d
0 f 127
d [0,1]
(f<3:0>) (ch<7:4>)
(f<7:4>) (ch<3:0>)
khng
00
1100
dfff
Q2
c f
V d :
SWAP REG, 0
Trc khi thc hin
REG1 = 0xA5
Sau khi thc hin
REG1 = 0xA5
W = 0x5A
TRIS
C php :
Ton hng :
Thao tc :
Bt nh hng :
142
ffff
Q3
X l d liu
Q4
Ghi vo ch
M lnh :
M t :
Words :
Cycles :
00
0000
0110
0fff
Chu k hot ng Q :
V d :
XORLW
C php :
Ton hng :
Thao tc :
Bt nh hng :
XOR hng s vi W
[label] XORLW k
0 k 255
(W) XOR (k) (W)
Z
M lnh :
M t :
Words :
Cycles :
Chu k hot ng Q :
V d :
XORWF
C php :
Ton hng :
Thao tc :
Bt nh hng :
M lnh :
M t :
Words :
Cycles :
11
1010
kkkk
kkkk
Q2
c hng k
Q3
X l d liu
Q4
Ghi vo W
XORLW 0x
Trc khi thc hin lnh :
W = 0x85
Sau khi thc hin lnh :
W = 0x1A
XOR W vi f
[label] XORWF f, d
0 f 127
d [0,1]
(W) XOR (f) (ch)
Z
00
0110
dfff
ffff
143
Q1
Chu k hot ng Q :
V d :
144
Gii m
Q2
Q3
c thanh ghi
X l d liu
f
XORWF REG, 1
Trc khi thc hin lnh :
W = 0x85
REG = 0xAF
Sau khi thc hin lnh :
W = 0x85
REG = 0x1A
Q4
Ghi vo ch
2.
Trn vn Trng
3.
Jurgen Maier-Wolf
4.
K thut lp trnh C
Phm vn t
5.
ATMEL
6.
Ng din Tp
145