You are on page 1of 36

Copyright (c) IRF Group

Nghin cu kho st
b vi iu 8 bit PIC16F877
1. Gii thiu b vi iu khin 8 bt
Ngy nay, cc b vi iu khin ang c ng dng ngy cng rng ri trong
cc lnh vc k thut v i sng x hi, c bit l trong k thut t ng ho
v iu khin t xa. Gi y vi nhu cu chuyn dng ho, ti u (thi gian,
khng gian, gi thnh), bo mt, tnh ch ng trong cng vic... ngy cng i
hi kht khe. Vic a ra cng ngh mi trong lnh vc ch to mch in t
p ng nhng yu cu trn l hon ton cp thit mang tnh thc t cao.
1.1. Khi nim v b vi iu khin
hiu khi nim v b vi iu khin, ta c th lm php so snh n vi b
vi x l cng dng chung nh sau:
Ta bit rng, cc b vi x l cng dng chung nh h Intel x86 (8086,
80286, 80386, 80486 v Pentium) hoc h Motorola 680x0(6800, 68010, 68020,
68030, 68040 vv...) khng c RAM, ROM v khng c cc cng ra vo trn
chip... Vi l do m chng c gi l cc b vi x l cng dng chung.
Mt nh thit k h thng s dng mt b vi x l cng dng chung chng
hn nh Pentium hay 68040 s phi b xung thm RAM, ROM, cc cng vo ra
v cc b nh thi ngoi lm cho chng hot ng c. Mc d vic b
xung cc RAM, ROM, cc cng vo ra s lm cho h thng cng knh ln
nhng n li c u im khi s dng cc b vi x l ny l rt linh hot. Chng
hn nh ngi thit k c th quyt nh v s lng RAM, ROM, v cc cng
vo ra cn thit sao cho ph hp vi kh nng, mc ch s dng ca h thng.
iu ny khng th c i vi cc b vi iu khin. Bi v, mt b vi iu
khin c mt CPU (mt b vi x l) cng vi mt s lng RAM, ROM, cc
cng vo ra v mt b nh thi trn cng mt chp. Hay ni cch khc l b vi
x l, RAM, ROM, cc cng vo ra v mt b nh thi cng c nhng trn
mt chip. Do vy ngi thit k khng th b xung thm b nh ngoi, s cc
cng vo ra hoc b nh thi cho n. Vi s lng RAM, ROM v s cc cng
vo ra c nh nh vy l mt mt hn ch (km linh hot) xong n li tht s l
tng i vi nhng ng dng mang tnh chuyn bit, ti u v gi thnh, ti u
v khng gian...
Hin nay trn th trung c cc b vi iu khin 8 bt chnh l. 6811 ca
Motorola, 8051 ca Intel, Z8 ca Xilog v Pic16x ca Microchip Technology.
Mi loi trn y u c mt tp lnh v thanh ghi ring duy nht, nn chng
u khng tng thch ln nhau. Cng c nhng b vi iu khin 16 bt v 32 bt
c sn xut ra bi cc hng sn xut chp khc nhau.
1.2. Nhng yu cu la chn mt b vi iu khin l:
Copyright (c) IRF Group
p ng nhu cu tnh ton ca bi ton mt cch hiu qu v mt gi
thnh v y chc nng c th nhn thy c, (kh d).
C sn cc cng c pht trin phn mm chng hn nh cc trnh bin
dch trnh hp ng v g ri.
Ngun cc b vi iu khin c sn nhiu v tin cy.
1.3. Cc tiu chun la chn mt b vi iu khin:
Tiu chun u tin v trc ht trong la chn mt b vi iu khin l n
phi p ng nhu cu bi ton v mt cng sut tnh ton, gi thnh v hiu qu.
Trong khi phn tch cc nhu cu ca mt d n da trn b vi iu khin, chng
ta trc ht phi bit l b vi iu khin no l 8 bt, 16 bt hay 32 bt c th p
ng tt nht nhu cu tnh ton ca bi ton mt cch hiu qu nht.
Nhng tiu chun c a ra cn nhc l:
Tc : Tc ln nht m b vi iu khin h tr l bao nhiu.
Kiu ng v: l kiu 40 chn DIP hay QFP hay l kiu ng v khc.
y l iu quan trng i vi yu cu v khng gian, kiu lp rp v to mu
th cho sn phm cui cng.
Cng sut tiu th: iu ny c bit kht khe i vi nhng sn phm
dng pin, c quy.
Dung lng b nh RAM v ROM trn chp.
S chn vo ra, b nh thi, s ngt trn chp.
Kh nng d dng nng cp cho hiu sut cao hoc gim cng sut tiu
th.
Gi thnh cho mt n v: iu ny quan trng quyt nh gi thnh cui
cng ca sn phm m mt b vi iu khin c s dng.
2. B Vi iu khin 8 bit PIC16F877
2.1. c tnh ni bt ca b vi x l.
+ S dng cng ngh tch hp cao RISC CPU.
+ Ngi s dng c th lp trnh vi 35 cu lnh n gin.
+ Tt c cc cu lnh thc hin trong mt chu k lnh ngoi tr mt s cu
lnh r nhnh thc hin trong 2 chu k lnh.
+ Tc hot ng l: - Xung ng h vo l DC- 20MHz
- Chu k lnh thc hin trong 200ns
+ B nh chng trnh Flash 8Kx14 words
+ B nh Ram 368x8 bytes
+ B nh EFPROM 256x 8 bytes
Kh nng ca b vi x l ny
+ Kh nng ngt ( ln ti 14 ngun ngt trong v ngt ngoi )
+ Ngn nh Stack c phn chia lm 8 mc
+ Truy cp b nh bng a ch trc tip hoc gin tip.
+ Ngun khi ng li (POR)
+ B to xung thi gian (PWRT) v b to dao ng (OST)
Copyright (c) IRF Group
+ B m xung thi gian (WDT) vi ngun dao ng trn chp (ngun dao
ng RC ) hot ng ng tin cy.
+ C m chng trnh bo v.
+ Phng thc ct gi SLEEP
+ C bng la chn dao ng.
+ Cng ngh CMOS FLASH /EEPROM ngun mc thp ,tc cao.
+ Thit k hon ton tnh .
+ Mch chng trnh ni tip c 2 chn.
+ X l c /ghi ti b nh chng trnh .
+ Di in th hot ng rng : 2.0V n 5.5V
+ Ngun s dng hin ti 25 mA
+ Dy nhit cng nghip v thun li .
+ Cng sut tiu th thp:
< 0.6mA vi 5V, 4MHz
20 A vi ngun 3V, 32 kHz
< 1 A ngun d phng.
Cc c tnh ni bt ca thit b ngoi vi trn chip
+ Timer0: 8 bt ca b nh thi, b m vi h s t l trc
+ Timer1: 16 bt ca b nh thi, b m vi h s t l trc, c kh nng
tng trong khi ch Sleep qua xung ng h c cung cp bn ngoi.
+ Timer 2: 8 bt ca b nh thi, b m vi 8 bt ca h s t l trc, h s
t l sau
+ C 2 ch bt gi, so snh, iu ch rng xung(PWM).
+ Ch bt gi vi 16 bt, vi tc 12.5 ns, ch so snh vi 16 bt, tc
gii quyt cc i l 200 ns, ch iu ch rng xung vi 10 bt.
+ B chuyn i tn hiu s sang tng t vi 10 bt .
+ Cng truyn thng ni tip SSP vi SPI phng thc ch v I
2
C(ch/ph)
+ B truyn nhn thng tin ng b, d b(USART/SCL) c kh nng pht
hin 9 bt a ch.
+ Cng ph song song (PSP) vi 8 bt m rng, vi RD, WR v CS iu
khin.












Copyright (c) IRF Group

S cc chn PIC16F87X.



















Copyright (c) IRF Group

S khi b vi iu khin PIC16F87X

2.2. So snh vi b vi iu khin 8051
*B vi iu khin 8051 l b VK u tin thuc h VK x51 c sn
xut bi cng ty Intel, Siemens, Advanced Micro Devices, Fujitsu, Philips.
Cc c im chung ca b VK ny:
4KB ROM
128 B RAM
4 cng I/O 8 bit
2 Timer 16 bit
C kh nng qun l c 64 KB b nh m chng trnh ngoi (ROM
ngoi).
C kh nng qun l c 64 KB b nh d liu ngoi (RAM ngoi)
C b x l logic ring (thao tc trn cc bit)
C th thao tc trc tip c 210 bit (cc bit ny c a ch ho)
C 5 ngt
Dng ngun dao ng ngoi
Copyright (c) IRF Group
Dng in p 5V cho chip hot ng
*Cng P0: C dng cc mng h v c 8 chn (8 bit) l cng vo/ra hoc
l cng chuyn d liu v a ch.
*Cng P1: L cng vo/ra c 8 chn (8 bit).
*Cng P2: C 8 chn (8 bit) l cng vo/ra hoc l cng chuyn d liu v
a ch.
*Cng P3: C 8 chn, cng ny c th l cng vo/ra 8 bit hay cn c cc
chc nng quan trng khc nh phc v cho ngt, cc b nh thi, vic truyn
nhn d liu truyn thng ni tip, c v ghi cc b nh ngoi
S khi ca VK 8051:

CPU
Registers
RAM128
bytes
ROM
4 K
Interupt
control
Bus
I / O Ports
Serial port
Timer 0
Timer 1
Timer 0
Serial Ports
P0 P2
P1
P3
TxD RxD
GND
0 Int
1 Int
Timer 1
T0
T1
Oscilator

Nh vy c th thy c im u tin m PIC16F877 em li v ni bt so
vi VK 8051 l dng PIC16F877 nhng c tnh k thut hn hn so vi b
VK 8051 th hin nhng im sau:

VK8051 VK PIC16F877
c tnh S lng c tnh S lng
ROM trn chp
RAM
B nh thi
Cc chn vo ra
Cng ni tip
Ngun ngt
4K byte
128 byte
2
32
1
6
ROM trn chp
RAM
B nh thi
Cc chn vo ra
Cng ni tip
Ngun ngt
8K
368 byte
3
40
2
14
Ngoi nhng c tnh trn th b vi iu khin PIC16F877 cn c mt c
im hn hn so vi 8051 l c 10 bt chuyn i A/D trn chp iu ny s gip
chng ta khng phi mt mt b chuyn i (s dn n kt ni dy tr nn phc
tp).
Mt c im na l b vi iu khin PIC16F877 c b to dao ng ch
trn chp iu ny s trnh c nhng sai s khng cn thit trong vic to
Copyright (c) IRF Group
xung dao ng, vi iu khin PIC16F877 c kh nng t Reset bng b WDT, v
c thm 256 byte EEPROM.
2.3. S t chc b nh Pic16F877.
Pic16F877 c 3 khi b nh. B nh chng trnh PLASH, b nh d liu
RAM, b nh EEPROM.
2.3.1. S t chc b nh chng trnh FLASH v Stack nh.
Vi iu khin PIC16F877 c mt b m chng trnh 13 bit v c 8Kx14
t m ca b nh chng trnh FLASH, c chia thnh 4 trang mi trang
2Kx14 t m.
Khi Reset a ch bt u thc hin chy l 0000h, Vector ngt bt u
0004h.
Stack c 8 mc dng lu a(PC) ch lnh thc hin tip theo sau lnh
CALL v khi xy ra ngt.
Bn b nh chng trnh v cc ngn xp.


2.3.2. S t chc b nh d liu RAM
RAM l b nh c th c v ghi, n khng lu d liu khi mt in, b
nh RAM ca PIC16F877 c 4 bank, mi bank c di a ch 0-7FH(128byte)
trn cc bank nhng thanh ghi a mc ch, n hot ng nh mt RAM
Copyright (c) IRF Group
tnh.(General purpose register), v nhng thanh ghi chc nng c bit(Special
function registers) vng a ch thp. Bt RP1(Status <6>) v bit RP0(Status
<5>) dng la chn bank lm vic.
RP1:RP0 Bank
00 0
01 1
10 2
11 3

Hnh nh cc bank nh sau:



Cc thanh ghi a mc ch: (General Purpose Register), cc thanh ghi
ny c truy cp bng c hai cch trc tip hoc gin tip qua thanh ghi
FSR,tng cng c 368 byte.
Cc thanh ghi chc nng c bit. Cc thanh ghi ny c dng bi
CPU v cc khi ngoi vi iu khin s hot ng theo yu cu ca thit b.
Copyright (c) IRF Group
Cc thanh ghi ny c th c phn loi vo hai b phn trung tm (CPU) v
ngoi vi.
Sau y l mt s thanh ghi c bit quan trng.
* Cc thanh ghi trng thi STATUS: C 4 thanh ghi trng thi trn 4 dy,
ti cc a ch 03h, 83h, 103h, 183h. Cc thanh ghi ny cho bit trng thi ca
phn t lgic ton hc ALU, trng thi RESET, trng thi ca cc bit la chn
dy thanh ghi cho b nh d liu.
Thanh ghi trng thi c th l kt qu ca mt s lnh nh l vi mt s
thanh ghi khc. Nu thanh ghi trng thi l kt qu bi mt lnh m tc ng n
cc bit Z, DC, C th vic ghi vo cc bit ny l khng th.
* Cc thanh ghi la chn OPTION_REG: C hai thanh ghi la chn ti
cc a ch 81h v 181h, cc thanh ghi ny c th c hoc ghi, n cha ng
nhiu bit iu khin khc nhau xc nh h s nh trc TMR0/h s nh
sau WDT, ngt ngoi INT, TMR0, cc in p treo trn cng B
* Cc thanh ghi INTCON: C 4 thanh ghi INTCON ti cc a ch 0Bh,
8Bh, 10Bh, 18Bh. Cc thanh ghi ny c th c v ghi, n cha ng nhiu s
cho php v cc bit c cho vic trn thanh ghi TMR0, cc ngt thay i cng RB
v chn cc ngt ngoI RB0/INT.
* Thanh ghi PIE1: Ti a ch 8Ch, cha ng cc bit cho php ring l
cho cc ngt ngoi vi.
* Thanh ghi PIR1: Ti a ch 0Ch, cha ng cc bit c ring l cho cc
ngt ngoi vi.
* Thanh ghi PIE2: Ti a ch 8Dh, cha ng cc bit cho php ring l
cho cc ngt ngoi vi CCP2, ngt xung t tuyn SSP v EEPROM ghi cc hot
ng ngt .
* Thanh ghi PIE2: Ti a ch 8Dh, cha ng cc c bit cho cc ngt
ngoi vi CCP2, ngt xung t tuyn SSP v EEPROM ghi cc hot ng ngt .
* Thanh ghi PCON (Power Control): Cha bit c cho php phn bit gia
vic Reset h thng (POR) Reset MCLR ngoi vi Reset WDT.
* PCL v PCLATH. Chng trnh m ch r a ch ca lnh tip theo
c thc hin. PC c rng 13 bit, byte thp c gi l thanh ghi PCL, thanh
ghi ny c th c hoc ghi. Byte cao c gi l thanh ghi PCH, n cha cc bit
PC<12:8> v khng trc tip c hoc ghi m ton b s cp nhp ca n thng
qua thanh ghi PCLATH. Khi reset 5 bit PCLATH<4:0> np ti PCH, khi thc
hin cc lnh CALL, GOTO 11 bit Ofcode<10:0> v 2 bit PCLATH<4:3> to
thnh 13 bit np vo PC. Do vy khi dng lnh CALL, GOTO ch n hai bit
PCLATH<4:3> cng chnh l hai bit ch cc trang ca b nh chng trnh.




Hnh nh s np PCLATH ti PC
Copyright (c) IRF Group

2.3.3. Cc trang b nh chng trnh.
PIC16F877 c 8Kx14 PLASH cc lnh CALL, GOTO ch cung cp 11 bit
a ch cho php r nhnh c 2k<0->2
11
-1>ca mt trang b nh chng trnh
2 bit cao c cung cp bi 2 bit 3,4 ca PCLATH<4:3> do vy tu vic thit
lp cc bit 3,4 ca PCLATH trc khi lnh CALL, GOTO thc hin cho php r
nhnh ti cc trang b nh khc nhau.
Ch cc lnh RETURN, RETFIE khng lm thay i PCLATH
V d t trang 0 gi chung trnh con trang 1 nh sau
ORG 0000h
Goto main

main

BSF PCLATH,3
BCF PCLATH,4
CALL SUB1
BCF PCLATH,3
BCF PCLATH,4

LOOP

GOTO LOOP

ORG 0X800H

SUB1

Copyright (c) IRF Group
RETURN

END
2.3.4. Truy cp b nh RAM bng a ch trc tip, gin tip.


* V d c nh 0xE0 bng a ch trc tip

BSF STATUS,RP0 ;chn bank 1
BCF STATUS,RP1
MOVF 0XE0,W ;copy nh 0xE0( bank 1) ti W

BCF STATUS,RP0 ;chn bank0
BCF STATUS,RP1
MOVF 0X30,W ;copy nh 0x30( bank 0) ti W

* Truy cp RAM bng a ch gin tip
Thanh ghi FSR ch ra a ch(0->0XFF) nh cn truy cp, thanh ghi
INDF cho ni dung nh truy cp, bit IRP thanh ghi STATUS<7> ch ra
bank truy cp
v d xo cc nh t a ch 0x20-0xFF

MOVLW 0X1A
MOVWF FSR
BCF STATUS,IRP ;bank 0
Copyright (c) IRF Group
LOOP
INCF FSR, F
CLRF INDF
MOVF FSR, W
XORLW 0XFF
BTFSS STATUS, ZR
GOTO LOOP


2.3.5. B nh d liu EEPROM v b nh chng trnh FLASH.
Cc b nh ny c th c v ghi trong khi cc hot ng vn din ra bnh
thng. B nh d liu khng trc tip sp xp d liu trn cc thanh ghi d liu
cn trng. Thay v l nh cc a ch gin tip qua cc thanh ghi chc nng
c bit. C 6 thanh ghi SFR dng c v ghi b nh chng trnh v b nh
d liu EEPROM l cc thanh ghi:
EECON1 EEDATH
EECON2 EEADR
EEDATA EEADRH
B nh d liu EEPROM cho php c v ghi cc byte. Khi c tc ng ti
khi b nh d liu. Thanh ghi EEDATA gi 8 bit d liu c/ghi v thanh
ghi EEADR gi a ch v tr ca EEPROM c truy cp. Cc thanh ghi
EEDATH v EEADRH khng c s dng truy cp d liu EEPROM. Cc
thit b ny c ti 256 byte ca d liu EEPROM vi a ch t 00h ti FFh.
B nh d liu EEPROM c xp vo loi cao cho cc chu trnh xo/ghi.
Thi gian c iu khin bi mt b nh thi trn chip. Thi gian ghi s thay
i cng vi in th v nhit .
B nh chng trnh cho php c v ghi cc k t. Khi tc ng n khi
chng trnh nh, cc thanh ghi EEDATH, EEDATA c dng 2 byte k t gi 14
bit d liu c/ghi v cc thanh ghi EEADRH, EEADR c dng hai bit t m
vi 13 bit a ch ca v tr EEPROM c truy cp. Nhng thit b ny c th c
ti 8K t m ca chng trnh EEPROM vi mt a ch gii hn t 0h ti 3FFh.
* Thanh ghi EEADR.
Thanh ghi a ch c th nh a ch ln nht l 256 Byte ca d liu
EEPROM hoc ln nht l 8K k t ca chng trnh FLASH. Khi la chn gi
tr mt a ch chng trnh, byte MS ca a ch s c ghi vo thanh ghi
EEADRH v byte LS c ghi vo thanh ghi EEADR. Khi la chn mt gi tr
a ch d liu, ch c byte LS ca a ch c ghi ti thanh ghi EEADR.
* Cc thanh ghi EECON1 v EECON2.
EECON1 l thanh ghi iu khn cho vic nhp d liu b nh.
EECON2 khng phI l thanh ghi vt l. Khi c thanh ghi EECON2 s
c ton b l 0. Thanh ghi EECON2 c s dng dnh ring cho vic ghi mt
cch trnh t vo b nh.
Copyright (c) IRF Group
Bit iu khin EEPGD xc nh nu vic nhp d liu s l nhp mt
chng trnh hoc nhp mt b nh d liu. Khi xo, mt s hot ng tip theo
s hot ng trn b nh d liu. Khi set, mt s hot ng tip theo s hot
ng trn b nh chng trnh.
Cc bit iu khin RD v WR kch hot cc hot ng c v ghi theo th
t. Trong phn mm nhng bit ny khng th b xo, ch c set. Chng b xo
trong phn cng khi m cc hot ng c hoc ghi hon thnh. Vic khng th
xo bit WR trong phn mm ngn nga s kt thc bt ng hoc kt thc sm
ca mt hot ng ghi.
2.3.6. c b nh d liu EEPROM.
c mt v tr b nh d liu, ta phi ghi a ch vo thanh ghi EEADR,
xo bit iu khin EEPGD (EECON1<7>) sau set bit iu khin RD
(EECON1<0>). D liu vn tn ti trn nhiu lnh tip theo trn thanh ghi
EEDATA, do n c th c c bi lnh tip theo. EEDATA s gi gi tr
ny cho ti khi c hot ng c d liu khc hoc l ti khi c ghi.
V d: c d liu EEPROM.
BSF STATUS, RP1 ;
BCF STATUS, RP0 ; Chn dy 2
MOVF ADDR, W ; a ch b nh d liu c
MOVWF EEADR ;
BSF STATUS, RP0 ; Dy 3
BCF EECON1, EEPGD ; Chuyn ti b nh d liu
BSF EECON1, RD ; bt u hot ng c
BCF STATUS, RP0 ; Dy 2
MOVF EEDATA, W ; W = EEDATA
2.3.7. Ghi vo b nh d liu EEPROM.
ghi vo b nh EEPROM th u tin a ch phi c ghi vo thanh
ghi EEADR v d liu ghi vo thanh ghi EEDATA, v trnh t c tin hnh
nh v d sau:
V d: Ghi d liu EEPROM.
BSF STATUS, RP1 ;
BSF STATUS, RP0 ; Dy 3
BTFSC EECON1, WR ; i cho
GOTO $-1 ; vic ghi kt thc
BCF STATUS, RP0 ; Dy 2
MOVF ADDR, W ; a ch
MOVWF EEADR ; ghi vo EEADR
MOVF VALUE, W ; d liu
MOVWF EEDATA ; ghi vo EEDATA
BSF STATUS, RP0 ; Dy 3
BCF EECON1, EEPGD ; Con tr ti b nh d liu
Copyright (c) IRF Group
BSF EECON1, WREN ; Cho php ghi ch khi cc ngt khng cho php
BCF INTCON, GIE ;
MOVLW 0x55 ; ghi 55h ti
MOVWF EECON2 ; EECON2
MOVLW 0xAA ; ghi AAh ti
MOVWF EECON2 ; EECON2
BSF EECON1, WR ; Bt u hot ng ghi ch khi cc ngt cho php
BSF INTCON, GIE ; Nu dng cc ngt otherwise discard
BCF ECON1,WREN ; khng th ghi

2.3.8. c chng trnh FLASH.
c mt v tr b nh chng trnh c th c thc hin bi vic ghi 2 byte
a ch vo cc thanh ghi EEADR v EEADRH, set bit iu khin EEPGD
(EECON1<7>) v sau set bit iu khin RD (EECON1<0>). Ch khi bit iu
khin c c set, vi x l s s dng chu trnh lnh th hai c d liu.
D liu s c trong chu trnh th 3, trong thanh ghi EEDATA v EEDATH,
do n c th c l hai byte trong cc lnh tip theo. D liu c th c
a ra ngoi ca EEDATH:EEDATA bt u vi lnh th 3 sau lnh BSF
EECON1, RD. V hai thanh ghi EEDATA v EEDATH s gi gi tr ny cho ti
khi c hot ng c mt gi tr khc hoc c hot ng ghi.
V d:
BSF STATUS, RP1 ;
BCF STATUS, RP0 ; Bank 2
MOVF ADDRL, W ; Write the
MOVWF EEADR ; address bytes
MOVF ADDRH,W ;for the desired
MOVWF EEADRH ; address to read
BSF STATUS, RP0 ; Bank 3
BSF EECON1, EEPGD ;Point to Program memory
BSF EECON1, RD ;Start read operation
NOP ;Required two NOPs
NOP ;
BCF STATUS, RP0 ;Bank 2
MOVF EEDATA, W ;DATAL = EEDATA
MOVWF DATAL ;
MOVF EEDATH,W ;DATAH = EEDATH
MOVWF DATAH ;
2.3.9. Ghi ti FLASH.
ghi mt v tr b nh chng trnh c th c thc hin bi vic ghi 2 byte
a ch vo cc thanh ghi EEADR v EEADRH, ghi d liu 13 bit vo 2 thanh
ghi EEDATA v EEDATH theo v d sau.
Copyright (c) IRF Group
V d:
BSF STATUS, RP1 ;
BCF STATUS, RP0 ; Bank 2
MOVF ADDRL, W ; ghi a chi
MOVWF EEADR ;
MOVF ADDRH,W ;
MOVWF EEADRH ;
MOVF VALUEL,W ; ghi d liu
MOVWF EEDATA
MOVF VALUEH,W
MOVWF EEDATH
BSF STATUS, RP0 ; Bank 3
BSF EECON1, EEPGD ;Point to Program memory
BSF EECON1, WREN ;enable write operation
BCF INTCON,GIE ; cm ngt nu ngt cho php
MOVLW 0x55 ; ghi 55h ti
MOVWF EECON2 ; EECON2
MOVLW 0xAA ; ghi AAh ti
MOVWF EECON2 ; EECON2
BSF EECON1,WR
NOP
NOP
BCF EECON1, WREN ;disable write operation
BSF INTCON,GIE ; ngt hot nu ngt cho php
2.4. Cng vo ra
Mt s chn ca cc cng vo/ra c tch hp vi mt s hm c th thay
i ph hp vi nhng thit b ngoi vi. Nhn chung khi tht b ngoi vi hot
ng, cc chn c th khng s dng vi mc ch lm chn vo ra.
2.4.1. Cng A v thanh ghi TRISA
Cng A l cng hai chiu vi rng ng truyn l 6 bit. iu khin
vic truy xut d liu ngi ta dng thanh ghi TRISA . Nu t bt TRISA = 1 th
lc ny cng A s tng ng c cc chn l chn vo .Nu xo bt TRISA = 0 th
lc ny cng A s tng ng c cc chn l chn ra. Vic c cng A chnh l
c trng thi ca cc chn, trong khi vic vit phi qua vic vit cc cht ca
cng. Cc chn ca cng A ch yu c s dng vi mc ch chnh l nhn tn
hiu tng t hoc lm cc chn vo ra. Ring chn RA4 c th a hp vi chn
vo b Timer 0 v khi n tr thnh chn RA4/T0CKI. Chn ny nh mt u
vo ca Schmitt Trigger v n m u ra. Cc chn khc ca cng A l chn vo
vi b TTL. Vic iu khin cc chn ny thng qua vic t hay xo cc bt ca
thanh ghi ADCON1. Thang ghi TRISA iu khin trc tip cc chn ca cng A,
Copyright (c) IRF Group
khi s dng cc chn ny nhn tn hiu tng t vo ta phi chc chn rng
cc bt ca thanh ghi TRISA c t ri
S khi chn RA3:RA0 v chn RA5 v ca chn RA4/TOCKI ca cng A


2.4.2. Cng B v thanh ghi TRISB
Cng B l cng hai chiu vi rng ng truyn l 8 bit.Tng ng vi
n iu khin trc tip d liu ta s dng thanh ghi TRISB. Nu t bt TRISB
= 1 th lc ny cc chn ca cng B c nh ngha l chn vo. Nu xo bt
TRISB = 0 th lc ny cc chn ca cng B c nh ngha l chn ra. Ni dung
ca cht ra c th chn trn mi chn.
C 3 chn ca cng B c th a hp vi cc chng trnh vn hnh bng
in p thp. l cc chn sau: RB3/PGM, RB6/PGC, RB7/PGD. S thay i
hot ng ca nhng chn ny c miu t trong phn c tnh ni bt. Mi
chn ca cng B c mt kh nng dng bn trong nhng yu. iu ny c
trnh by bi vic xo bt RBPU (bt 7 ca thanh ghi OPTION_REG). Kh nng
dng ny s t ng tt i khi cc chn ca cng c nh ngha l chn ra.
Kh nng dng ny s t ng mt i khi ta RESET. Bn chn ca cng B, t
RB7 n RB4 c c tnh l ngt khi thay i trng thi. Ch nhng chn c
nh dng l nhng chn vo th ngt ny mi tn ti. Mt vi chn RB7:RB4
c nh dng nh chn ra no thi hnh ngt trn s thay i so snh. Chn vo
RB7:RB4 c so snh vi gi tr c ca cht ln c cui cng ca cng B.
Copyright (c) IRF Group
S ghp i khng khp chn ra ca RB7:RB4 bng lnh OR lm pht ra ngt
vi c bt RBIF ca thanh ghi INTCON. Ngt ny c th khi ng thit b t
trng thi SLEEP.
S khi ca chn RB3 n RB0 , chn RB7 : RB4 ca Cng B

2.4.3. Cng C v thanh ghi TRISC
Cng C l cng hai chiu vi rng ng truyn l 8 bit .Tng ng vi
vic iu khin n l thanh ghi TRISC. Nu t bt TRISC = 1 th tng ng vi
chn ca cng C l chn vo. Nu ta xo bt TRISC = 0 th tng ng vi n
chn ca cng C l chn ra . t ni dung ca cht ra c th t trn chn chn.
Cng C a hp vi vic vn hnh thit bi ngoi vi. Chn ca cng C thng qua
b m Schmitt Trigger u vo.
Khi ch I
2
C hot ng, th cc chn cng PORTC<4:3> c th c sp
xp vi mc I
2
C thng hoc vi mc SMBUS bng cch s dng bit CKE
(SSPSTAT<6>) l bt 6 ca thanh ghi SSPSTAT.
Khi vn hnh cc thit b ngoi vi bng vic xc nh bt TRIS ca mi chn
cng C. Mt s phn ph c th ghi ln bt TRISC lm cho chn ny tr thnh
chn ra, trong khi th mt s phn ph khc li ghi ln bt TRIS lm cho
chn ny tr thnh chn vo. T khi nhng bit TRIS ghi th trong vic tc
ng trong cc thit b ngoi vi l c th, nhng lnh c-sa- ghi (BSF, BCF,
XORWF) vi thanh ghi TRISC nh l ni gi ti s c trnh. Ngi s dng
nn cp ti vic phn chia kt ni cc thit b ngoi vi cho vic set chnh xc
cc bit TRIS.
S khi chn RC <0 : 2 > RC< 5: 7 > v chn RC < 3: 4> cng C
Copyright (c) IRF Group



2.4.4. Cng D v thanh ghi TRISD
Cng D c 8 bt c b m u vo Schmitt Trigger. Mi chn c sp xp
ring l nh u vo hoc u ra. Cng D cng c th c sp xp nh l mt
cng vi x l 8 bit (cng ph song song) bng vic t bt iu khin
PSPMODE(TRISE<4>) v trong ch ny vng m u vo l TTL.










S khi cng D
Copyright (c) IRF Group

2.4.5. Cng E v thanh ghi TRISE
Cng E c 3 chn l RE0/RD/AN5, RE1/WR/AN6, RE2/CS/AN7. Cc chn
ny c th sp xp ring l l cc u vo hoc cc u ra, v cc chn c vng
m u vo l cc mch Schmitt Trigger.
Cng vo/ra E tr thnh u vo iu khin cho cng vi x l khi bit
PSPMODE(TRISE<4>) c t. V trong ch ny phi chc chn rng cc
bit TRISE<2:0> c t (cc chn c nh dng l cc u vo s), thanh ghi
ADCON1 phi c nh dng cho vic s vo/ra v vng m u vo l TTL.
Cc chn cng E cng c tch hp vi cc u vo tng t v trong
trng hp ny cc chn s c l 0.
Thanh ghi TRISE iu khin trc tip cc chn RE, ngay c khi chng c
dng l cc u vo tng t.









S khi ca cng E :
Copyright (c) IRF Group


2.5. Cc B Timer ca chip:
B vi iu khin PIC16F87X c 3 b Timer l:Timer0, Timer1, Timer2
2.5.1. B Timer 0
L b nh thi hoc b m c nhng u im ni bt sau:
+ 8 bit cho timer hoc b m
+ C kh nng c v vit
+ C th dng ng h bn trong hoc bn ngoi
+ C th chn cnh xung ca xung ng h
+ C h s chia cho xung u vo c th lp trnh li bng phn mm
+ Ngt trn
Hot ng ca Timer 0:
Timer 0 c th hot ng nh mt b nh thi hoc mt b m. Vic chn
b nh thi hoc b m c th c xc lp bng vic xo hoc t bt TOCS
ca thanh ghi OPTION_REG<5>.
Nu dng h s chia xung u vo th xo bit PSA ca thanh ghi
OPTION_REG<3>.
Trong ch b nh thi c la chn bi vic xo bit T0CS (OPTION
REG<5>), n s c tng gi tr sau mt chu k lnh nu khng chn h s
chia xung u vo. V gi tr ca n c vit ti thanh ghi TMR0.
Ch m c la chn bi vic set bit T0CS (OPTION REG<5>).
Trong ch b m, n s c tng xung i xung nu xo bit T0SE
Copyright (c) IRF Group
(OPTION_REG<4>) hoc xung i ln nu set bit T0SE. V gi tr ca n c
vit ti thanh ghi TMR0.
Khi dng xung clock bn ngoi cho b nh thi Timer0 v khng dng h
s chia clock u vo Timer0 th phi p ng cc iu kin cn thit c th
hot ng l phi bo m xung clock bn ngoi c th ng b vi pha xung
clock bn trong (T
OSC
).
S khi ca Timer0 v WDT:


Cc h s chia
H s chia dng cho Timer 0 hoc b WDT. Cc h s ny khng c kh
nng c v kh nng vit. chn h s chia xung vo Timer0 hoc cho b
WDT ta tin hnh xo hoc t bt PSA ca thanh ghi OPTION_REG<3>
Nhng bt PS2, PS1, PS0 ca thanh ghi OPTION_REG<2:0> dng xc
lp cc h s chia.
Ngt ca b Timer0
Ngt ca b Timer 0 c pht sinh ra khi thanh ghi TMR0 b trn tc t
FFh quay v 00h. Khi bt T0IF ca thanh ghi INTCON<2> s c t. Bt
ny phi c xa bng phn mm nu cho php ngt bit T0IE ca thanh ghi
INTCON<5> c set. Timer0 b dng hot ch SLEEP ngt Timer 0
khng nh thc b x l ch SLEEP.
Copyright (c) IRF Group
*Thanh ghi OPTION_REG

bit 5 TOCS la chn ngun clock
1=Clock ngoi t chn T0CKI
0=Clock trong Focs/4
bit 4 T0SE bit la chon sn xung clock
1=Timer 0 tng khi chn T0CKI t cao xung thp(sn xung)
0=Timer 0 tng khi chn T0CKI t thp ln cao(sn xung)
bit 3 PSA bit gn b chia xung u vo
1=gn b chia Prescaler cho WDT
0=gn b chia Prescaler cho Timer 0
bit 2:0 PS2:PS1 la chn h s chia xung vo theo bng sau
PS2:PS0 Timer0 WDT
000 1:2 1:1
001 1:4 1:2
010 1:8 1:4
011 1:16 1:8
100 1:32 1:16
101 1:64 1:32
110 1:128 1:64
111 1:256 1:128
2.5.2. B Timer 1
B Timer1 c th l b m hoc b nh thi vi u im sau:
+16 bt cho b m hoc b nh thi (gm hai thanh ghi
TMR1H:TMR1L).
+C kh nng c v vit
+C th chn xung ng h bn trong hoc ng h bn ngoi
+C th ngt khi trn FFFFh v 0000h
Timer1 c 1 thanh ghi iu khin, l thanh ghi T1C0N. B Timer1 c
hot ng hay khng hot ng l nh vic t hoc xo bt
TMR1ON(T1CON<0>).
Hot ng ca b Timer1
N c th hot ng mt trong cc ch sau:
+ L 1 b nh thi 16 bit.
+ L mt b m c ng b .
+ L mt b m khng c ng b.
Phng thc hot ng ca b ny c xc nh bi vic chn ngun xung
vo Timer 1. Ngun xung ng h c chn bi vic t hoc xo bt TMR1CS
(T1CON<1>). ch b nh thi, u vo l clock trong Fosc/4, bit ng b
Copyright (c) IRF Group
T1SYNC(T1CON<2>) khng c tc dng v clock trong lun ng b. Ch
b m hot ng hai ch : C ng b xung vo xo bit
T1SYNC(T1CON<2>), khng ng b xung vo set bit T1SYNC(T1CON<2>)
Timer 1 tng sn ln xung u vo.
Khi b dao ng Timer1 cho php hot ng th cc chn
RC1/T1OSI/CCP2,
RC0/T1OSO/T1CKI tr thnh chn vo.
ch m c ng b b m tng mi khi sn ln chn RC0 hoc
chn RC1 nu bit T1OSCEN xo v xung vo phi ng b vi clock trong,
ch ny b m khng tng trong trang thI SLEEP.
ch m khng ng b Timer 1 tng mi khi sn ln chn RC0
hoc chn RC1 nu bit T1OSCEN xo, ch ny b m tip tc tng
trong trang thi SLEEP v c kh nng trn gy ra ngt khi b s l c
nh thc.
Dao ng ca Timer1
Mch dao ng thch anh c xy dng gia 2 chn T1OSI v T1OS0. Khi
dao ng c cung cp ch cng sut thp th tn s cc t ca n s l
200kHz v trong n ch SLEEP n cung cp tn s 32kHz
Ngt ca b Timer1
Cp thanh ghi TMR1H v TMR1L tng t gi tr 0000h n gi tr FFFFh
n gi tr ny tip tc tng th trn v quay li gi tr 0000h. V ngt xut hin
khi trn qu gi tr FFFFh khi ny c ngt TMR1IF s c t. Ngt c th hot
ng hoc khng hot ng nh vic t hoc xo bt TMR1IE


* Thanh ghi iu khin Timer1 T1CON:
Copyright (c) IRF Group

bt 7,6 khng s dng
bit 5,4 T1CKPS1:T1CKPS0 la chn h s chia xung vo
T1CKPS1:T1CKPS0
00 1:1
01 1:2
10 1:4
11 1:8
bit 3 T1OSCEN bit iu khin b dao ng Timer1
1= B dao ng hot ng
0= B dao ng khng hot ng
bit 2 bit iu khin xung clock ngoi ng b
khi TMR1CS=1
bit2=0 c ng clock ngoi
=1 khng ng b clock ngoi
khi TMR1CS=0 bit ny khng c tc dng
bit 1 TMR1CS bit la chn ngun xung clock vo
TMR1CS=1 clock t chn RC0/T1OSO/T1CKI(sn ln)
TMR1CS=0 clock trong Fosc/4
Bit 0 bit bt tt Timer
1= Timer 1 enable
0=Timer 1 Disable
2.5.3. B Timer 2
B Timer2 c nhng c tnh sau y ;
+ 8 bt cho b nh thi ( thanh ghi TMR2 )
+ 8 bt vng lp ( thanh ghi PR2 )
+ C kh nng c v vit c hai thanh ghi ni trn
+ C kh nng lp trnh bng phn mm t l trc
+ C kh nng lp trnh bng phn mm t l sau
Ch SSP dng u ra ca TMR2 to xung clock. Timer2 c mt thanh
ghi iu khin l thanh ghi T2CON. Timer 2 c th tt bng vic xo bt
TMR2CON ca thanh ghi T2CON
Hot ng ca b Timer2
Timer 2 c dng ch yu phn iu ch xung ca b CCP, thanh ghi
TMR2 c kh nng c v vit, n c th xa bng vic reset li thit b. u
vo ca xung c th chn cc t sau ; 1:1 , 1:2 hoc 1:16 vic chn cc t ny c
th iu khin cc bt sau T2CKPS1v bt T2CKPS0
Ngt ca b Timer2
Copyright (c) IRF Group
B Timer2 c 1 thanh ghi 8 bt PR2 . Timer 2 tng t gi tr 00h cho n
khp vi PR2 v tip theo n s reset li gi tr 00h v lnh k tip thc hin.
Thanh ghi PR2 l mt thanh ghi c kh nng c v kh nng vit. Thanh ghi
PR2 bt u t gi tr FFh u ra ca TMR2 l ng dn ca cng truyn thng
ng b, n c dng pht cc xung ng h

* Thanh ghi T2CON

bit 7 khng s dng
bit 6-3 TOUTPS3: TOUTPS0 bit la chn h s u ra Timer 2
0000=1:1
0001=1:2
0010=1:3

1111=1:16
bit 2 TMR2ON bit bt tt hot ng Timer 2
1= enable
0= disable
bit 1- 0 T2CKPS1:T2CKPS0 chn h chia u vo
00 = 1:1
01 = 1:4
1x=1:16

Copyright (c) IRF Group
2.6. Truyn Nhn D Liu ng B, D B
B truyn thng ng b, d b c th nh dng cc ch sau
+ d b (song cng ton phn)
+ ng b chnh (bn song cng)
+ ng b ph (bn song cng)
y khi s dng truyn thng ng b hoc d b ta phi s dng bt
SPEN ca thanh ghi RCSTA v bt 7,6 ca thanh ghi TRISC nh dng cc
chn RC6/TX/CK v RC7/RX/DT
2.6.1. Tc truyn
Tc truyn c cung cp cho c hai ch l truyn thng ng b v d
b thanh ghi SPBRG iu khin chu k chy 8 bt ca timer. Trong ch d b
,bt BRGH ca thanh ghi TXSTA c dng Iu khin tc ,cn trong
ch ng b n khng c s dng
Cng thc tnh tc truyn:
SYNC BRGH=0(Low speed) BRGH=1(High speed)
0 Asynchronous
(Baud rate=FOSC/(64*(X+1))
Synchronous
(Baud rate=FOSC/(16*(X+1))
1 Synchronous
(Baud rate=FOSC/(4*(X+1))
Khng s dng
X l gi tr np vo thanh ghi SPBRG
v d dng thch anh 20MHZ tc FOSC=20.000.000Hz
c tc baud 9600 khi BRGH=1 l
X= 129 1 )
) 9600 * 16 (
000 . 000 . 20
( = np vo SPBRG
*Thanh ghi iu khin v trng thi truyn

bit 7 CSRC bit la chn clock ch dng trong ch ng b
1= Master mode clock t BRG
0= Slave Mode clock t bn ngoi
bit 6 TX9 cho php truyn 9 bit
1= truyn 9 bit
0=truyn 8 bit
bit 5 TXEN bit cho phep truyn
1= cho php truyn
0=khng cho php truyn
bit 4 SYNC la chn mode USART
Copyright (c) IRF Group
1= ng b
0= khng ng b
bit 3 khng s dng
bit 2 bit la chn tc cao
1=tc cao
0=tc thp
bit 1 TRMT cho trng thI thanh ghi dch TSR
1= TSR rng
0= TSR y
bit 0 TX9D D liu bit th 9 truyn i

*Thanh ghi iu khin v trng thi nhn

bit 7 SPEN cho php cng truyn ni tip
1= cho php hot ng
0=khng cho php
bit 6 RX9 cho php nhn bit th 9
1= nhn 9 bit
0= nhn 8 bit
bit 5 SREN Cho php nhn ring r
Ch khng ng b v ch ng b ph bit ny khng s
dng
Ch ng b ch
0= khng cho nhn ring r
1= cho php nhn ring r
bit 4 CREN cho php tip tc nhn
ch khng ng b
1= cho php tip tc nhn
0= khng cho php tip tc nhn
ch ng b
1= cho php tip tc nhn n khi bit CREN xo
0= khng cho php tip tc nhn
bit 3 ADDEN Cho php nh a ch dng trong ch khng ng b
truyn 9bit
1=Cho php nh a ch, bit RSR<8>l set cho php ngt np d
liu vo m
0=nhn bnh thng
bit 2 FERR bit li khung truyn
1= co li
Copyright (c) IRF Group
0= khng li
bit 1 OERR bit li trn
1= c li trn
0=khng li trn
bit 0 RX9D bit th c a vo y
2.6.2. Ch truyn thng khng ng b
Trong ch ny d liu c nh dng nh sau: u tin l bt START ,
tip theo l 8 hoc 9 bt d liu, cui cng l bt STOP. Thng thng d liu
c nh dng dng 8 bt. Vic truyn v nhn d liu c tin hnh vi
nhng bt thp trc. Vic truyn v nhn c th tin hnh c lp nhau, khi s
dng c th nh dng d liu v tc truyn. Vic truyn thng d b dng khi
ch SLEEP
*Truyn d liu ch di b
Quan trng nht trong vic truyn d liu l thanh ghi TSR. D liu ca n
c th c vit v c thng qua b m l thanh ghi TXREG. Thanh ghi TSR
khng c np gi tr cho ti khi bt STOP ca ln trc chuyn i. Khi bt
STOP chuyn i n s np gi tr mi ti thanh ghi TSR t thnh ghi TXREG.
Nu thanh ghi TXREG rng n s t c bt TXIF ca thanh ghi PIR1. Trong khi
c bt TXIF cho bit trng thi ca thanh ghi TXREG, th bt TRMT cho bit
trng thi ca thanh ghi TSR. Bt trng thi TRMT ch dng c, n c t
khi thanh ghi TSR rng. Vic truyn d liu hot ng khi ta t bt TXEN ca
thanh ghi TXSTA. Vic truyn d liu ch hot ng khi d liu c np ti
thanh ghi TXREG v tc truyn c sn sinh t xung ng h. Khi vic
truyn d liu bt u ln u tin th thanh ghi TSR lc rng. Ngay lp tc
d liu c truyn t thanh ghi TXREG ti thanh ghi TSR v sau thanh ghi
TXREG rng, sau n li quay li nh trn.
vic truyn 9 bt d liu I th bt truyn TX9 ca thanh ghi TXSTA phi
c t v bt th 9 truyn i c vit ti bt TX9D. Bt th 9 ny phi c
vit trc, trc khi chuyn 8 bt d liu ti thanh ghi TXREG. Bi v d liu
vit ti thanh ghi ngay lp tc c chuyn ti thanh ghi TSR.
*Vic nhn d liu ch d d b
Trong ch d b, vic nhn d liu c kch hot bng vic t bt
CREN ca thanh ghi RCSTA.
Phn quan trng nht trong vic nhn d liu l thanh ghi RSR. Sau khi
nhn xong bt STOP, n chuyn d liu t thanh ghi RSR ti thanh ghi RCREG
nu thanh ghi ny trng. Nu vic truyn nhn hon thnh th c bt RCIF ca
thanh ghi PIR1 s c t. c th ngt hot ng ca n bng vic t bt RCIE
ca thanh ghi PIE1. C bt RCIF ch dng c, n c xa trong phn cng.
N s c xo khi thanh ghi RCREG c c l trng. Thanh ghi ny l mt
thanh ghi c b m i. N c kh nng nhn 2 byte d liu v truyn ti thanh
ghi RCREG FIFO v khi byte th 3 i vo thanh ghi RSR. Nu pht hin bt
STOP m thanh ghi RCREG vn y th bt bo li OERR s c t. Bt bo
Copyright (c) IRF Group
li ch c xo trong phn mm. Nu bt OERR c t th vic truyn d liu
t thanh ghi RSR ti thanh ghi RCREG b ngn cm v khng c d liu c
nhn. Cu trc ca bt bo li FERR c t khi bt STOP c pht hin
c xo. Bt FERR v bt th 9 l cc b m ging nh phng php b m.
Trong khi ang c thanh ghi RCREG n s np gi tr mi cho bt RX9D v
FERR
2.6.3. Truyn thng ng b ch ch
Trong ch d ny d liu c truyn nhn dui dng bn song cng (vic
truyn v nhn d liu khng th tin hnh ng thi cng mt lc). Khi ang
truyn d liu th vic nhn d liu b ngn cm. vic chn ch truyn thng
ng b c xc lp bng vic t bt SYNC ca thanh ghi TXSTA, ngoi ra bt
SPEN cn c t nh dng cc chn RC6/TX/CKv RC7/RX/DT cho
chn xung ng h v chn truyn d liu. Ch ch cn c xc lp bng
vic t bit CSRC ca thanh ghi TXSTA.
Vic nhn d liu trong ch truyn thng ng b ch. Tng t nh
truyn thng d b, n phi c thanh ghi TSR. thanh ghi ny c v vit d liu
thng qua b m l thanh ghi TXREG. Thanh ghi ny c np d liu trong
phn mm. Thanh ghi TSR s khng c np gi t cho ti tn thi truyn ht
bt cui cng ca ln truc . Khi truyn ht bt cui cng, th thanh ghi TSR
s np gi tr mi t thanh ghi TXREG. Thanh ghi TXREG rng th bt c ngt
TXIF s c t. C ngt ny c th quy nh hot ng hoc khng hot ng
bng vic t hoc xo bt TXIE ca thanh ghi PIE1. Trong khi c bt TXIF cho
bit trng thi ca thanh ghi TXREG, th bt TRMT cho bit trng thi ca thanh
ghi TSR. Bt trng thi TRMT ch dng c, n c t khi thanh ghi TSR
rng.
Vic truyn d liu hot ng bng vic t bt TXEN ca thanh ghi
TXSTA, bt d liu u tin s c di chuyn trn xung i ln ca xung clock
trn chn CLK. Vic truyn d liu c bt u bng thanh ghi TXREG v t
bt TXEN. u im y l tc thp c th c la chn. Tc truyn
c gi nguyn trong khi RESET khi xo 3 bt TXEN, CREN, SREN. Vic
truyn d liu c bt u ln u tin khi thanh ghi TSR rng, khi chuyn d
liu ti thanh ghi TXREG n ngay lp tc chuyn ti thanh ghi TSR v kt qu
l thanh ghi TXREG rng. Xo bt TXEN Trong khi ang truyn d liu l l do
vic truyn d liu b gin on v n phi dng li, v nu bt CREN hoc bt
SREN c t trong khi ang truyn cng l nguyn nhn gy ra vic truyn d
liu b gin on.
Vi mc ch truyn 9 bt d liu th bt TX9 ca thanh ghi TXSTA phi
c t v bt th 9 ny phi c vit ti bt TX9D. Bt th 9 ny phi c
vit trc khi vit 8 bt d liu ti thanhghi TXREG. Bi v d liu c vit ti
thanh ghi TXREG ngay lp tc c chuyn ti thanh ghi TSR, nu thanh ghi
ny rng. Nu thanh ghi TSR rng v thanh ghi TXREG c vit trc khi vit
gi tr mi ti bt TX9D, th hin ti n s np gi tr c trong bt TX9D.
Copyright (c) IRF Group
Vic nhn d liu ch ng b ch: ch nhn d liu ch ng
b ch c chn bng vic t bt SREN hoc bt CREN ca thanh ghi RCSTA.
D liu c a chn RC/RX/DT trn cnh xung ca xung ng h. Nu
bt SREN c t th ch c 1 t c nhn. nu bt CREN c t th vic
nhn c tip din cho ti tn khi bt ny c xo mi thi. C hai bt ny u
c t th bt CREN c u tin trc ri theo th t . Sau khi d liu
c nhn vo trong thanh ghi RSR n s chuyn ti thanh ghi RCREG. Khi
vic chun dch ny hon thnh th c bt RCIF ca thanh ghi PIR1 s c t.
Hot ng ca c ny c th c hoc khng nh vic t hoc xo bt RCIE ca
thanh ghi PIE1. RCREG l 1 thanh ghi c 2 b m l 2 thanh ghi. N c kh
nng nhn 2 byte d liu chuyn ti thanh ghi RCREG FIFO v byte th ba
bt u chuyn ti thanh ghi RSR. Trong khi ri bt cui cng ca byte th ba
m thanh ghi RCREG vn y th bt bo li OERR s c t va t trong
thanh ghi RSR s b li. Bt OERR c xa trong phn mm. Nu bt ny c
t th vic chuyn d liu t thanh ghi RSR ti thanh ghi RCREG b ngn cm.
Vic nhn bt th 9 cng tng t nh vic nhn bt d liu. Trong khi thanh ghi
RCREG ang c n s np gi tr mi cho bt RX9D. l Iu cn ch khi
ngi s dng dng truyn thng chn bt d liu
2.6.4. Truyn thng ng b ch ph
Truyn thng ng b ch ph khc vi truyn thng ng b ch
chnh trong trng hp xung ng h bn ngoi cung cp ti chn RC6/ TX /
CK. N c th cho php thit b nhn hoc truyn d liu trong ch SLEEP.
Ch ph c tin hnh bng vic xo bt CSRC ca thanh ghi TXSTA.
*Truyn d liu trong ch truyn thng ph: Hot ng ca ch
truyn thng ng b chnh v truyn thng ng b ph hon ton ging nhau,
ch khc l ch truyn thng ph c th hot ng ch SLEEP. Nu hai
t c vit ti thanh ghi TXREG v lnh SLEEP c tin hnh th n s tn
ti nhng im sau :
+T u truyn ti thanh ghi TSR v n chuyn i ngay lp tc
+T th hai c cha trong thanh ghi TXREG
+C bit TXIF s khng c t
+Khi t u tin c chuyn ra khi thanh ghi TSR. Thanh ghi TXREG
s chuyn t th hai vo thanh ghi TSR v by gi c bt TXIF s c t
+Nu bt TXIE c t ngt s c gi t SLEEP v ngt tnh ton cu
ca ngt s c gi.
Khi thit lp Truyn thng ng b ch ph ta c nhng bc sau:
+ thit lp ch cng truyn thng ng b ph th ta phi t bt
SYNC v Bt SPEN v xo bt CSRC
+ Xo bt CREN v SREN
+ Nu ngt c th hot ng, th phi t bt TXIE
+ Nu truyn thng chn bt th phI t bt TX9
+Vic truyn thng c th thit lp TXEN
Copyright (c) IRF Group
+ Nu vic truyn thng chn bit c thit lp th bt th chn phI c
np ti bt TX9D
+Khi mi bt u truyn th d liu c np ti thanh ghi TXREG
+ Nu s dng ngt th phI chc chn rng bt GIE v bt PEIE c
t
*Nhn d liu ch truyn thng ng b ph: Hot ng ca ch
truyn thng ng b ch ph v truyn thng ng b ch chnh hon
ton ging nhau, nhng ch ph n c th hot ng lnh SLEEP. Bt
SREN khng c s dng ch ny.
Nu vic nhn d liu c hot ng bng vic t bt CREN trc khi
lnh SLEEP c thc hin. T c nhn trong khi SLEEP, khi vic nhn d
liu hon thnh, th thanh ghi RSR s chuyn d liu ti thanh ghi RCREG V
nu bt RCIE c t, th ngt c th gi t lnh SLEEP.
2.7. B chuyn i tng t sang s :
B chuyn i tng t sang s c 8 knh i Pic16F877.
Tn hiu tng t c np vo b np in v gi in dung. Tn hiu ra in
hnh v gi in dung duy tr l u vo b chuyn i. B chuyn i A/D pht
ra kt qu s 10 bt. B chuyn i A/D c s chuyn in th cao v thp u
vo c la chn trong phn mm c s kt hp ca V
DD
, V
SS
, RA2, RA3.
B chuyn i A/D c c trng duy nht c th hot ng trong khi thit b
l trong trng thi SLEEP. hot ng trong phng thc ny A/D phi c
ly t ngun ng h bn trong mch dao ng RC.
B chuyn i A/D c 4 thanh ghi. l nhng thanh ghi:
A/D thanh ghi kt qu cao(ADRESH)
A/D thanh ghi kt qu thp(ADRESL)
Thanh ghi iu khin chuyn i A/D ( ADCON0)
Thanh ghi iu khin chuyn i A/D ( ADCON1)
Thanh ghi ADCON0 trnh by trong thanh ghi 8.1 iu khin hot ng ca
b chuyn i A/D. Thanh ghi ADCON1 trnh by trong hnh 8.2 nh dng hm
ca chn cng. Chn cng c th sp xp nh l tn hiu vo tng t hoc nh
l u vo ra s.
*Thanh ghi 8.1: Thanh ghi ADCON0 ( a ch 1Fh)
Bt 7-6: ADCS1:ADCS0 Nhng bt la chn ng h chuyn i A/D
00=F
OSC
/2
01= F
OSC
/8
10= F
OSC
/32
11= F
RC
(ng h xut pht t bn trong b chuyn i A/D dao ng
RC)
Bt 5-3:CHS2:CHS0 Bt chn knh tng t.
000=knh 0( RA0/AN0)
001=knh 1 (RA1/AN1)
010=knh 2 (RA1/AN2)
Copyright (c) IRF Group
011=knh 3 (RA3/AN3)
100=knh 4 (RA5/AN4)
101=knh 5 ( RE0/AN5)
110=knh 6 (RE1/AN6)
111=knh 7( RE2/AN7)
Bt 2 :GO/DONE bt trng thi chuyn i A/D
Nu ADON=1
1=chuyn i A/D ang thc hin (t bt ny bt u qu trnh
chuyn i)
0=chuyn i A/D khng trong qua trnh thc hin(Bt ny s t ng
xo bi phn cng sau khi qu trnh chuyn i A/D hon thnh.)
Bt 1: Bt ngi dng nh ngha .
Bt 0: ADON:bt bt chuyn i.
1= B chuyn i A/D hot ng
0=B chuyn i A/D tt v ngng hot ng.
*Thanh ghi 8.2 thanh ghi ADCON1(a ch 9Fh)
Bt 7 : ADFM : bt la chn kt qu nh dng .
Bt 6-4 : ngi dng nh ngha .
Bt 3-0 : Bt iu khin sp xp cng chuyn i A/D.
Thanh ghi ADRESH:ADRESL cha ng 10 bt kt qu ca chuyn i
A/D. Khi chuyn i A/D l hon thnh kt qu c np vo thanh ghi kt qu
chuyn i A/D. Bt GO/DONE (ADCON0<2>) c xo v bt c ngt chuyn
i A/D l ADIF c t.
Sau b chuyn i A/D c sp xp nh mong mun. La chn knh
phi t c trc khi chuyn i bt u. Knh vo tng t phi c bt TRIS
tng ng c la chn nh l u vo.
Nhng bc cn lm theo khi thc hin chuyn i A/D :
1. la chn cu hnh A/D
+t cu hnh tng t cho chn vo A/D
+La chn knh vo chuyn i A/D (ADCON0) .
+La chn ng h chuyn i A/D .
+Bt b chuyn i A/D (ADCON0) .
2. La chn cu hnh ngt cho A/D
+Xo bt ADIF.
+t bt ADIE.
+t bt PEIE.
+t bt GIE
3. i ph thuc thi gian t c.
4. Bt u chuyn i:
+t bt GO/DONE(ADCON0).
5. i cho chuyn i A/D hon thnh bi :
+Thm d bt GO/DONE xo (vi thc hin ngt) hoc i cho ngt
chuyn i A/D.
Copyright (c) IRF Group
6. c kt qu chuyn i cp thanh ghi (ADRESH:ADRESL) xo bt
ADIF nu quy nh .
7. Cho chuyn i k tip, thc hin bc 1 hoc bc 2 theo quy
nh.Tc chuyn i A/D qui nh nh l chu k T
AD
. Gi tr nh nht i ca
2 chu k l c quy nh trc khi bt u k tip.
2.7.1. La chn tc chuyn i :
Tc chuyn i l c nh nh l T
AD
. Quy nh thi gian chuyn i
A/D nh nht 12T
AD
cho 10 bt chuyn i. Ngun ca thi gian chuyn i la
chn trong phn mm. C th chn mt trong 4 bng la chn.
2T
OSC
, 8T
OSC
, 32T
OSC
, Dao ng RC trong b chuyn i A/D.(2n 6 s).
cho vic chuyn i ng ,thi gian chuyn i T
AD
phi c la chn
chc chn T
AD
nh nht 1.6 s.
Bng 11-1 trnh by gi tr thi gian T
AD
nhn c t thit b pht tn s v la
chn ngun ng h .
Ch :
1>Ngun RC c thi gian chu k T
AD
4 s nhng c th trong khong 26 s.
2>Khi tn s thit b ln hn 1MHz b chuyn i A/D ngun ng h khi to
cho SLEEP hot ng.
2.8. Cc ngt ca PIC16F877
PIC16F877 c 14 ngun ngt, thanh ghi INTCON l thanh ghi iu khin
cc ngt, mi ngt c mt bit c ngt v mt bit cho php hoc cm ngt. Bit
GIE (INTCON<7>) iu khin chung cho 14 ngt khi bit ny set th cc ngt
mi c tc dng, khi bit GIE xo th tt c cc ngt b cm.
Bit GIE b xo khi reset. Khi bit c ngt thit lp bit GIE thit lp v bit
PEIE thit lp vi ngt ngoi vi ng thi bit cho php ngt ca ngt cho php
th ngt xy ra.
Khi mt ngt xy ra b m chng trnh PC c np gi tr 0004h v bit
GIE b xo cm s chng ngt, khi ch lnh RETFIE thc hin tr li a ch
cho PC ni xy ra ngt, ng thi thit lp li bit GIE.
Khi xy ra ngt PC lun c np gi tr 0004h v cc ngt c phn bit
bi bit c ngt ca ngt .
Ngt ngoi t chn RB0/INT, v ngt t s thay i trng thi cc chn
RB4:RB7 c th nh thc b x l t ch SLEEP.
Cc thanh ghi PIE1, PIR1, PIE2, PIR2 iu khin cc ngt ngoi vi

S cc bit iu khin ngt:
Copyright (c) IRF Group


Khi mt ngt xy ra ch c PC c lu trong stack do ngi s dng
phi lu cc thanh ghi W, STATUS, PCLATH, khi xy ra ngt.
v d thc hi iu ny:
ORG 0000h
...
ORG 0004h
MOVWF W_TEM ;Lu W
MOVF STATUS,W
CLRF STATUS ;chon bank 0
MOVWF STATUS_TEM ;Lu STATUS
MOVF PCLATH,W
MOVWF PCLATH_TEM ;Lu PCLATH
CLRF PCLATH ;chn trang 0
...
;chng trnh phc v cc ngt
...
;Khi phc cc thanh ghi
CLRF STATUS
MOVF PCLATH_TEM,W
MOVWF PCLATH
Copyright (c) IRF Group
MOVF STATUS_TEM,W
MOVWF STATUS
MOVF W_TEM,W
RETFIE
Ch bin W_TEM phi c nh nghia tt c cc bank hoc vng
a a chung cho cc bank( PIC16F877 l a ch 70h-7Fh), cc bin
PCLATH_TEM, STATUS ch nh ngha bank 0.
2.9. M t tp lnh ca PIC16F877.
PIC16F877 c 35 lnh hu ht cc lnh thc hin trong mt chu k my
tr mt s lnh r nhnh. Mi lnh lun c di c nh 14 bit.
Quy c
f: a chi nh t 0-7fh
d: bit nh hng d liu kt qu
+d=1 kt qu lu trong f
+d=0 lu trong W
b: ch ra bit th b trong f, 0=<b<=7
k: hng s t 0-ffh
Bng tp lnh PIC16F877.

Tn lnh gi
nh
M t lnh S chu
k lnh
Trng thi c
nh hng
ADDWF f,d Cng W vi f 1 C,DC,Z
ANDWF f,d AND W v f 1 Z
CLRF f Xo nh,thanh ghi f 1 Z
CLRW Xo W 1 Z
COMF f,d Ly b 1 ca f 1 Z
DECF f,d Gim f mt n v 1 Z
DECFSZ f,d Gim f mt n v, skip if 0 1(2)
INCF f,d Tng f mt n v 1 Z
INCFSZ f,d Tng f mt n v, skip if 0 1(2)
IORWF f,d Or W v f 1 Z
MOVF f,d Copy f ti W hoc chnh f 1 Z
MOVWF f Copy W ti f 1
NOP Khng lm g 1
RLF f,d Quay tri f qua c nh C 1 C
RRF f,d Quay phi f qua c nh C 1 C
SUBWF f,d Tr f cho W 1 Z,DC,C
SWAPF f,d Hon v 4 bit thp ca f cho
4 bit cao ca f
1
XORWF f,d Xor W v f 1 Z
BCF f,b Xo bit b ca f 1
BSF f,b Set bit b ca f 1
Copyright (c) IRF Group
BTFSC f,b Test bit b ca f, Skip if clear 1(2)
BTFSS f,b Test bit b ca f, Skip if set 1(2)
ADDLW k W=Cng k v W 1 Z,DC,C
ANLW k W=WAnd k 1 Z
CALL k Gi th tc con a ch k
l s 11 bit
2
CLRWDT Reser WDT 1
TO, PD
GOTO k Nhy ti a ch k l s 11
bit
2
IORLW k W=W or k 1 Z
MOVLW k W=k 1
RETFIE Tr v t ngt 2
RETLW k Tr v t th tc con v
W=k
2
RETURN Tr v t th tc con 2
SLEEP Nhy ti ch ng 1
TO, PD
SUBLW k W=k-W 1 Z,DC,C
XORLW k W=W xor k 1 Z

Skip if 0: Nu kt qu =0 th b qua mt lnh ngay sau lnh ny
Skip if clear: bit ny xo thi b mt lnh ngay sau lnh ny
Skip if set: bit ny set thi b mt lnh ngay sau lnh ny


Nguyn Vn Xun
Mail: nvxuan@irfvn.com

You might also like