You are on page 1of 36

Copyright (c) IRF Group

Nghiªn cøu kh¶o s¸t


bé vi ®iÒu 8 bit PIC16F877
1. Giíi thiÖu bé vi ®iÒu khiÓn 8 bÝt
Ngµy nay, c¸c bé vi ®iÒu khiÓn ®ang cã øng dông ngµy cµng réng r·i trong
c¸c lÜnh vùc kü thuËt vµ ®êi sèng x· héi, ®Æc biÖt lµ trong kü thuËt tù ®éng ho¸
vµ ®iÒu khiÓn tõ xa. Giê ®©y víi nhu cÇu chuyªn dông ho¸, tèi −u (thêi gian,
kh«ng gian, gi¸ thµnh), b¶o mËt, tÝnh chñ ®éng trong c«ng viÖc... ngµy cµng ®ßi
hái kh¾t khe. ViÖc ®−a ra c«ng nghÖ míi trong lÜnh vùc chÕ t¹o m¹ch ®iÖn tö ®Ó
®¸p øng nh÷ng yªu cÇu trªn lµ hoµn toµn cÊp thiÕt mang tÝnh thùc tÕ cao.
1.1. Kh¸i niÖm vÒ bé vi ®iÒu khiÓn
§Ó hiÓu kh¸i niÖm vÒ bé vi ®iÒu khiÓn, ta cã thÓ lµm phÐp so s¸nh nã víi bé
vi xö lý c«ng dông chung nh− sau:
Ta biÕt r»ng, c¸c bé vi xö lý c«ng dông chung nh− hä Intel x86 (8086,
80286, 80386, 80486 vµ Pentium) hoÆc hä Motorola 680x0(6800, 68010, 68020,
68030, 68040 vv...) kh«ng cã RAM, ROM vµ kh«ng cã c¸c cæng ra vµo trªn
chip... Víi lý do ®ã mµ chóng ®−îc gäi lµ c¸c bé vi xö lý c«ng dông chung.
Mét nhµ thiÕt kÕ hÖ thèng sö dông mét bé vi xö lý c«ng dông chung ch¼ng
h¹n nh− Pentium hay 68040 sÏ ph¶i bæ xung thªm RAM, ROM, c¸c cæng vµo ra
vµ c¸c bé ®Þnh thêi ngoµi ®Ó lµm cho chóng ho¹t ®éng ®−îc. MÆc dï viÖc bæ
xung c¸c RAM, ROM, c¸c cæng vµo ra sÏ lµm cho hÖ thèng cång kÒnh lªn
nh−ng nã l¹i cã −u ®iÓm khi sö dông c¸c bé vi xö lý nµy lµ rÊt linh ho¹t. Ch¼ng
h¹n nh− ng−êi thiÕt kÕ cã thÓ quyÕt ®Þnh vÒ sè l−îng RAM, ROM, vµ c¸c cæng
vµo ra cÇn thiÕt sao cho phï hîp víi kh¶ n¨ng, môc ®Ých sö dông cña hÖ thèng.
§iÒu nµy kh«ng thÓ cã ®èi víi c¸c bé vi ®iÒu khiÓn. Bëi v×, mét bé vi ®iÒu
khiÓn ®· cã mét CPU (mét bé vi xö lý) cïng víi mét sè l−îng RAM, ROM, c¸c
cæng vµo ra vµ mét bé ®Þnh thêi trªn cïng mét chÝp. Hay nãi c¸ch kh¸c lµ bé vi
xö lý, RAM, ROM, c¸c cæng vµo ra vµ mét bé ®Þnh thêi cïng ®−îc nhóng trªn
mét chip. Do vËy ng−êi thiÕt kÕ kh«ng thÓ bæ xung thªm bé nhí ngoµi, sè c¸c
cæng vµo ra hoÆc bé ®Þnh thêi cho nã. Víi sè l−îng RAM, ROM vµ sè c¸c cæng
vµo ra cè ®Þnh nh− vËy lµ mét mÆt h¹n chÕ (kÐm linh ho¹t) xong nã l¹i thËt sù lý
t−ëng ®èi víi nh÷ng øng dông mang tÝnh chuyªn biÖt, tèi −u vÒ gi¸ thµnh, tèi −u
vÒ kh«ng gian...
HiÖn nay trªn thÞ truêng cã c¸c bé vi ®iÒu khiÓn 8 bÝt chÝnh lµ. 6811 cña
Motorola, 8051 cña Intel, Z8 cña Xilog vµ Pic16x cña Microchip Technology.
Mçi lo¹i trªn ®©y ®Òu cã mét tËp lÖnh vµ thanh ghi riªng duy nhÊt, nªn chóng
®Òu kh«ng t−¬ng thÝch lÉn nhau. Còng cã nh÷ng bé vi ®iÒu khiÓn 16 bÝt vµ 32 bÝt
®−îc s¶n xuÊt ra bëi c¸c h·ng s¶n xuÊt chÝp kh¸c nhau.
1.2. Nh÷ng yªu cÇu ®Ó lùa chän mét bé vi ®iÒu khiÓn lµ:
Copyright (c) IRF Group
9 §¸p øng nhu cÇu tÝnh to¸n cña bµi to¸n mét c¸ch hiÖu qu¶ vÒ mÆt gi¸
thµnh vµ ®Çy ®ñ chøc n¨ng cã thÓ nh×n thÊy ®−îc, (kh¶ dÜ).
9 Cã s½n c¸c c«ng cô ph¸t triÓn phÇn mÒm ch¼ng h¹n nh− c¸c tr×nh biªn
dÞch tr×nh hîp ng÷ vµ gì rèi.
9 Nguån c¸c bé vi ®iÒu khiÓn cã s½n nhiÒu vµ tin cËy.
1.3. C¸c tiªu chuÈn lùa chän mét bé vi ®iÒu khiÓn:
Tiªu chuÈn ®Çu tiªn vµ tr−íc hÕt trong lùa chän mét bé vi ®iÒu khiÓn lµ nã
ph¶i ®¸p øng nhu cÇu bµi to¸n vÒ mÆt c«ng suÊt tÝnh to¸n, gi¸ thµnh vµ hiÖu qu¶.
Trong khi ph©n tÝch c¸c nhu cÇu cña mét dù ¸n dùa trªn bé vi ®iÒu khiÓn, chóng
ta tr−íc hÕt ph¶i biÕt lµ bé vi ®iÒu khiÓn nµo lµ 8 bÝt, 16 bÝt hay 32 bÝt cã thÓ ®¸p
øng tèt nhÊt nhu cÇu tÝnh to¸n cña bµi to¸n mét c¸ch hiÖu qu¶ nhÊt.
• Nh÷ng tiªu chuÈn ®−îc ®−a ra ®Ó c©n nh¾c lµ:
9 Tèc ®é: Tèc ®é lín nhÊt mµ bé vi ®iÒu khiÓn hç trî lµ bao nhiªu.
9 KiÓu ®ãng vá: §ã lµ kiÓu 40 ch©n DIP hay QFP hay lµ kiÓu ®ãng vá kh¸c.
§©y lµ ®iÒu quan träng ®èi víi yªu cÇu vÒ kh«ng gian, kiÓu l¾p r¸p vµ t¹o mÉu
thö cho s¶n phÈm cuèi cïng.
9 C«ng suÊt tiªu thô: §iÒu nµy ®Æc biÖt kh¾t khe ®èi víi nh÷ng s¶n phÈm
dïng pin, ¾c quy.
9 Dung l−îng bé nhí RAM vµ ROM trªn chÝp.
9 Sè ch©n vµo – ra, bé ®Þnh thêi, sè ng¾t trªn chÝp.
9 Kh¶ n¨ng dÔ dµng n©ng cÊp cho hiÖu suÊt cao hoÆc gi¶m c«ng suÊt tiªu
thô.
9 Gi¸ thµnh cho mét ®¬n vÞ: §iÒu nµy quan träng quyÕt ®Þnh gi¸ thµnh cuèi
cïng cña s¶n phÈm mµ mét bé vi ®iÒu khiÓn ®−îc sö dông.
2. Bé Vi ®iÒu khiÓn 8 bit PIC16F877
2.1. §Æc tÝnh næi bËt cña bé vi xö lÝ.
+ Sö dông c«ng nghÖ tÝch hîp cao RISC CPU.
+ Ng−êi sö dông cã thÓ lËp tr×nh víi 35 c©u lÖnh ®¬n gi¶n.
+ TÊt c¶ c¸c c©u lÖnh thùc hiÖn trong mét chu k× lÖnh ngo¹i trõ mét sè c©u
lÖnh rÏ nh¸nh thùc hiÖn trong 2 chu k× lÖnh.
+ Tèc ®é ho¹t ®éng lµ: - Xung ®ång hå vµo lµ DC- 20MHz
- Chu kú lÖnh thùc hiÖn trong 200ns
+ Bé nhí ch−¬ng tr×nh Flash 8Kx14 words
+ Bé nhí Ram 368x8 bytes
+ Bé nhí EFPROM 256x 8 bytes
Kh¶ n¨ng cña bé vi xö lÝ nµy
+ Kh¶ n¨ng ng¾t ( lªn tíi 14 nguån ng¾t trong vµ ng¾t ngoµi )
+ Ng¨n nhí Stack ®−îc ph©n chia lµm 8 møc
+ Truy cËp bé nhí b»ng ®Þa chØ trùc tiÕp hoÆc gi¸n tiÕp.
+ Nguån khëi ®éng l¹i (POR)
+ Bé t¹o xung thêi gian (PWRT) vµ bé t¹o dao ®éng (OST)
Copyright (c) IRF Group
+ Bé ®Õm xung thêi gian (WDT) víi nguån dao ®éng trªn chÝp (nguån dao
®éng RC ) ho¹t ®éng ®¸ng tin cËy.
+ Cã m· ch−¬ng tr×nh b¶o vÖ.
+ Ph−¬ng thøc cÊt gi÷ SLEEP
+ Cã b¶ng lùa chän dao ®éng.
+ C«ng nghÖ CMOS FLASH /EEPROM nguån møc thÊp ,tèc ®é cao.
+ ThiÕt kÕ hoµn toµn tÜnh .
+ M¹ch ch−¬ng tr×nh nèi tiÕp cã 2 ch©n.
+ Xö lý ®äc /ghi tíi bé nhí ch−¬ng tr×nh .
+ D¶i ®iÖn thÕ ho¹t ®éng réng : 2.0V ®Õn 5.5V
+ Nguån sö dông hiÖn t¹i 25 mA
+ D·y nhiÖt ®é c«ng nghiÖp vµ thuËn lîi .
+ C«ng suÊt tiªu thô thÊp:
< 0.6mA víi 5V, 4MHz
20 µ A víi nguån 3V, 32 kHz
< 1 µ A nguån dù phßng.
C¸c ®Æc tÝnh næi bËt cña thiÕt bÞ ngo¹i vi trªn chip
+ Timer0: 8 bÝt cña bé ®Þnh thêi, bé ®Õm víi hÖ sè tû lÖ tr−íc
+ Timer1: 16 bÝt cña bé ®Þnh thêi, bé ®Õm víi hÖ sè tû lÖ tr−íc, cã kh¶ n¨ng
t¨ng trong khi ë chÕ ®é Sleep qua xung ®ång hå ®−îc cung cÊp bªn ngoµi.
+ Timer 2: 8 bÝt cña bé ®Þnh thêi, bé ®Õm víi 8 bÝt cña hÖ sè tû lÖ tr−íc, hÖ sè
tû lÖ sau
+ Cã 2 chÕ ®é b¾t gi÷, so s¸nh, ®iÒu chÕ ®é réng xung(PWM).
+ ChÕ ®é b¾t gi÷ víi 16 bÝt, víi tèc ®é 12.5 ns, chÕ ®é so s¸nh víi 16 bÝt, tèc
®é gi¶i quyÕt cùc ®¹i lµ 200 ns, chÕ ®é ®iÒu chÕ ®é réng xung víi 10 bÝt.
+ Bé chuyÓn ®æi tÝn hiÖu sè sang t−¬ng tù víi 10 bÝt .
+ Cæng truyÒn th«ng nèi tiÕp SSP víi SPI ph−¬ng thøc chñ vµ I2C(chñ/phô)
+ Bé truyÒn nhËn th«ng tin ®ång bé, dÞ bé(USART/SCL) cã kh¶ n¨ng ph¸t
hiÖn 9 bÝt ®Þa chØ.
+ Cæng phô song song (PSP) víi 8 bÝt më réng, víi RD, WR vµ CS ®iÒu
khiÓn.
Copyright (c) IRF Group

S¬ ®å c¸c ch©n PIC16F87X.


Copyright (c) IRF Group

S¬ ®å khèi bé vi ®iÒu khiÓn PIC16F87X

2.2. So s¸nh víi bé vi ®iÒu khiÓn 8051


*Bé vi ®iÒu khiÓn 8051 lµ bé V§K ®Çu tiªn thuéc hä V§K x51 ®−îc s¶n
xuÊt bëi c«ng ty Intel, Siemens, Advanced Micro Devices, Fujitsu, Philips.
C¸c ®Æc ®iÓm chung cña bé V§K nµy:
• 4KB ROM
• 128 B RAM
• 4 cæng I/O 8 bit
• 2 Timer 16 bit
• Cã kh¶ n¨ng qu¶n lý ®−îc 64 KB bé nhí m· ch−¬ng tr×nh ngoµi (ROM
ngoµi).
• Cã kh¶ n¨ng qu¶n lý ®−îc 64 KB bé nhí d÷ liÖu ngoµi (RAM ngoµi)
• Cã bé xö lý logic riªng (thao t¸c trªn c¸c bit)
• Cã thÓ thao t¸c trùc tiÕp ®−îc 210 bit (c¸c bit nµy ®· ®−îc ®Þa chØ ho¸)
• Cã 5 ng¾t
• Dïng nguån dao ®éng ngoµi
Copyright (c) IRF Group
• Dïng ®iÖn ¸p 5V ®Ó cho chip ho¹t ®éng
*Cæng P0: Cã d¹ng cùc m¸ng hë vµ cã 8 ch©n (8 bit) lµ cæng vµo/ra hoÆc
lµ cæng chuyÓn d÷ liÖu vµ ®Þa chØ.
*Cæng P1: Lµ cæng vµo/ra cã 8 ch©n (8 bit).
*Cæng P2: Cã 8 ch©n (8 bit) lµ cæng vµo/ra hoÆc lµ cæng chuyÓn d÷ liÖu vµ
®Þa chØ.
*Cæng P3: Cã 8 ch©n, cæng nµy cã thÓ lµ cæng vµo/ra 8 bit hay cßn cã c¸c
chøc n¨ng quan träng kh¸c nh− phôc vô cho ng¾t, c¸c bé ®Þnh thêi, viÖc truyÒn
nhËn d÷ liÖu truyÒn th«ng nèi tiÕp, ®äc vµ ghi c¸c bé nhí ngoµi…
S¬ ®å khèi cña V§K 8051:

Timer 0
Timer 1
Serial Ports Timer 0 T0
Int1 RAM128 ROM
Interupt bytes 4K Timer 1 T1
Int 0 control Registers

CPU

I / O Ports
Serial port
Oscilator Bus

P0 P2 P1 P3 TxD RxD
GND

Nh− vËy cã thÓ thÊy ®Æc ®iÓm ®Çu tiªn mµ PIC16F877 ®em l¹i vµ næi bËt so
víi V§K 8051 lµ dßng PIC16F877 nh÷ng ®Æc tÝnh kÜ thuËt h¬n h¼n so víi bé
V§K 8051 thÓ hiÖn ë nh÷ng ®iÓm sau:

V§K8051 V§K PIC16F877


§Æc tÝnh Sè l−îng §Æc tÝnh Sè l−îng
ROM trªn chÝp 4K byte ROM trªn chÝp 8K
RAM 128 byte RAM 368 byte
Bé ®Þnh thêi 2 Bé ®Þnh thêi 3
C¸c ch©n vµo ra 32 C¸c ch©n vµo ra 40
Cæng nèi tiÕp 1 Cæng nèi tiÕp 2
Nguån ng¾t 6 Nguån ng¾t 14
Ngoµi nh÷ng ®Æc tÝnh trªn th× bé vi ®iÒu khiÓn PIC16F877 cßn cã mét ®Æc
®iÓm h¬n h¼n so víi 8051 lµ cã 10 bÝt chuyÓn ®æi A/D trªn chÝp ®iÒu nµy sÏ gióp
chóng ta kh«ng ph¶i mÊt mét bé chuyÓn ®æi (sÏ dÉn ®Õn kÕt nèi d©y trë nªn phøc
t¹p).
Mét ®Æc ®iÓm n÷a lµ bé vi ®iÒu khiÓn PIC16F877 cã bé t¹o dao ®éng chñ
trªn chÝp ®iÒu nµy sÏ tr¸nh ®−îc nh÷ng sai sè kh«ng cÇn thiÕt trong viÖc t¹o
Copyright (c) IRF Group
xung dao ®éng, vi ®iÒu khiÓn PIC16F877 cã kh¶ n¨ng tù Reset b»ng bé WDT, vµ
cã thªm 256 byte EEPROM.
2.3. Sù tæ chøc bé nhí Pic16F877.
Pic16F877 cã 3 khèi bé nhí. Bé nhí ch−¬ng tr×nh PLASH, bé nhí d÷ liÖu
RAM, bé nhí EEPROM.
2.3.1. Sù tæ chøc bé nhí ch−¬ng tr×nh FLASH vµ Stack nhí.
Vi ®iÒu khiÓn PIC16F877 cã mét bé ®Õm ch−¬ng tr×nh 13 bit vµ cã 8Kx14
tõ m· cña bé nhí ch−¬ng tr×nh FLASH, ®−îc chia thµnh 4 trang mçi trang
2Kx14 tõ m·.
Khi Reset ®Þa chØ b¾t ®Çu thùc hiÖn ch¹y lµ 0000h, Vector ng¾t b¾t ®Çu
0004h.
Stack cã 8 møc dïng ®Ó l−u ®Þa(PC) chØ lÖnh thùc hiÖn tiÕp theo sau lÖnh
CALL vµ khi xÈy ra ng¾t.
B¶n ®å bé nhí ch−¬ng tr×nh vµ c¸c ng¨n xÕp.

2.3.2. Sù tæ chøc bé nhí d÷ liÖu RAM


RAM lµ bé nhí cã thÓ ®äc vµ ghi, nã kh«ng l−u d÷ liÖu khi mÊt ®iÖn, bé
nhí RAM cña PIC16F877 cã 4 bank, mçi bank cã d¶i ®Þa chØ 0-7FH(128byte)
trªn c¸c bank nh÷ng thanh ghi ®a môc ®Ých, nã ho¹t ®éng nh− mét RAM
Copyright (c) IRF Group
tÜnh.(General purpose register), vµ nh−ng thanh ghi chøc n¨ng ®Æc biÖt(Special
function registers) ë vïng ®Þa chØ thÊp. BÝt RP1(Status <6>) vµ bit RP0(Status
<5>) dïng ®Ó lôa chän bank lµm viÖc.
RP1:RP0 Bank
00 0
01 1
10 2
11 3

H×nh ¶nh c¸c bank nh− sau:

C¸c thanh ghi ®a môc ®Ých: (General Purpose Register), c¸c thanh ghi
nµy ®−îc truy cËp b»ng c¶ hai c¸ch trùc tiÕp hoÆc gi¸n tiÕp qua thanh ghi
FSR,tæng céng cã 368 byte.
C¸c thanh ghi chøc n¨ng ®Æc biÖt. C¸c thanh ghi nµy ®−îc dïng bëi
CPU vµ c¸c khèi ngo¹i vi ®Ó ®iÒu khiÓn sù ho¹t ®éng theo yªu cÇu cña thiÕt bÞ.
Copyright (c) IRF Group
C¸c thanh ghi nµy cã thÓ ®−îc ph©n lo¹i vµo hai bé phËn trung t©m (CPU) vµ
ngo¹i vi.
Sau ®©y lµ mét sè thanh ghi ®Æc biÖt quan träng.
* C¸c thanh ghi tr¹ng th¸i STATUS: Cã 4 thanh ghi tr¹ng th¸i trªn 4 d·y,
t¹i c¸c ®Þa chØ 03h, 83h, 103h, 183h. C¸c thanh ghi nµy cho biÕt tr¹ng th¸i cña
phÇn tö l«gic to¸n häc ALU, tr¹ng th¸i RESET, tr¹ng th¸i cña c¸c bit lùa chän
d·y thanh ghi cho bé nhí d÷ liÖu.
Thanh ghi tr¹ng th¸i cã thÓ lµ kÕt qu¶ cña mét sè lÖnh nh− lµ víi mét sè
thanh ghi kh¸c. NÕu thanh ghi tr¹ng th¸i lµ kÕt qu¶ bëi mét lÖnh mµ t¸c ®éng ®Õn
c¸c bit Z, DC, C th× viÖc ghi vµo c¸c bit nµy lµ kh«ng thÓ.
* C¸c thanh ghi lùa chän OPTION_REG: Cã hai thanh ghi lùa chän t¹i
c¸c ®Þa chØ 81h vµ 181h, c¸c thanh ghi nµy cã thÓ ®äc hoÆc ghi, nã chøa ®ùng
nhiÒu bit ®iÒu khiÓn kh¸c nhau ®Ó x¸c ®Þnh hÖ sè ®Þnh tr−íc TMR0/hÖ sè ®Þnh
sau WDT, ng¾t ngoµi INT, TMR0, c¸c ®iÖn ¸p treo trªn cæng B
* C¸c thanh ghi INTCON: Cã 4 thanh ghi INTCON t¹i c¸c ®Þa chØ 0Bh,
8Bh, 10Bh, 18Bh. C¸c thanh ghi nµy cã thÓ ®äc vµ ghi, nã chøa ®ùng nhiÒu sù
cho phÐp vµ c¸c bit cê cho viÖc trµn thanh ghi TMR0, c¸c ng¾t thay ®æi cæng RB
vµ ch©n c¸c ng¾t ngoµI RB0/INT.
* Thanh ghi PIE1: T¹i ®Þa chØ 8Ch, chøa ®ùng c¸c bit cho phÐp riªng lÎ
cho c¸c ng¾t ngo¹i vi.
* Thanh ghi PIR1: T¹i ®Þa chØ 0Ch, chøa ®ùng c¸c bit cê riªng lÎ cho c¸c
ng¾t ngo¹i vi.
* Thanh ghi PIE2: T¹i ®Þa chØ 8Dh, chøa ®ùng c¸c bit cho phÐp riªng lÎ
cho c¸c ng¾t ngo¹i vi CCP2, ng¾t xung ®ét tuyÕn SSP vµ EEPROM ghi c¸c ho¹t
®éng ng¾t .
* Thanh ghi PIE2: T¹i ®Þa chØ 8Dh, chøa ®ùng c¸c cê bit cho c¸c ng¾t
ngo¹i vi CCP2, ng¾t xung ®ét tuyÕn SSP vµ EEPROM ghi c¸c ho¹t ®éng ng¾t .
* Thanh ghi PCON (Power Control): Chøa bit cê cho phÐp ph©n biÖt gi÷a
viÖc Reset hÖ thèng (POR) ®Ó Reset MCLR ngo¹i víi Reset WDT.
* PCL vµ PCLATH. Ch−¬ng tr×nh ®Õm chØ râ ®Þa chØ cña lÖnh tiÕp theo
®−îc thùc hiÖn. PC cã ®é réng 13 bit, byte thÊp ®−îc gäi lµ thanh ghi PCL, thanh
ghi nµy cã thÓ ®äc hoÆc ghi. Byte cao ®−îc gäi lµ thanh ghi PCH, nã chøa c¸c bit
PC<12:8> vµ kh«ng trùc tiÕp ®äc hoÆc ghi mµ toµn bé sù cËp nhËp cña nã th«ng
qua thanh ghi PCLATH. Khi reset 5 bit PCLATH<4:0> n¹p tíi PCH, khi thùc
hiÖn c¸c lÖnh CALL, GOTO 11 bit Ofcode<10:0> vµ 2 bit PCLATH<4:3> t¹o
thµnh 13 bit n¹p vµo PC. Do vËy khi dïng lÖnh CALL, GOTO chó ®Õn hai bit
PCLATH<4:3> ®ã còng chÝnh lµ hai bit chØ c¸c trang cña bé nhí ch−¬ng tr×nh.

H×nh ¶nh sù n¹p PCLATH tíi PC


Copyright (c) IRF Group

2.3.3. C¸c trang bé nhí ch−¬ng tr×nh.


PIC16F877 cã 8Kx14 PLASH c¸c lÖnh CALL, GOTO chØ cung cÊp 11 bit
®Þa chØ cho phÐp rÏ nh¸nh ®−îc 2k<0->211-1>cña mét trang bé nhí ch−¬ng tr×nh
2 bit cao ®−îc cung cÊp bëi 2 bit 3,4 cña PCLATH<4:3> do vËy tuú viÖc thiÕt
lËp c¸c bit 3,4 cña PCLATH tr−íc khi lÖnh CALL, GOTO thùc hiÖn cho phÐp rÏ
nh¸nh tíi c¸c trang bé nhí kh¸c nhau.
Chó ý c¸c lÖnh RETURN, RETFIE kh«ng lµm thay ®æi PCLATH
VÝ dô tõ trang 0 gäi chu¬ng tr×nh 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 cËp bé nhí RAM b»ng ®Þa chØ trùc tiÕp, gi¸n tiÕp.

* VÝ dô ®äc « nhí 0xE0 b»ng ®Þa chØ trùc tiÕp



BSF STATUS,RP0 ;chän bank 1
BCF STATUS,RP1
MOVF 0XE0,W ;copy « nhí 0xE0(ë bank 1) tíi W

BCF STATUS,RP0 ;chän bank0
BCF STATUS,RP1
MOVF 0X30,W ;copy « nhí 0x30(ë bank 0) tíi W

* Truy cËp RAM b»ng ®Þa chØ gi¸n tiÕp
Thanh ghi FSR chØ ra ®Þa chØ(0->0XFF) « nhí cÇn truy cËp, thanh ghi
INDF cho néi dung « nhí truy cËp, bit IRP thanh ghi STATUS<7> chØ ra
bank truy cËp
vÝ dô xo¸ c¸c « 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÷ liÖu EEPROM vµ bé nhí ch−¬ng tr×nh FLASH.


C¸c bé nhí nµy cã thÓ ®äc vµ ghi trong khi c¸c ho¹t ®éng vÉn diÔn ra b×nh
th−êng. Bé nhí d÷ liÖu kh«ng trùc tiÕp s¾p xÕp d÷ liÖu trªn c¸c thanh ghi d÷ liÖu
cßn trèng. Thay v× ®ã lµ ®¸nh c¸c ®Þa chØ gi¸n tiÕp qua c¸c thanh ghi chøc n¨ng
®Æc biÖt. Cã 6 thanh ghi SFR dïng ®Ó ®äc vµ ghi bé nhí ch−¬ng tr×nh vµ bé nhí
d÷ liÖu EEPROM ®ã lµ c¸c thanh ghi:
EECON1 EEDATH
EECON2 EEADR
EEDATA EEADRH
Bé nhí d÷ liÖu EEPROM cho phÐp ®äc vµ ghi c¸c byte. Khi cã t¸c ®éng tíi
khèi bé nhí d÷ liÖu. Thanh ghi EEDATA gi÷ 8 bit d÷ liÖu ®Ó ®äc/ghi vµ thanh
ghi EEADR gi÷ ®Þa chØ vÞ trÝ cña EEPROM ®−îc truy cËp. C¸c thanh ghi
EEDATH vµ EEADRH kh«ng ®−îc sö dông ®Ó truy cËp d÷ liÖu EEPROM. C¸c
thiÕt bÞ nµy cã tíi 256 byte cña d÷ liÖu EEPROM víi ®Þa chØ tõ 00h tíi FFh.
Bé nhí d÷ liÖu EEPROM ®−îc xÕp vµo lo¹i cao cho c¸c chu tr×nh xo¸/ghi.
Thêi gian ®−îc ®iÒu khiÓn bëi mét bé ®Þnh thêi trªn chip. Thêi gian ghi sÏ thay
®æi cïng víi ®iÖn thÕ vµ nhiÖt ®é.
Bé nhí ch−¬ng tr×nh cho phÐp ®äc vµ ghi c¸c kÝ tù. Khi t¸c ®éng ®Õn khèi
ch−¬ng tr×nh nhí, c¸c thanh ghi EEDATH, EEDATA cã d¹ng 2 byte kÝ tù gi÷ 14
bit d÷ liÖu ®Ó ®äc/ghi vµ c¸c thanh ghi EEADRH, EEADR cã d¹ng hai bit tõ m·
víi 13 bit ®Þa chØ cña vÞ trÝ EEPROM ®−îc truy cËp. Nh÷ng thiÕt bÞ nµy cã thÓ cã
tíi 8K tõ m· cña ch−¬ng tr×nh EEPROM víi mét ®Þa chØ giíi h¹n tõ 0h tíi 3FFh.
* Thanh ghi EEADR.
Thanh ghi ®Þa chØ cã thÓ ®¸nh ®Þa chØ lín nhÊt lµ 256 Byte cña d÷ liÖu
EEPROM hoÆc lín nhÊt lµ 8K kÝ tù cña ch−¬ng tr×nh FLASH. Khi lùa chän gi¸
trÞ mét ®Þa chØ ch−¬ng tr×nh, byte MS cña ®Þa chØ sÏ ®−îc ghi vµo thanh ghi
EEADRH vµ byte LS ®−îc ghi vµo thanh ghi EEADR. Khi lùa chän mét gi¸ trÞ
®Þa chØ d÷ liÖu, chØ cã byte LS cña ®Þa chØ ®−îc ghi tíi thanh ghi EEADR.
* C¸c thanh ghi EECON1 vµ EECON2.
EECON1 lµ thanh ghi ®iÒu khÓn cho viÖc nhËp d÷ liÖu bé nhí.
EECON2 kh«ng ph¶I lµ thanh ghi vËt lý. Khi ®äc thanh ghi EECON2 sÏ
®äc toµn bé lµ 0. Thanh ghi EECON2 ®ù¬c sö dông dµnh riªng cho viÖc ghi mét
c¸ch tr×nh tù vµo bé nhí.
Copyright (c) IRF Group
Bit ®iÒu khiÓn EEPGD x¸c ®Þnh nÕu viÖc nhËp d÷ liÖu sÏ lµ nhËp mét
ch−¬ng tr×nh hoÆc nhËp mét bé nhí d÷ liÖu. Khi xo¸, mét sè ho¹t ®éng tiÕp theo
sÏ ho¹t ®éng trªn bé nhí d÷ liÖu. Khi set, mét sè ho¹t ®éng tiÕp theo sÏ ho¹t
®éng trªn bé nhí ch−¬ng tr×nh.
C¸c bit ®iÒu khiÓn RD vµ WR kÝch ho¹t c¸c ho¹t ®éng ®äc vµ ghi theo thø
tù. Trong phÇn mÒm nh÷ng bit nµy kh«ng thÓ bÞ xo¸, chØ ®−îc set. Chóng bÞ xo¸
trong phÇn cøng khi mµ c¸c ho¹t ®éng ®äc hoÆc ghi hoµn thµnh. ViÖc kh«ng thÓ
xo¸ bit WR trong phÇn mÒm ng¨n ngõa sù kÕt thóc bÊt ngê hoÆc kÕt thóc sím
cña mét ho¹t ®éng ghi.
2.3.6. §äc bé nhí d÷ liÖu EEPROM.
§Ó ®äc mét vÞ trÝ bé nhí d÷ liÖu, ta ph¶i ghi ®Þa chØ vµo thanh ghi EEADR,
xo¸ bit ®iÒu khiÓn EEPGD (EECON1<7>) sau ®ã set bit ®iÒu khiÓn RD
(EECON1<0>). D÷ liÖu vÉn tån t¹i trªn nhiÒu lÖnh tiÕp theo ë trªn thanh ghi
EEDATA, do ®ã nã cã thÓ ®−îc ®äc bëi lÖnh tiÕp theo. EEDATA sÏ gi÷ gi¸ trÞ
nµy cho tíi khi cã ho¹t ®éng ®äc d÷ liÖu kh¸c hoÆc lµ tíi khi ®−îc ghi.
VÝ dô: §äc d÷ liÖu EEPROM.
BSF STATUS, RP1 ;
BCF STATUS, RP0 ; Chän d·y 2
MOVF ADDR, W ; §Þa chØ bé nhí d÷ liÖu ®Ó ®äc
MOVWF EEADR ;
BSF STATUS, RP0 ; D·y 3
BCF EECON1, EEPGD ; ChuyÓn tíi bé nhí d÷ liÖu
BSF EECON1, RD ; b¾t ®Çu ho¹t ®éng ®äc
BCF STATUS, RP0 ; D·y 2
MOVF EEDATA, W ; W = EEDATA
2.3.7. Ghi vµo bé nhí d÷ liÖu EEPROM.
§Ó ghi vµo bé nhí EEPROM th× ®Çu tiªn ®Þa chØ ph¶i ®−îc ghi vµo thanh
ghi EEADR vµ d÷ liÖu ghi vµo thanh ghi EEDATA, vµ tr×nh tù ®−îc tiÕn hµnh
nh− ë vÝ dô sau:
VÝ dô: Ghi d÷ liÖu EEPROM.
BSF STATUS, RP1 ;
BSF STATUS, RP0 ; D·y 3
BTFSC EECON1, WR ; §îi cho
GOTO $-1 ; viÖc ghi kÕt thóc
BCF STATUS, RP0 ; D·y 2
MOVF ADDR, W ; §Þa chØ
MOVWF EEADR ; ghi vµo EEADR
MOVF VALUE, W ; d÷ liÖu
MOVWF EEDATA ; ghi vµo EEDATA
BSF STATUS, RP0 ; D·y 3
BCF EECON1, EEPGD ; Con trá tíi bé nhí d÷ liÖu
Copyright (c) IRF Group
BSF EECON1, WREN ; Cho phÐp ghi chØ khi c¸c ng¾t kh«ng cho phÐp
BCF INTCON, GIE ;
MOVLW 0x55 ; ghi 55h tíi
MOVWF EECON2 ; EECON2
MOVLW 0xAA ; ghi AAh tíi
MOVWF EECON2 ; EECON2
BSF EECON1, WR ; B¾t ®Çu ho¹t ®éng ghi chØ khi c¸c ng¾t cho phÐp
BSF INTCON, GIE ; NÕu dïng c¸c ng¾t otherwise discard
BCF ECON1,WREN ; kh«ng thÓ ghi

2.3.8. §äc ch−¬ng tr×nh FLASH.


§äc mét vÞ trÝ bé nhí ch−¬ng tr×nh cã thÓ ®−îc thùc hiÖn bëi viÖc ghi 2 byte
®Þa chØ vµo c¸c thanh ghi EEADR vµ EEADRH, set bit ®iÒu khiÓn EEPGD
(EECON1<7>) vµ sau ®ã set bit ®iÒu khiÓn RD (EECON1<0>). ChØ khi bit ®iÒu
khiÓn ®äc ®−îc set, vi xö lý sÏ sö dông chu tr×nh lÖnh thø hai ®Ó ®äc d÷ liÖu.
D÷ liÖu sÏ cã trong chu tr×nh thø 3, trong thanh ghi EEDATA vµ EEDATH,
do ®ã nã cã thÓ ®−î ®äc lµ hai byte trong c¸c lÖnh tiÕp theo. D÷ liÖu cã thÓ ®−îc
®−a ra ngoµi cña EEDATH:EEDATA b¾t ®Çu víi lÖnh thø 3 sau lÖnh BSF
EECON1, RD. Vµ hai thanh ghi EEDATA vµ EEDATH sÏ gi÷ gi¸ trÞ nµy cho tíi
khi cã ho¹t ®éng ®äc mét gi¸ trÞ kh¸c hoÆc cã ho¹t ®é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 tíi FLASH.
ghi mét vÞ trÝ bé nhí ch−¬ng tr×nh cã thÓ ®−îc thùc hiÖn bëi viÖc ghi 2 byte
®Þa chØ vµo c¸c thanh ghi EEADR vµ EEADRH, ghi d÷ liÖu 13 bit vµo 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÷ liÖu
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 ; cÊm ng¾t nÕu ng¨t cho phÐp
MOVLW 0x55 ; ghi 55h tíi
MOVWF EECON2 ; EECON2
MOVLW 0xAA ; ghi AAh tíi
MOVWF EECON2 ; EECON2
BSF EECON1,WR
NOP
NOP
BCF EECON1, WREN ;disable write operation
BSF INTCON,GIE ; ng¾t ho¹t nÕu ng¨t cho phÐp
2.4. Cæng vµo ra
Mét sè ch©n cña c¸c cæng vµo/ra ®−îc tÝch hîp víi mét sè hµm cã thÓ thay
®æi ®Ó phï hîp víi nh÷ng thiÕt bÞ ngo¹i vi. Nh×n chung khi thݪt bÞ ngo¹i vi ho¹t
®éng, c¸c ch©n cã thÓ kh«ng sö dông víi môc ®Ých lµm ch©n vµo ra.
2.4.1. Cæng A vµ thanh ghi TRISA
Cæng A lµ cæng hai chiÒu víi ®é réng ®−êng truyÒn lµ 6 bit. §Ó ®iÒu khiÓn
viÖc truy xuÊt d÷ liÖu ng−êi ta dïng thanh ghi TRISA . NÕu ®Æt bÝt TRISA = 1 th×
lóc nµy cæng A sÏ t−¬ng øng cã c¸c ch©n lµ ch©n vµo .NÕu xo¸ bÝt TRISA = 0 th×
lóc nµy cæng A sÏ t−¬ng øng cã c¸c ch©n lµ ch©n ra. ViÖc ®äc cæng A chÝnh lµ
®äc tr¹ng th¸i cña c¸c ch©n, trong khi ®ã viÖc viÕt ph¶i qua viÖc viÕt c¸c chèt cña
cæng. C¸c ch©n cña cæng A chñ yÕu ®−îc sö dông víi môc ®Ých chÝnh lµ nhËn tÝn
hiÖu t−¬ng tù hoÆc lµm c¸c ch©n vµo ra. Riªng ch©n RA4 cã thÓ ®a hîp víi ch©n
vµo bé Timer 0 vµ khi ®ã nã trë thµnh ch©n RA4/T0CKI. Ch©n nµy nh− mét ®Çu
vµo cña Schmitt Trigger vµ nã më ®Çu ra. C¸c ch©n kh¸c cña cæng A lµ ch©n vµo
víi bé TTL. ViÖc ®iÒu khiÓn c¸c ch©n nµy th«ng qua viÖc ®Æt hay xo¸ c¸c bÝt cña
thanh ghi ADCON1. Thang ghi TRISA ®iÒu khiÓn trùc tiÕp c¸c ch©n cña cæng A,
Copyright (c) IRF Group
khi sö dông c¸c ch©n nµy ®Ó nhËn tÝn hiÖu t−¬ng tù vµo ta ph¶i ch¾c ch¾n r»ng
c¸c bÝt cña thanh ghi TRISA ®· ®−îc ®Æt råi
S¬ ®å khèi ch©n RA3:RA0 vµ ch©n RA5 vµ cña ch©n RA4/TOCKI cña cæng A

2.4.2. Cæng B vµ thanh ghi TRISB


Cæng B lµ cæng hai chiÒu víi ®é réng ®−êng truyÒn lµ 8 bit.T−¬ng øng víi
nã ®Ó ®iÒu khiÓn trùc tiÕp d÷ liÖu ta sö dông thanh ghi TRISB. NÕu ®Æt bÝt TRISB
= 1 th× lóc nµy c¸c ch©n cña cæng B ®−îc ®Þnh nghÜa lµ ch©n vµo. NÕu xo¸ bÝt
TRISB = 0 th× lóc nµy c¸c ch©n cña cæng B ®−îc ®Þnh nghÜa lµ ch©n ra. Néi dung
cña chèt ra cã thÓ chän trªn mçi ch©n.
Cã 3 ch©n cña cæng B cã thÓ ®a hîp víi c¸c ch−¬ng tr×nh vËn hµnh b»ng
®iÖn ¸p thÊp. §ã lµ c¸c ch©n sau: RB3/PGM, RB6/PGC, RB7/PGD. Sù thay ®æi
ho¹t ®éng cña nh÷ng ch©n nµy ®−îc miªu t¶ ë trong phÇn ®Æc tÝnh næi bËt. Mçi
ch©n cña cæng B cã mét kh¶ n¨ng dõng bªn trong nh−ng yÕu. §iÒu nµy ®−îc
tr×nh bµy bëi viÖc xo¸ bÝt RBPU (bÝt 7 cña thanh ghi OPTION_REG). Kh¶ n¨ng
dõng nµy sÏ tù ®éng t¾t ®i khi c¸c ch©n cña cæng ®−îc ®Þnh nghÜa lµ ch©n ra.
Kh¶ n¨ng dõng nµy sÏ tù ®éng mÊt ®i khi ta RESET. Bèn ch©n cña cæng B, tõ
RB7 ®Õn RB4 cã ®Æc tÝnh lµ ng¾t khi thay ®æi tr¹ng th¸i. ChØ nh÷ng ch©n ®−îc
®Þnh d¹ng lµ nh÷ng ch©n vµo th× ng¾t nµy míi tån t¹i. Mét vµi ch©n RB7:RB4
®−îc ®Þnh d¹ng nh− ch©n ra no thi hµnh ng¾t trªn sù thay ®æi so s¸nh. Ch©n vµo
RB7:RB4 ®−îc so s¸nh víi gi¸ trÞ cò cña chèt ë lÇn ®äc cuèi cïng cña cæng B.
Copyright (c) IRF Group
Sù ghÐp ®«i kh«ng khíp ch©n ra cña RB7:RB4 b»ng lÖnh OR lµm ph¸t ra ng¾t
víi cê bÝt RBIF cña thanh ghi INTCON. Ng¾t nµy cã thÓ khëi ®éng thiÕt bÞ tõ
tr¹ng th¸i SLEEP.
S¬ ®å khèi cña ch©n RB3 §Õn RB0 , ch©n RB7 : RB4 cña Cæng B

2.4.3. Cæng C vµ thanh ghi TRISC


Cæng C lµ cæng hai chiÒu víi ®é réng ®−êng truyÒn lµ 8 bit .T−¬ng øng víi
viÖc ®iÒu khiÓn nã lµ thanh ghi TRISC. NÕu ®Æt bÝt TRISC = 1 th× t−¬ng øng víi
ch©n cña cæng C lµ ch©n vµo. NÕu ta xo¸ bÝt TRISC = 0 th× t−¬ng øng víi nã
ch©n cña cæng C lµ ch©n ra . §Æt néi dung cña chèt ra cã thÓ ®Æt trªn ch©n chän.
Cæng C ®a hîp víi viÖc vËn hµnh thiÕt bi ngo¹i vi. Ch©n cña cæng C th«ng qua
bé ®Öm Schmitt Trigger ®Çu vµo.
Khi chÕ ®é I2C ho¹t ®éng, th× c¸c ch©n cæng PORTC<4:3> cã thÓ ®−îc s¾p
xÕp víi møc I2C th−êng hoÆc víi møc SMBUS b»ng c¸ch sö dông bit CKE
(SSPSTAT<6>) lµ bÝt 6 cña thanh ghi SSPSTAT.
Khi vËn hµnh c¸c thiÕt bÞ ngo¹i vi b»ng viÖc x¸c ®Þnh bÝt TRIS cña mçi ch©n
cæng C. Mét sè phÇn phô cã thÓ ghi ®Ì lªn bÝt TRISC lµm cho ch©n nµy trë thµnh
ch©n ra, trong khi ®ã th× mét sè phÇn phô kh¸c l¹i ghi ®Ì lªn bÝt TRIS lµm cho
ch©n nµy trë thµnh ch©n vµo. Tõ khi nh÷ng bit TRIS ghi ®Ì th× trong viÖc t¸c
®éng trong c¸c thiÕt bÞ ngo¹i vi lµ cã thÓ, nh÷ng lÖnh ®äc-söa- ghi (BSF, BCF,
XORWF) víi thanh ghi TRISC nh− lµ n¬i göi tíi sÏ ®−îc tr¸nh. Ng−êi sö dông
nªn ®Ò cËp tíi viÖc ph©n chia kÕt nèi c¸c thiÕt bÞ ngo¹i vi cho viÖc set chÝnh x¸c
c¸c bit TRIS.
S¬ ®å khèi ch©n RC <0 : 2 > RC< 5: 7 > vµ ch©n RC < 3: 4> cæng C
Copyright (c) IRF Group

2.4.4. Cæng D vµ thanh ghi TRISD


Cæng D cã 8 bÝt cã bé ®Öm ®Çu vµo Schmitt Trigger. Mçi ch©n ®−îc s¾p xÕp
riªng lÎ nh− ®Çu vµo hoÆc ®Çu ra. Cæng D còng cã thÓ ®−îc s¾p xÕp nh− lµ mét
cæng vi xö lý 8 bit (cæng phô song song) b»ng viÖc ®Æt bÝt ®iÒu khiÓn
PSPMODE(TRISE<4>) vµ trong chÕ ®é nµy vïng ®Öm ®Çu vµo lµ TTL.

S¬ ®å khèi cæng D
Copyright (c) IRF Group

2.4.5. Cæng E vµ thanh ghi TRISE


Cæng E cã 3 ch©n lµ RE0/RD/AN5, RE1/WR/AN6, RE2/CS/AN7. C¸c ch©n
nµy cã thÓ s¾p xÕp riªng lÎ lµ c¸c ®Çu vµo hoÆc c¸c ®Çu ra, vµ c¸c ch©n cã vïng
®Öm ®Çu vµo lµ c¸c m¹ch Schmitt Trigger.
Cæng vµo/ra E trë thµnh ®Çu vµo ®iÒu khiÓn cho cæng vi xö lý khi bit
PSPMODE(TRISE<4>) ®−îc ®Æt. Vµ trong chÕ ®é nµy ph¶i ch¾c ch¾n r»ng c¸c
bit TRISE<2:0> ®−îc ®Æt (c¸c ch©n ®−îc ®Þnh d¹ng lµ c¸c ®Çu vµo sè), thanh ghi
ADCON1 ph¶i ®−îc ®Þnh d¹ng cho viÖc sè vµo/ra vµ vïng ®Öm ®Çu vµo lµ TTL.
C¸c ch©n cæng E còng ®−îc tÝch hîp víi c¸c ®Çu vµo t−¬ng tù vµ trong
tr−êng hîp nµy c¸c ch©n sÏ ®äc lµ ‘0’.
Thanh ghi TRISE ®iÒu khiÓn trùc tiÕp c¸c ch©n RE, ngay c¶ khi chóng ®−îc
dïng lµ c¸c ®Çu vµo t−¬ng tù.

S¬ ®å khèi cña cæng E :


Copyright (c) IRF Group

2.5. C¸c Bé Timer cña chip:


Bé vi ®iÒu khiÓn PIC16F87X cã 3 bé Timer ®ã lµ:Timer0, Timer1, Timer2
2.5.1. Bé Timer 0
Lµ bé ®Þnh thêi hoÆc bé ®Õm cã nh÷ng −u ®iÓm næi bËt sau:
+ 8 bit cho timer hoÆc bé ®Õm
+ Cã kh¶ n¨ng ®äc vµ viÕt
+ Cã thÓ dïng ®ång hå bªn trong hoÆc bªn ngoµi
+ Cã thÓ chän c¹nh xung cña xung ®ång hå
+ Cã hÖ sè chia cho xung ®Çu vµo cã thÓ lËp tr×nh l¹i b»ng phÇn mÒm
+ Ng¾t trµn
Ho¹t ®éng cña Timer 0:
Timer 0 cã thÓ ho¹t ®éng nh− mét bé ®Þnh thêi hoÆc mét bé ®Õm. ViÖc chän
bé ®Þnh thêi hoÆc bé ®Õm cã thÓ ®−îc x¸c lËp b»ng viÖc xo¸ hoÆc ®Æt bÝt TOCS
cña thanh ghi OPTION_REG<5>.
NÕu dïng hÖ sè chia xung ®Çu vµo th× xo¸ bit PSA cña thanh ghi
OPTION_REG<3>.
Trong chÕ ®é bé ®Þnh thêi ®−îc lùa chän bëi viÖc xo¸ bit T0CS (OPTION
REG<5>), nã sÏ ®−îc t¨ng gi¸ trÞ sau mét chu kú lÖnh nÕu kh«ng chän hÖ sè
chia xung ®Çu vµo. Vµ gi¸ trÞ cña nã ®−îc viÕt tíi thanh ghi TMR0.
ChÕ ®é ®Õm ®−îc lùa chän bëi viÖc set bit T0CS (OPTION REG<5>).
Trong chÕ ®é bé ®Õm, nã sÏ ®−îc t¨ng ë xung ®i xuèng nÕu xo¸ bit T0SE
Copyright (c) IRF Group
(OPTION_REG<4>) hoÆc ë xung ®i lªn nÕu set bit T0SE. Vµ gi¸ trÞ cña nã ®−îc
viÕt tíi thanh ghi TMR0.
Khi dïng xung clock bªn ngoµi cho bé ®Þnh thêi Timer0 vµ kh«ng dïng hÖ
sè chia clock ®Çu vµo Timer0 th× ph¶i ®¸p øng c¸c ®iÒu kiÖn cÇn thiÕt ®Ó cã thÓ
ho¹t ®éng ®ã lµ ph¶i b¶o ®¶m xung clock bªn ngoµi cã thÓ ®ång bé víi pha xung
clock bªn trong (TOSC).
S¬ ®å khèi cña Timer0 vµ WDT:

C¸c hÖ sè chia
HÖ sè chia dïng cho Timer 0 hoÆc bé WDT. C¸c hÖ sè nµy kh«ng cã kh¶
n¨ng ®äc vµ kh¶ n¨ng viÕt. §Ó chän hÖ sè chia xung vµo Timer0 hoÆc cho bé
WDT ta tiÕn hµnh xo¸ hoÆc ®Æt bÝt PSA cña thanh ghi OPTION_REG<3>
Nh÷ng bÝt PS2, PS1, PS0 cña thanh ghi OPTION_REG<2:0> dïng ®Ó x¸c
lËp c¸c hÖ sè chia.
Ng¾t cña bé Timer0
Ng¾t cña bé Timer 0 ®−îc ph¸t sinh ra khi thanh ghi TMR0 bÞ trµn tøc tõ
FFh quay vÒ 00h. Khi ®ã bÝt T0IF cña thanh ghi INTCON<2> sÏ ®−îc ®Æt. BÝt
nµy ph¶i ®−îc xãa b»ng phÇn mÒm nÕu cho phÐp ng¾t bit T0IE cña thanh ghi
INTCON<5> ®−îc set. Timer0 bÞ dõng ho¹t ë chÕ ®é SLEEP ng¾t Timer 0
kh«ng ®¸nh thøc bé xö lý ë chÕ ®é SLEEP.
Copyright (c) IRF Group
*Thanh ghi OPTION_REG

bit 5 TOCS lùa chän nguån clock


1=Clock ngoµi tõ ch©n T0CKI
0=Clock trong Focs/4
bit 4 T0SE bit lùa chon s−ên xung clock
1=Timer 0 t¨ng khi ch©n T0CKI tö cao xuèng thÊp(s−ên xuèng)
0=Timer 0 t¨ng khi ch©n T0CKI tö thÊp lªn cao(s−ên xuèng)
bit 3 PSA bit g¸n bé chia xung ®Çu vµo
1=g¸n bé chia Prescaler cho WDT
0=g¸n bé chia Prescaler cho Timer 0
bit 2:0 PS2:PS1 lùa chän hÖ sè chia xung vµo theo b¶ng 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 hoÆc bé ®Þnh thêi víi −u ®iÓm sau:
+16 bÝt cho bé ®Õm hoÆc bé ®Þnh thêi (gåm hai thanh ghi
TMR1H:TMR1L).
+Cã kh¶ n¨ng ®äc vµ viÕt
+Cã thÓ chän xung ®ång hå bªn trong hoÆc ®ång hå bªn ngoµi
+Cã thÓ ng¾t khi trµn FFFFh vÒ 0000h
Timer1 cã 1 thanh ghi ®iÒu khiÓn, ®ã lµ thanh ghi T1C0N. Bé Timer1 cã
ho¹t ®éng hay kh«ng ho¹t ®éng lµ nhê viÖc ®Æt hoÆc xo¸ bÝt
TMR1ON(T1CON<0>).
Ho¹t ®éng cña bé Timer1
Nã cã thÓ ho¹t ®éng ë mét trong c¸c chÕ ®é sau:
+ Lµ 1 bé ®Þnh thêi 16 bit.
+ Lµ mét bé ®Õm cã ®ång bé .
+ Lµ mét bé ®Õm kh«ng cã ®ång bé.
Ph−¬ng thøc ho¹t ®éng cña bé nµy ®−îc x¸c ®Þnh bëi viÖc chän nguån xung
vµo Timer 1. Nguån xung ®ång hå ®−îc chän bëi viÖc ®Æt hoÆc xo¸ bÝt TMR1CS
(T1CON<1>). ë chÕ ®é bé ®Þnh thêi, ®Çu vµo lµ clock trong Fosc/4, bit ®ång bé
Copyright (c) IRF Group
T1SYNC(T1CON<2>) kh«ng cã t¸c dông v× clock trong lu«n ®ång bé. ChÕ ®é
bé ®Õm ho¹t ®éng hai chÕ ®é: Cã ®ång bé xung vµo xo¸ bit
T1SYNC(T1CON<2>), kh«ng ®ång bé xung vµo set bit T1SYNC(T1CON<2>)
Timer 1 t¨ng ë s−ên lªn xung ®Çu vµo.
Khi bé dao ®éng Timer1 cho phÐp ho¹t ®éng th× c¸c ch©n
RC1/T1OSI/CCP2,
RC0/T1OSO/T1CKI trë thµnh ch©n vµo.
ë chÕ ®é ®Õm cã ®ång bé bé ®Õm t¨ng mçi khi s−ên lªn ë ch©n RC0 hoÆc
ë ch©n RC1 nÕu bit T1OSCEN xo¸ vµ xung vµo ph¶i ®ång bé víi clock trong, ë
chÕ ®é nµy bé ®Õm kh«ng t¨ng trong trang th¸I SLEEP.
ë chÕ ®é ®Õm kh«ng ®ång bé Timer 1 t¨ng mçi khi s−ên lªn ë ch©n RC0
hoÆc ë ch©n RC1 nÕu bit T1OSCEN xo¸, ë chÕ ®é nµy bé ®Õm tiÕp tôc t¨ng
trong trang th¸i SLEEP vµ cã kh¶ n¨ng trµn g©y ra ng¾t khi ®ã bé sö lý ®−îc
®¸nh thøc.
Dao ®éng cña Timer1
M¹ch dao ®éng th¹ch anh ®−îc x©y dùng gi÷a 2 ch©n T1OSI vµ T1OS0. Khi
dao ®éng ®−îc cung cÊp ë chÕ ®é c«ng suÊt thÊp th× tÇn sè cùc ®¹t cña nã sÏ lµ
200kHz vµ trong nã ë chÕ ®é SLEEP nã cung cÊp ë tÇn sè 32kHz
Ng¾t cña bé Timer1
CÆp thanh ghi TMR1H vµ TMR1L t¨ng tõ gi¸ trÞ 0000h ®Õn gi¸ trÞ FFFFh
®Õn gi¸ trÞ nµy tiÕp tôc t¨ng th× trµn vµ quay l¹i gi¸ trÞ 0000h. Vµ ng¾t xuÊt hiÖn
khi trµn qu¸ gi¸ trÞ FFFFh khi nµy cê ng¾t TMR1IF sÏ ®−îc ®Æt. Ng¾t cã thÓ ho¹t
®éng hoÆc kh«ng ho¹t ®éng nhê viÖc ®Æt hoÆc xo¸ bÝt TMR1IE

* Thanh ghi ®iÒu khiÓn Timer1 T1CON:


Copyright (c) IRF Group

bÝt 7,6 kh«ng sö dông


bit 5,4 T1CKPS1:T1CKPS0 lùa chän hÖ sè chia xung vµo
T1CKPS1:T1CKPS0
00 1:1
01 1:2
10 1:4
11 1:8
bit 3 T1OSCEN bit ®iÒu khiÓn bé dao ®éng Timer1
1= Bé dao ®éng ho¹t ®éng
0= Bé dao ®éng kh«ng ho¹t ®éng
bit 2 bit ®iÒu khiÓn xung clock ngoµi ®ång bé
khi TMR1CS=1
bit2=0 cã ®ång clock ngoµi
=1 kh«ng ®ång bé clock ngoµi
khi TMR1CS=0 bit nµy kh«ng cã t¸c dông
bit 1 TMR1CS bit lùa chän nguån xung clock vµo
TMR1CS=1 clock tõ ch©n RC0/T1OSO/T1CKI(s−ên lªn)
TMR1CS=0 clock trong Fosc/4
Bit 0 bit bËt t¾t Timer
1= Timer 1 enable
0=Timer 1 Disable
2.5.3. Bé Timer 2
Bé Timer2 cã nh÷ng ®Æc tÝnh sau ®©y ;
+ 8 bÝt cho bé ®Þnh thêi ( thanh ghi TMR2 )
+ 8 bÝt vßng lÆp ( thanh ghi PR2 )
+ Cã kh¶ n¨ng ®äc vµ viÕt ë c¶ hai thanh ghi nãi trªn
+ Cã kh¶ n¨ng lËp tr×nh b»ng phÇn mÒm tû lÖ tr−íc
+ Cã kh¶ n¨ng lËp tr×nh b»ng phÇn mÒm tû lÖ sau
ChÕ ®é SSP dïng ®Çu ra cña TMR2 ®Ó t¹o xung clock. Timer2 cã mét thanh
ghi ®iÒu khiÓn ®ã lµ thanh ghi T2CON. Timer 2 cã thÓ t¾t b»ng viÖc xo¸ bÝt
TMR2CON cña thanh ghi T2CON
Ho¹t ®éng cña bé Timer2
Timer 2 ®−îc dïng chñ yÕu ë phÇn ®iÒu chÕ xung cña bé CCP, thanh ghi
TMR2 cã kh¶ n¨ng ®äc vµ viÕt, nã cã thÓ xãa b»ng viÖc reset l¹i thiÕt bÞ. §Çu
vµo cña xung cã thÓ chän c¸c tû sau ; 1:1 , 1:2 hoÆc 1:16 viÖc chän c¸c tû nµy cã
thÓ ®iÒu khiÓn c¸c bÝt sau T2CKPS1vµ bÝt T2CKPS0
Ng¾t cña bé Timer2
Copyright (c) IRF Group
Bé Timer2 cã 1 thanh ghi 8 bÝt PR2 . Timer 2 t¨ng tõ gi¸ trÞ 00h cho ®Õn
khíp víi PR2 vµ tiÕp theo nã sÏ reset l¹i gi¸ trÞ 00h vµ lÖnh kÕ tiÕp thùc hiÖn.
Thanh ghi PR2 lµ mét thanh ghi cã kh¶ n¨ng ®äc vµ kh¶ n¨ng viÕt. Thanh ghi
PR2 b¾t ®Çu tõ gi¸ trÞ FFh ®Çu ra cña TMR2 lµ ®−êng dÉn cña cæng truyÒn th«ng
®ång bé, nã ®−îc dïng ®Ó ph¸t c¸c xung ®ång hå

* Thanh ghi T2CON

bit 7 kh«ng sö dông


bit 6-3 TOUTPS3: TOUTPS0 bit lùa chän hÖ sè ®Çu ra Timer 2
0000=1:1
0001=1:2
0010=1:3

1111=1:16
bit 2 TMR2ON bit bËt t¾t ho¹t ®éng Timer 2
1= enable
0= disable
bit 1- 0 T2CKPS1:T2CKPS0 chän hÖ chia ®Çu vµo
00 = 1:1
01 = 1:4
1x=1:16
Copyright (c) IRF Group
2.6. TruyÒn NhËn D÷ LiÖu §ång Bé, DÞ Bé
Bé truyÒn th«ng ®ång bé, dÞ bé cã thÓ ®Þnh d¹ng ë c¸c chÕ ®é sau
+ dÞ bé (song c«ng toµn phÇn)
+ ®ång bé chÝnh (b¸n song c«ng)
+ ®ång bé phô (b¸n song c«ng)
ë ®©y khi sö dông truyÒn th«ng ®ång bé hoÆc dÞ bé ta ph¶i sö dông bÝt
SPEN cña thanh ghi RCSTA vµ bÝt 7,6 cña thanh ghi TRISC ®Ó ®Þnh d¹ng c¸c
ch©n RC6/TX/CK vµ RC7/RX/DT
2.6.1. Tèc ®é truyÒn
Tèc ®é truyÒn ®−îc cung cÊp cho c¶ hai chÕ ®é ®ã lµ truyÒn th«ng ®ång bé vµ dÞ
bé thanh ghi SPBRG ®iÒu khiÓn chu k× ch¹y 8 bÝt cña timer. Trong chÕ ®é dÞ bé
,bÝt BRGH cña thanh ghi TXSTA ®−îc dïng ®Ó ®IÒu khiÓn tèc ®é ,cßn ë trong
chÕ ®é ®ång bé nã kh«ng ®−îc sö dông
C«ng thøc tÝnh tèc truyÒn:
SYNC BRGH=0(Low speed) BRGH=1(High speed)
0 Asynchronous Synchronous
(Baud rate=FOSC/(64*(X+1)) (Baud rate=FOSC/(16*(X+1))
1 Synchronous Kh«ng sö dông
(Baud rate=FOSC/(4*(X+1))
X lµ gi¸ trÞ n¹p vµo thanh ghi SPBRG
vÝ dô dïng th¹ch anh 20MHZ tøc FOSC=20.000.000Hz
®Ó cã tèc ®é baud 9600 khi BRGH=1 lµ
X= (20.000.000 (16 * 9600)) − 1 = 129 n¹p vµo SPBRG
*Thanh ghi ®iÒu khiÓn vµ tr¹ng th¸i truyÒn

bit 7 CSRC bit lùa chän clock chØ dïng trong chÕ ®é ®ång bé
1= Master mode clock tõ BRG
0= Slave Mode clock tõ bªn ngoµi
bit 6 TX9 cho phÐp truyÒn 9 bit
1= truyÒn 9 bit
0=truyÒn 8 bit
bit 5 TXEN bit cho phep truyÒn
1= cho phÐp truyÒn
0=kh«ng cho phÐp truyÒn
bit 4 SYNC lùa chän mode USART
Copyright (c) IRF Group
1= ®ång bé
0= kh«ng ®ång bé
bit 3 kh«ng sö dông
bit 2 bit lùa chän tèc ®é cao
1=tèc ®é cao
0=tèc ®é thÊp
bit 1 TRMT cho tr¹ng th¸I thanh ghi dÞch TSR
1= TSR rçng
0= TSR ®Çy
bit 0 TX9D D÷ liÖu bit thø 9 truyÒn ®i

*Thanh ghi ®iÒu khiÓn vµ tr¹ng th¸i nhËn

bit 7 SPEN cho phÐp c«ng truyÒn nèi tiÕp


1= cho phÐp ho¹t ®éng
0=kh«ng cho phÐp
bit 6 RX9 cho phÐp nhËn bit thø 9
1= nhËn 9 bit
0= nhËn 8 bit
bit 5 SREN Cho phÐp nhËn riªng rÏ
ChÕ ®é kh«ng ®ång bé vµ chÕ ®é ®ång bé phô bit nµy kh«ng sö
dông
ChÕ ®é ®ång bé chñ
0= kh«ng cho nhËn riªng rÏ
1= cho phÐp nhËn riªng rÏ
bit 4 CREN cho phÐp tiÕp tôc nhËn
chÕ ®é kh«ng ®ång bé
1= cho phÐp tiÕp tôc nhËn
0= kh«ng cho phÐp tiÕp tôc nhËn
chÕ ®é ®ång bé
1= cho phÐp tiÕp tôc nhËn ®Õn khi bit CREN xo¸
0= kh«ng cho phÐp tiÕp tôc nhËn
bit 3 ADDEN Cho phÐp ®¸nh ®Þa chØ dïng trong chÕ ®é kh«ng ®ång bé
truyÒn 9bit
1=Cho phÐp ®¸nh ®Þa chØ, bit RSR<8>lµ set cho phÐp ng¾t n¹p d÷
liÖu vµo ®Öm
0=nhËn b×nh th−êng
bit 2 FERR bit lçi khung truyÒn
1= co lçi
Copyright (c) IRF Group
0= kh«ng lçi
bit 1 OERR bit lçi trµn
1= cã lçi trµn
0=kh«ng lçi trµn
bit 0 RX9D bit thø ®−îc ®−a vµo ®©y
2.6.2. ChÕ ®é truyÒn th«ng kh«ng ®ång bé
Trong chÕ ®é nµy d÷ liÖu ®−îc ®Þnh d¹ng nh− sau: ®Çu tiªn lµ bÝt START ,
tiÕp theo lµ 8 hoÆc 9 bÝt d÷ liÖu, cuèi cïng lµ bÝt STOP. Th«ng th−êng d÷ liÖu
®−îc ®Þnh d¹ng ë d¹ng 8 bÝt. ViÖc truyÒn vµ nhËn d÷ liÖu ®−îc tiÕn hµnh víi
nh÷ng bÝt thÊp trø¬c. ViÖc truyÒn vµ nhËn cã thÓ tiÕn hµnh ®éc lËp nhau, khi sö
dông cã thÓ ®Þnh d¹ng d÷ liªu vµ tèc ®é truyÒn. ViÖc truyÒn th«ng dÞ bé dõng khi
ë chÕ ®é SLEEP
*TruyÒn d÷ liÖu ë chÕ ®é di bé
Quan träng nhÊt trong viÖc truyÒn d÷ liÖu lµ thanh ghi TSR. D÷ liÖu cña nã
cã thÓ ®−îc viÕt vµ ®äc th«ng qua bé ®Öm lµ thanh ghi TXREG. Thanh ghi TSR
kh«ng ®−îc n¹p gi¸ trÞ cho tíi khi bÝt STOP cña lÇn tr−íc chuyÓn ®i. Khi bÝt
STOP chuyÓn ®i nã sÏ n¹p gi¸ trÞ míi tíi thanh ghi TSR tõ thµnh ghi TXREG.
NÕu thanh ghi TXREG rçng nã sÏ ®Æt cê bÝt TXIF cña thanh ghi PIR1. Trong khi
cê bÝt TXIF cho biÕt tr¹ng th¸i cña thanh ghi TXREG, th× bÝt TRMT cho biÕt
tr¹ng th¸i cña thanh ghi TSR. BÝt tr¹ng th¸i TRMT chØ dïng ®Ó ®äc, nã ®−îc ®Æt
khi thanh ghi TSR rçng. ViÖc truyÒn d÷ liÖu ho¹t ®éng khi ta ®Æt bÝt TXEN cña
thanh ghi TXSTA. ViÖc truyÒn d÷ liÖu chØ ho¹t ®éng khi d÷ liÖu ®· ®−îc n¹p tíi
thanh ghi TXREG vµ tèc ®é truyÒn ®· ®−îc s¶n sinh tõ xung ®ång hå. Khi viÖc
truyÒn d÷ liÖu b¾t ®Çu lÇn ®Çu tiªn th× thanh ghi TSR lóc ®ã rçng. Ngay lËp tøc
d÷ liÖu ®−îc truyÒn tõ thanh ghi TXREG tíi thanh ghi TSR vµ sau ®ã thanh ghi
TXREG rçng, sau ®ã nã l¹i quay l¹i nh− trªn.
§Ó viÖc truyÒn 9 bÝt d÷ liÖu ®I th× bÝt truyÒn TX9 cña thanh ghi TXSTA ph¶i
®−îc ®Æt vµ bÝt thø 9 truyÒn ®i ®−îc viÕt tíi bÝt TX9D. BÝt thø 9 nµy ph¶i ®−îc
viÕt tr−íc, tr−íc khi chuyÓn 8 bÝt d÷ liÖu tíi thanh ghi TXREG. Bëi v× d÷ liÖu
viÕt tíi thanh ghi ngay lËp tøc ®−îc chuyÓn tíi thanh ghi TSR.
*ViÖc nhËn d÷ liÖu ë chÕ dé dÞ bé
Trong chÕ ®é dÞ bé, viÖc nhËn d÷ liÖu ®−îc kÝch ho¹t b»ng viÖc ®Æt bÝt
CREN cña thanh ghi RCSTA.
PhÇn quan träng nhÊt trong viÖc nhËn d÷ liÖu lµ thanh ghi RSR. Sau khi ®·
nhËn xong bÝt STOP, nã chuyÓn d÷ liÖu tï thanh ghi RSR tíi thanh ghi RCREG
nÕu thanh ghi nµy trèng. NÕu viÖc truyÒn nhËn hoµn thµnh th× cê bÝt RCIF cña
thanh ghi PIR1 sÏ ®−îc ®Æt. cã thÓ ng¾t ho¹t ®éng cña nã b»ng viÖc ®Æt bÝt RCIE
cña thanh ghi PIE1. Cê bÝt RCIF chØ dïng ®Ó ®äc, nã ®−îc xãa trong phÇn cøng.
Nã sÏ ®−îc xo¸ khi thanh ghi RCREG ®−îc ®äc lµ trèng. Thanh ghi nµy lµ mét
thanh ghi cã bé ®Öm ®«i. Nã cã kh¶ n¨ng nhËn 2 byte d÷ liÖu vµ truyÒn tíi thanh
ghi RCREG FIFO vµ khi ®ã byte thø 3 ®i vµo thanh ghi RSR. NÕu ph¸t hiÖn bÝt
STOP mµ thanh ghi RCREG vÉn ®Çy th× bÝt b¸o lçi OERR sÏ ®−îc ®Æt. BÝt b¸o
Copyright (c) IRF Group
lçi chØ ®−îc xo¸ trong phÇn mÒm. NÕu bÝt OERR ®−îc ®Æt th× viÖc truyÒn d÷ liÖu
tõ thanh ghi RSR tíi thanh ghi RCREG bÞ ng¨n cÊm vµ kh«ng cã d÷ liÖu ®−îc
nhËn. CÊu tróc cña bÝt b¸o lçi FERR ®−îc ®Æt khi bÝt STOP ®−îc ph¸t hiÖn ®·
®−îc xo¸. BÝt FERR vµ bÝt thø 9 lµ c¸c bé ®Öm gièng nh− ph−¬ng ph¸p bé ®Öm.
Trong khi ®ang ®äc thanh ghi RCREG nã sÏ n¹p gi¸ trÞ míi cho bÝt RX9D vµ
FERR
2.6.3. TruyÒn th«ng ®ång bé chÕ ®é chñ
Trong chÕ dé nµy d÷ liÖu ®−îc truyÒn nhËn duíi d¹ng b¸n song c«ng (viÖc
truyÒn vµ nhËn d÷ liÖu kh«ng thÓ tiÕn hµnh ®ång thêi cïng mét lóc). Khi ®ang
truyÒn d÷ liÖu th× viÖc nhËn d÷ liÖu bÞ ng¨n cÊm. viÖc chän chÕ ®é truyÒn th«ng
®ång bé ®−îc x¸c lËp b»ng viÖc ®Æt bÝt SYNC cña thanh ghi TXSTA, ngoµi ra bÝt
SPEN cßn ®−îc ®Æt ®Ó ®Þnh d¹ng c¸c ch©n RC6/TX/CKvµ RC7/RX/DT ®Ó cho
ch©n xung ®ång hå vµ ch©n truyÒn d÷ liÖu. ChÕ ®é chñ cßn ®−îc x¸c lËp b»ng
viÖc ®Æt bit CSRC cña thanh ghi TXSTA.
ViÖc nhËn d÷ liÖu trong chÕ ®é truyÒn th«ng ®ång bé chñ. T−¬ng tù nh−
truyÒn th«ng dÞ bé, nã ph¶i cã thanh ghi TSR. thanh ghi nµy ®äc vµ viÕt d÷ liÖu
th«ng qua bé ®ªm lµ thanh ghi TXREG. Thanh ghi nµy ®−îc n¹p d÷ liÖu trong
phÇn mÒm. Thanh ghi TSR sÏ kh«ng ®−îc n¹p gi¸ tÞ cho tíi tËn thi ®· truyÒn hÕt
bÝt cuèi cïng cña lÇn truíc ®ã. Khi ®· truyÒn hÕt bÝt cuèi cïng, th× thanh ghi TSR
sÏ n¹p gi¸ trÞ míi tõ thanh ghi TXREG. Thanh ghi TXREG rçng th× bÝt cê ng¾t
TXIF sÏ ®−îc ®Æt. Cê ng¾t nµy cã thÓ quy ®Þnh ho¹t ®éng hoÆc kh«ng ho¹t ®éng
b»ng viÖc ®Æt hoÆc xo¸ bÝt TXIE cña thanh ghi PIE1. Trong khi cê bÝt TXIF cho
biÕt tr¹ng th¸i cña thanh ghi TXREG, th× bÝt TRMT cho biÕt tr¹ng th¸i cña thanh
ghi TSR. BÝt tr¹ng th¸i TRMT chØ dïng ®Ó ®äc, nã ®−îc ®Æt khi thanh ghi TSR
rçng.
ViÖc truyÒn d÷ liÖu ho¹t ®éng b»ng viÖc ®Æt bÝt TXEN cña thanh ghi
TXSTA, bÝt d÷ liÖu ®Çu tiÒn sÏ ®−îc di chuyÓn trªn xung ®i lªn cña xung clock
trªn ch©n CLK. ViÖc truyÒn d÷ liÖu ®−îc b¾t ®Çu b»ng thanh ghi TXREG vµ ®Æt
bÝt TXEN. ¦u ®iÓm ë ®©y lµ tèc ®é thÊp cã thÓ ®−îc lùa chän. Tèc ®é truyÒn
®−îc gi÷ nguyªn trong khi RESET khi xo¸ 3 bÝt TXEN, CREN, SREN. ViÖc
truyÒn d÷ liÖu ®−îc b¾t ®Çu lÇn ®Çu tiªn khi thanh ghi TSR rçng, khi chuyÓn d÷
liÖu tíi thanh ghi TXREG nã ngay lËp tóc chuyÓn tíi thanh ghi TSR vµ kÕt qu¶
lµ thanh ghi TXREG rçng. Xo¸ bÝt TXEN Trong khi ®ang truyÒn d÷ liÖu lµ lÝ do
viÖc truyÒn d÷ liÖu bÞ gi¸n ®o¹n vµ nã ph¶i dõng l¹i, vµ nÕu bÝt CREN hoÆc bÝt
SREN ®−îc ®Æt trong khi ®ang truyÒn còng lµ nguyªn nh©n g©y ra viÖc truyÒn d÷
liÖu bÞ gi¸n ®o¹n.
Víi môc ®Ých truyÒn 9 bÝt d÷ liÖu th× bÝt TX9 cña thanh ghi TXSTA ph¶i
®−îc ®Æt vµ bÝt thø 9 nµy ph¶i ®−îc viÕt tíi bÝt TX9D. BÝt thø 9 nµy ph¶i ®−îc
viÕt tr−íc khi viÕt 8 bÝt d÷ liÖu tíi thanhghi TXREG. Bëi v× d÷ liÖu ®−îc viÕt tíi
thanh ghi TXREG ngay lËp tøc ®−îc chuyÓn tíi thanh ghi TSR, nÕu thanh ghi
nµy rçng. NÕu thanh ghi TSR rçng vµ thanh ghi TXREG ®−îc viÕt tr−íc khi viÕt
gi¸ trÞ míi tíi bÝt TX9D, th× hiÖn t¹i nã sÏ n¹p gi¸ trÞ cò ë trong bÝt TX9D.
Copyright (c) IRF Group
ViÖc nhËn d÷ liÖu ë chÕ ®é ®ång bé chñ: chÕ ®é nhËn d÷ liÖu ë chÕ ®é ®ång
bé chñ ®−îc chän b»ng viÖc ®Æt bÝt SREN hoÆc bÝt CREN cña thanh ghi RCSTA.
D÷ liÖu ®−îc ®−a ë ch©n RC/RX/DT ë trªn c¹nh xuèng cña xung ®ång hå. NÕu
bÝt SREN ®−îc ®Æt th× chØ cã 1 tõ ®−îc nhËn. nÕu bÝt CREN ®−îc ®Æt th× viÖc
nhËn cø tiÕp diÔn cho tíi tËn khi bÝt nµy ®−îc xo¸ míi th«i. C¶ hai bÝt nµy ®Òu
®−îc ®Æt th× bÝt CREN ®−îc −u tiªn tr−íc råi theo thø tù ®ã. Sau khi d÷ liÖu ®·
®−îc nhËn vµo trong thanh ghi RSR nã sÏ chuyÓn tíi thanh ghi RCREG. Khi
viÖc chuûªn dÞch nµy hoµn thµnh th× cê bÝt RCIF cña thanh ghi PIR1 sÏ ®−îc ®Æt.
Ho¹t ®éng cña cê nµy cã thÓ cã hoÆc kh«ng nhê viÖc ®Æt hoÆc xo¸ bÝt RCIE cña
thanh ghi PIE1. RCREG lµ 1 thanh ghi cã 2 bé ®Öm lµ 2 thanh ghi. Nã cã kh¶
n¨ng nhËn 2 byte d÷ liÖu ®Ó chuyÓn tíi thanh ghi RCREG FIFO vµ byte thø ba
b¾t ®Çu chuyÓn tíi thanh ghi RSR. Trong khi rêi bÝt cuèi cïng cña byte thø ba
mµ thanh ghi RCREG vÉn ®Çy th× bÝt b¸o lçi OERR sÏ ®−îc ®Æt va tõ ë trong
thanh ghi RSR sÏ bÞ lçi. BÝt OERR ®−îc xãa trong phÇn mÒm. NÕu bÝt nµy ®−îc
®Æt th× viÖc chuyÓn d÷ liÖu tõ thanh ghi RSR tíi thanh ghi RCREG bÞ ng¨n cÊm.
ViÖc nhËn bÝt thø 9 còng t−¬ng tù nh− viÖc nhËn bÝt d÷ liÖu. Trong khi thanh ghi
RCREG ®ang ®äc nã sÏ n¹p gi¸ trÞ míi cho bÝt RX9D. §ã lµ ®IÒu cÇn chó ý khi
ng−êi sö dông dïng truyÒn th«ng chÝn bÝt d÷ liÖu
2.6.4. TruyÒn th«ng ®ång bé chÕ ®é phô
TruyÒn th«ng ®ång bé chÕ ®é phô kh¸c víi truyÒn th«ng ®ång bé chÕ ®é
chÝnh trong tr−êng hîp xung ®ång hå bªn ngoµi cung cÊp t¹i ch©n RC6/ TX /
CK. Nã cã thÓ cho phÐp thiÕt bÞ nhËn hoÆc truyÒn d÷ liÖu trong chÕ ®é SLEEP.
ChÕ ®é phô ®−îc tiÕn hµnh b»ng viÖc xo¸ bÝt CSRC cña thanh ghi TXSTA.
*TruyÒn d÷ liÖu trong chÕ ®é truyÒn th«ng phô: Ho¹t ®éng cña chÕ ®é
truyÒn th«ng ®ång bé chÝnh vµ truyÒn th«ng ®ång bé phô hoµn toµn gièng nhau,
chØ kh¸c lµ chÕ ®é truyÒn th«ng phô cã thÓ ho¹t ®éng ë chÕ ®é SLEEP. NÕu hai
tõ ®−îc viÕt tíi thanh ghi TXREG vµ lÖnh SLEEP ®ù¬c tiÕn hµnh th× nã sÏ tån
t¹i nh÷ng ®iÓm sau :
+Tõ ®Çu truyÒn tíi thanh ghi TSR vµ nã chuyÓn ®i ngay lËp tøc
+Tõ thø hai ®−îc chøa trong thanh ghi TXREG
+Cê bit TXIF sÏ kh«ng ®−îc ®Æt
+Khi tõ ®Çu tiªn ®−îc chuyÓn ra khái thanh ghi TSR. Thanh ghi TXREG
sÏ chuyÓn tõ thø hai vµo thanh ghi TSR vµ b©y giê cê bÝt TXIF sÏ ®−îc ®Æt
+NÕu bÝt TXIE ®−îc ®Æt ng¾t sÏ ®−îc gäi tõ SLEEP vµ ng¾t tÝnh toµn cÇu
cña ng¾t sÏ ®−îc gäi.
Khi thiÕt lËp TruyÒn th«ng ®ång bé ë chÕ ®é phô ta cã nh÷ng b−íc sau:
+ §Ó thiÕt lËp chÕ ®é cæng truyÒn th«ng ®ång bé phô th× ta ph¶i ®Æt bÝt
SYNC vµ BÝt SPEN vµ xo¸ bÝt CSRC
+ Xo¸ bÝt CREN vµ SREN
+ NÕu ng¾t cã thÓ ho¹t ®éng, th× ph¶i ®Æt bÝt TXIE
+ NÕu truyÒn th«ng chÝn bÝt th× ph¶I ®Æt bÝt TX9
+ViÖc truyÒn th«ng cã thÓ thiÕt lËp TXEN
Copyright (c) IRF Group
+ NÕu viÖc truyÒn th«ng chÝn bit ®−îc thiÕt lËp th× bÝt thø chÝn ph¶I ®−îc
n¹p tíi bÝt TX9D
+Khi míi b¾t ®Çu truyÒn th× d÷ liÖu ®−îc n¹p tíi thanh ghi TXREG
+ NÕu sö dông ng¾t th× ph¶I ch¾c ch¾n r»ng bÝt GIE vµ bÝt PEIE ®· ®−îc
®Æt
*NhËn d÷ liÖu ë chÕ ®é truyÒn th«ng ®ång bé phô: Ho¹t ®éng cña chÕ ®é
truyÒn th«ng ®ång bé chÕ ®é phô vµ truyÒn th«ng ®ång bé chÕ ®é chÝnh hoµn
toµn gièng nhau, nh−ng ë chÕ ®é phô nã cã thÓ ho¹t ®éng ë lÖnh SLEEP. BÝt
SREN kh«ng ®−îc sö dông ë chÕ ®é nµy.
NÕu viÖc nhËn d÷ liÖu ®−îc ho¹t ®éng b»ng viÖc ®Æt bÝt CREN tr−íc khi
lÖnh SLEEP ®−îc thùc hiÖn. Tõ ®−îc nhËn trong khi SLEEP, khi viÖc nhËn d÷
liÖu hoµn thµnh, th× thanh ghi RSR sÏ chuyÓn d÷ liÖu tíi thanh ghi RCREG Vµ
nÕu bÝt RCIE ®−îc ®Æt, th× ng¾t cã thÓ gäi tõ lÖnh SLEEP.
2.7. Bé chuyÓn ®æi t−¬ng tù sang sè :
Bé chuyÓn ®æi t−¬ng tù sang sè cã 8 kªnh ®èi Pic16F877.
TÝn hiÖu t−¬ng tù ®−îc n¹p vµo bé n¹p ®iÖn vµ gi÷ ®iÖn dung. TÝn hiÖu ra ®iÓn
h×nh vµ gi÷ ®iÖn dung duy tr× lµ ®Çu vµo bé chuyÓn ®æi. Bé chuyÓn ®æi A/D ph¸t
ra kÕt qu¶ sè 10 bÝt. Bé chuyÓn ®æi A/D cã sù chuyÓn ®iÖn thÕ cao vµ thÊp ®Çu
vµo ®−îc lùa chän trong phÇn mÒm ®Ó cã sù kÕt hîp cña VDD, VSS, RA2, RA3.
Bé chuyÓn ®æi A/D cã ®Æc tr−ng duy nhÊt cã thÓ ho¹t ®éng trong khi thiÕt bÞ
lµ trong tr¹ng th¸i SLEEP. §Ó ho¹t ®éng trong ph−¬ng thøc nµy A/D ph¶i ®−îc
lÊy tõ nguån ®ång hå bªn trong m¹ch dao ®éng RC.
Bé chuyÓn ®æi A/D cã 4 thanh ghi. §ã lµ nh÷ng thanh ghi:
A/D thanh ghi kÕt qu¶ cao(ADRESH)
A/D thanh ghi kÕt qu¶ thÊp(ADRESL)
Thanh ghi ®iÒu khiÓn chuyÓn ®æi A/D ( ADCON0)
Thanh ghi ®iÒu khiÓn chuyÓn ®æi A/D ( ADCON1)
Thanh ghi ADCON0 tr×nh bµy trong thanh ghi 8.1 ®iÒu khiÓn ho¹t ®éng cña
bé chuyÓn ®æi A/D. Thanh ghi ADCON1 tr×nh bµy trong h×nh 8.2 ®Þnh d¹ng hµm
cña ch©n cæng. Ch©n cæng cã thÓ s¾p xÕp nh− lµ tÝn hiÖu vµo t−¬ng tù hoÆc nh−
lµ ®Çu vµo ra sè.
*Thanh ghi 8.1: Thanh ghi ADCON0 ( ®Þa chØ 1Fh)
BÝt 7-6: ADCS1:ADCS0 Nh÷ng bÝt lùa chän ®ång hå chuyÓn ®æi A/D
00=FOSC/2
01= FOSC/8
10= FOSC/32
11= FRC(®ång hå xuÊt ph¸t tõ bªn trong bé chuyÓn ®æi A/D dao ®éng
RC)
BÝt 5-3:CHS2:CHS0 BÝt chän kªnh t−¬ng tù.
000=kªnh 0( RA0/AN0)
001=kªnh 1 (RA1/AN1)
010=kªnh 2 (RA1/AN2)
Copyright (c) IRF Group
011=kªnh 3 (RA3/AN3)
100=kªnh 4 (RA5/AN4)
101=kªnh 5 ( RE0/AN5)
110=kªnh 6 (RE1/AN6)
111=kªnh 7( RE2/AN7)
BÝt 2 :GO/DONE bÝt tr¹ng th¸i chuyÓn ®æi A/D
NÕu ADON=1
1=chuyÓn ®æi A/D ®ang thùc hiÖn (®Æt bÝt nµy ®Ó b¾t ®Çu qu¸ tr×nh
chuyÓn ®æi)
0=chuyÓn ®æi A/D kh«ng trong qua tr×nh thùc hiÖn(BÝt nµy sÏ tù ®éng
xo¸ bëi phÇn cøng sau khi qu¸ tr×nh chuyÓn ®æi A/D hoµn thµnh.)
BÝt 1: BÝt ng−êi dïng ®Þnh nghÜa .
BÝt 0: ADON:bÝt bËt chuyÓn ®æi.
1= Bé chuyÓn ®æi A/D ho¹t ®éng
0=Bé chuyÓn ®æi A/D t¾t vµ ngõng ho¹t ®éng.
*Thanh ghi 8.2 thanh ghi ADCON1(®Þa chØ 9Fh)
BÝt 7 : ADFM : bÝt lùa chän kÕt qu¶ ®Þnh d¹ng .
BÝt 6-4 : ng−êi dïng ®Þnh nghÜa .
BÝt 3-0 : BÝt ®iÒu khiÓn s¾p xÕp cæng chuyÓn ®æi A/D.
Thanh ghi ADRESH:ADRESL chøa ®ùng 10 bÝt kÕt qu¶ cña chuyÓn ®æi
A/D. Khi chuyÓn ®æi A/D lµ hoµn thµnh kÕt qu¶ ®−îc n¹p vµo thanh ghi kÕt qu¶
chuyÓn ®æi A/D. BÝt GO/DONE (ADCON0<2>) ®−îc xo¸ vµ bÝt cê ng¾t chuyÓn
®æi A/D lµ ADIF ®−îc ®Æt.
Sau ®ã bé chuyÓn ®æi A/D ®−îc s¾p xÕp nh− mong muèn. Lùa chän kªnh
ph¶i ®¹t ®−îc tr−íc khi chuyÓn ®æi b¾t ®Çu. Kªnh vµo t−¬ng tù ph¶i cã bÝt TRIS
t−¬ng øng ®−îc lùa chän nh− lµ ®Çu vµo.
Nh÷ng b−íc cÇn lµm theo khi thùc hiÖn chuyÓn ®æi A/D :
1. lùa chän cÊu h×nh A/D
+§Æt cÊu h×nh t−¬ng tù cho ch©n vµo A/D
+Lùa chän kªnh vµo chuyÓn ®æi A/D (ADCON0) .
+Lùa chän ®ång hå chuyÓn ®æi A/D .
+BËt bé chuyÓn ®æi A/D (ADCON0) .
2. Lùa chän cÊu h×nh ng¾t cho A/D
+Xo¸ bÝt ADIF.
+§Æt bÝt ADIE.
+§Æt bÝt PEIE.
+§Æt bÝt GIE
3. §îi phô thuéc thêi gian ®¹t ®−îc.
4. B¾t ®Çu chuyÓn ®æi:
+§Æt bÝt GO/DONE(ADCON0).
5. §îi cho chuyÓn ®æi A/D hoµn thµnh bëi :
+Th¨m dß bÝt GO/DONE ®Ó xo¸ (víi thùc hiÖn ng¾t) hoÆc ®îi cho ng¾t
chuyÓn ®æi A/D.
Copyright (c) IRF Group
6. §äc kÕt qu¶ chuyÓn ®æi cÆp thanh ghi (ADRESH:ADRESL) xo¸ bÝt
ADIF nÕu quy ®Þnh .
7. Cho chuyÓn ®æi kÕ tiÕp, thùc hiÖn b−íc 1 hoÆc b−íc 2 theo quy
®Þnh.Tèc ®é chuyÓn ®æi A/D qui ®Þnh nh− lµ chu k× TAD. Gi¸ trÞ nhá nhÊt ®îi cña
2 chu k× lµ ®−îc quy ®Þnh tr−íc khi b¾t ®Çu kÕ tiÕp.
2.7.1. Lùa chän tèc ®é chuyÒn ®æi :
Tèc ®é chuyÓn ®æi lµ ®−îc ®Þnh nh− lµ TAD. Quy ®Þnh thêi gian chuyÓn ®æi
A/D nhá nhÊt 12TAD cho 10 bÝt chuyÓn ®æi. Nguån cña thêi gian chuyÓn ®æi lùa
chän trong phÇn mÒm. Cã thÓ chän mét trong 4 ë b¶ng lùa chän.
2TOSC , 8TOSC, 32TOSC, Dao ®éng RC trong bé chuyÓn ®æi A/D.(2®Õn 6 µ s).
§Ó cho viÖc chuyÓn ®æi ®óng ,thêi gian chuyÓn ®æi TADph¶i ®−îc lùa chän ®Ó
ch¾c ch¾n TADnhá nhÊt 1.6 µ s.
B¶ng 11-1 tr×nh bµy gi¸ trÞ thêi gian TAD nhËn ®−îc tõ thiÕt bÞ ph¸t tÇn sè vµ lùa
chän nguån ®ång hå .
Chó ý:
1>Nguån RC cã thêi gian chu k× TAD4 µ s nh−ng cã thÓ trong kho¶ng 2 ÷ 6 µ s.
2>Khi tÇn sè thiÕt bÞ lín h¬n 1MHz bé chuyÓn ®æi A/D nguån ®ång hå khëi t¹o
cho SLEEP ho¹t ®éng.
2.8. C¸c ng¾t cña PIC16F877
PIC16F877 cã 14 nguån ng¾t, thanh ghi INTCON lµ thanh ghi ®iÒu khiÓn
c¸c ng¾t, mçi ng¾t cã mét bit cê ng¾t vµ mét bit cho phÐp hoÆc cÊm ng¾t. Bit
GIE (INTCON<7>) ®iÒu khiÓn chung cho 14 ng¾t khi bit nµy set th× c¸c ng¾t
míi cã t¸c dông, khi bit GIE xo¸ th× tÊt c¶ c¸c ng¾t bÞ cÊm.
Bit GIE bÞ xo¸ khi reset. Khi bit cê ng¾t thiÕt lËp bit GIE thiÕt lËp vµ bit
PEIE thiÕt lËp víi ng¾t ngo¹i vi ®ång thêi bit cho phÐp ng¾t cña ng¾t ®ã cho phÐp
th× ng¾t ®ã xÈy ra.
Khi mét ng¾t xÈy ra bé ®Õm ch−¬ng tr×nh PC ®−îc n¹p gi¸ trÞ 0004h vµ bit
GIE bÞ xo¸ ®Ó cÊm sù chång ng¾t, khi chØ lÖnh RETFIE thùc hiÖn tr¶ l¹i ®Þa chØ
cho PC n¬i xÈy ra ng¾t, ®ång thêi thiÕt lËp l¹i bit GIE.
Khi xÈy ra ng¾t PC lu«n ®−îc n¹p gi¸ trÞ 0004h v× c¸c ng¾t ®−îc ph©n biÖt
bëi bit cê ng¾t cña ng¾t ®ã.
Ng¾t ngoµi tõ ch©n RB0/INT, vµ ng¾t tõ sù thay ®æi tr¹ng th¸i c¸c ch©n
RB4:RB7 cã thÓ ®¸nh thøc bé xö lý tõ chÕ ®é SLEEP.
C¸c thanh ghi PIE1, PIR1, PIE2, PIR2 ®iÒu khiÓn c¸c ng¾t ngo¹i vi

S¬ ®å c¸c bit ®iÒu khiÓn ng¾t:


Copyright (c) IRF Group

Khi mét ng¾t xÈy ra chØ cã PC ®−îc l−u trong stack do ®ã ng−êi sö dông
ph¶i l−u c¸c thanh ghi W, STATUS, PCLATH, khi xÈy ra ng¾t.
vÝ dô thùc hiÖ ®iÒu nµy:
ORG 0000h
...
ORG 0004h
MOVWF W_TEM ;L−u W
MOVF STATUS,W
CLRF STATUS ;chon bank 0
MOVWF STATUS_TEM ;L−u STATUS
MOVF PCLATH,W
MOVWF PCLATH_TEM ;L−u PCLATH
CLRF PCLATH ;chän trang 0
...
;ch−¬ng tr×nh phôc vô c¸c ng¾t
...
;Kh«i phôc c¸c 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ó ý biÕn W_TEM ph¶i ®−îc ®Þnh nghia ë tÊt c¶ c¸c bank hoÆc ë vïng
®Þa ®Þa chung cho c¸c bank(ë PIC16F877 lµ ®Þa chØ 70h-7Fh), c¸c biÕn
PCLATH_TEM, STATUS chØ ®Þnh nghÜa ë bank 0.
2.9. M« t¶ tËp lÖnh cña PIC16F877.
PIC16F877 cã 35 lÖnh hÇu hÕt c¸c lÖnh thùc hiÖn trong mét chu kú m¸y
trõ mét sè lÖnh rÏ nh¸nh. Mçi lÖnh lu«n cã ®é dµi cè ®Þnh 14 bit.
Quy −íc
f: ®Þa chi « nhí tõ 0-7fh
d: bit ®Þnh h−íng d÷ liÖu kÕt qu¶
+d=1 kÕt qu¶ l−u trong f
+d=0 l−u trong W
b: chØ ra bit thø b trong f, 0=<b<=7
k: h»ng sè tõ 0-ffh
B¶ng tËp lÖnh PIC16F877.

Tªn lÖnh gîi M« t¶ lÖnh Sè chu Tr¹ng th¸i cê


nhí kú lÖnh ¶nh h−ëng
ADDWF f,d Céng W víi 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 LÊy bï 1 cña f 1 Z
DECF f,d Gi¶m f mét ®¬n vÞ 1 Z
DECFSZ f,d Gi¶m f mét ®¬n vÞ, skip if 0 1(2)
INCF f,d T¨ng f mét ®¬n vÞ 1 Z
INCFSZ f,d T¨ng f mét ®¬n vÞ, skip if 0 1(2)
IORWF f,d Or W vµ f 1 Z
MOVF f,d Copy f tíi W hoÆc chÝnh f 1 Z
MOVWF f Copy W tíi f 1
NOP Kh«ng lµm g× 1
RLF f,d Quay tr¸i f qua cê nhí C 1 C
RRF f,d Quay ph¶i f qua cê nhí C 1 C
SUBWF f,d Trõ f cho W 1 Z,DC,C
SWAPF f,d Ho¸n vÞ 4 bit thÊp cña f cho 1
4 bit cao cña f
XORWF f,d Xor W vµ f 1 Z
BCF f,b Xo¸ bit b cña f 1
BSF f,b Set bit b cña f 1
Copyright (c) IRF Group
BTFSC f,b Test bit b cña f, Skip if clear 1(2)
BTFSS f,b Test bit b cña f, Skip if set 1(2)
ADDLW k W=Céng k vµ W 1 Z,DC,C
ANLW k W=WAnd k 1 Z
CALL k Gäi thñ tôc con ë ®Þa chØ k 2
lµ sè 11 bit
CLRWDT Reser WDT 1 TO , PD
GOTO k Nh¶y tíi ®Þa chØ k lµ sè 11 2
bit
IORLW k W=W or k 1 Z
MOVLW k W=k 1
RETFIE Trë vÒ tõ ng¾t 2
RETLW k Trë vÒ tõ thñ tôc con vµ 2
W=k
RETURN Trë vÒ tõ thñ tôc con 2
SLEEP Nh¶y tíi 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: NÕu kÕt qu¶ =0 th× bá qua mét lÖnh ngay sau lÖnh nµy
Skip if clear: bit nµy xo¸ thi bá mét lÖnh ngay sau lÖnh nµy
Skip if set: bit nµy set thi bá mét lÖnh ngay sau lÖnh nµy

NguyÔn V¨n Xu©n


Mail: nvxuan@irfvn.com

You might also like