HiÖn nay víi sù ®a d¹ng v nhiÒu chñng lo¹i kh¸c nhau cña PIC ®Æc biÖt l tÝnh æn ®Þnh cña
chóng ®$ lm cho nhiÒu ng−êi thÝch thó v −a chuéng v× vËy chóng ®$ ®−îc øng dông réng
r$i trªn ton thÕ giíi.
Côm tõ PIC ®−îc viÕt t¾t tõ côm tõ : peripheral interface controller
(Bé §iÒu KhiÓn giao tiÕp c¸c thiÕt bÞ ngo¹i vi).Kh¸c víi c¸c bé vi xö ,bé vi ®iÒu khiÓn ®−îc
tÝch hîp ton bé nh− RAM , ROM , c¸c PORTS truy xuÊt ,giao tiÕp ngo¹i vi trùc tiÕp trªn
mét con chÝp hÕt søc nhá gän.
PIC16F877A l mét vi ®iÒu khiÓn cã kiÕn tróc HARVARD (bé nhí ch−¬ng tr×nh v bé nhí
d÷ liÖu ®−îc truy xuÊt ®éc lËp víi nhau) sö dông 14 bit cho c¸c lÖnh , v tËp lÖnh cña nã chØ
hÇu hÕt chØ cã mét WORD.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
Ch−¬ng2
CÊu tróc phÇn cøng cña PIC16f877a
i)bé nhí ch−¬ng tr×nh cña pic
Kh«ng gian bé nhí ch−¬ng tr×nh cña PIC kh¸c nhau tuú thuéc vo tõng lo¹i
ëÖÕ næu G8 obt îr fê -−4
-16C711,16F84 cã 1024(1K)
-16F877A cã 8192(8K)
-17C766 cã 16384(16K)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
Ch−¬ng 3
C¸c thanh ghi cã chøc n¨ng ®Æc biÖt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
C¸c thanh ghi ny cã chøc n¨ng ®iÒu khiÓn c¸c ho¹t ®éng v c¸c khèi giao tiÕp ngo¹i vi cña
vi ®iÒu khiÓn
i) thanh ghi Status
Bit 0 : l mét cê b¸o trn mçi khi cã nhí tõ bit 7 trong phÐp céng hoÆc cã m−în
trong phÐp trõ
Bit 1 : l cê nhí phô bÞ t¸c ®éng khi thùc hiÖn phÐp to¸n v−ît qu¸ 4 bÝt thÊp
Bit 2 :
Z=1 nÕu kÕt qu¶ phÐp to¸n b»ng 0
Z=0 nÕu kÕt qu¶ phÐp to¸n kh¸c 0
Bit 3 :
PD=1 sau khi bËt nguån hoÆc bëi lÖnh CLRWDT
PD=0 khi lÖnh SLEEP ®−îc thùc thi
Bit 4 :
TO=1 nÕu cã lÖnh SLEEP thùc thi hoÆc lÖnh CLRWDT hoÆc sau khi bËt
nguån
HUZU l7Õ (b ;/H (® k18l
Bit 6-5:
00: chän bank 0
01: chän bank 1
10: chän bank 2
11: chän bank 3
Bit 7:
1: chän bank 2,3
0: chän bank 0,1
ii) thanh ghi option_reg:
Bit 0-1-2 : dïng ®Ó chän gi¸ trÞ cho bé chia tÇn cho TIMER0 hoÆc WDT
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
3)bé ®Þnh thêi timer2:
Timer2 l bé ®Þnh thêi 8 bit t−¬ng tù nh− Timer1 nh−ng l¹i cã tíi 2 bé chia tÇn cã thÓ
®−îc dïng trong øng dông ®Ó ®iÒu chÕ ®é réng xung (PWM)
C¸c thanh ghi dïng trong timer2:
Thanh ghi t2con: L thanh ghi thiÕt lËp cÊu h×nh cho Timer2
Bit 1- 0: thiÕt lËp gia trÞ cho bé chia tÇn Prescale
00 = 1:1
01 = 1:4
1x = 1:16
Bit 2:
TMR2ON=1: cho phÐp sö dông Timer2
TMR2ON=0: kh«ng cho phÐp sö dông Timer2
Bit 6- 3: thiÕt lËp gi¸ trÞ cho bé chia tÇn Postcale
Thanh ghi pir1: chøa cê trn TMR2IF cña Timer2
Thanh ghi Pie1: chøa cê cho phÐp ng¾t TMR2IE cña Timer2
Thanh ghi Pr2: øng dông trong PWM
Thanh ghi tmr2: l−u tr÷ gi¸ trÞ ®Þnh thêi 8 bit cho Timer2
+ho¹t ®éng cña bé ®Þnh thêi timer2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
#INCLUDE<16F877A.h> //KHAI BAO DEVICE CHO PIC
#FUSES XT,NOWDT,PUT,NOPROTECT,NOBROWNOUT,NOLVP
/*
XT: SU DUNG THACH ANH TAN SO THAP (=4MHZ)
NOWDT:KHONG SU DUNG CHE DO WATCH DOG TIMER
PUT(POWER UP TIMER): CHON CHE DO LAM VIEC CHO PIC KHI DIEN AP DA ON DINH
NOPROTECT : KHONG CHO PHEP DOC LAI MA CHUONG TRINH TRONG CHIP
NOBROWNOUT : KHONG RESET LAI PIC KHI BI SUT AP
NOLVP(LOW VOLTAGE PROGRAMMING) : ??
*/
#USE DELAY(CLOCK=4000000) //GIA TRI OSC MA BAN DUNG
#USE FAST_IO(B)
VOID MAIN()
{
SET_TRIS_B(0); //THIET LAP CAC CHAN CUA PORTA LA CAC CHAN XUAT DU LIEU
WHILE(TRUE) //TAO VONG LAP VO TAN
{
OUTPUT_HIGH(PIN_B0); //XUAT GIA TRI 1 RA CHAN RB0
DELAY_MS(500); //TAO TRE 0,5s
OUTPUT_LOW(PIN_B0); //XUAT GIA TRI 0 RA CHAN RB0
DELAY_MS(500);
OUTPUT_B(255); //DUA GIA TRI 1 RA CAC CHAN CUA PORTB
DELAY_MS(500);
OUTPUT_B(0); //DUA GIA TRI 0 RA CAC CHAN CUA PORTB
DELAY_MS(500);
}
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
VOID MAIN()
{
SET_TRIS_B(0b10111111); //LAP CHE CHO PIN_B6 LA XUAT CON CAC CHAN KHAC LA NHAP
WHILE(TRUE)
{
IF(BUTTON==0) //KIEM TRA NUT BAM
{
LED=1; //BAT DEN
DELAY_MS(1000);
LED=0; //TAT DEN
}
}
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
VOID MAIN()
{
SET_TRIS_E(0);
SETUP_TIMER_0(RTCC_INTERNAL|RTCC_DIV_2); //SU DUNG TAN SO DAO DONG NOI VA BO CHIA
TAN 1:2
SET_TIMER0(0); //DAT GIA TRI THANH GHI DINH THOI TMR0=0
SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_4); //SU DUNG TAN SO DAO DONG NOI VA BO CHIA TAN
1:4
SET_TIMER1(0); //DAT GIA TRI THANH GHI DINH THOI TMR1=0
SETUP_TIMER_2(T2_DIV_BY_16,255,1); //SU DUNG TAN SO DAO DONG NOI VA BO CHIA TAN 1:16
SET_TIMER2(0); //DAT GIA TRI THANH GHI DINH THOI TMR2=0
TMR0IF=TMR1IF=TMR2IF=0; //XOA CAC CO TRAN
WHILE(TRUE)
{
IF(TMR0IF==1) //KIEM TRA CO TRAN TIMER0
{
OUTPUT_HIGH(PIN_E0);
DELAY_MS(50);
OUTPUT_LOW(PIN_E0);
TMR0IF=0;
}
ELSE IF(TMR1IF==1) //KIEM TRA CO TRAN TIMER1
{
OUTPUT_HIGH(PIN_E1);
DELAY_MS(50);
OUTPUT_LOW(PIN_E1);
TMR1IF=0;
}
ELSE IF(TMR2IF==1) //KIEM TRA CO TRAN TIMER2
{
OUTPUT_HIGH(PIN_E2);
DELAY_MS(50);
OUTPUT_LOW(PIN_E2);
TMR2IF=0;
}
}
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
VOID MAIN()
{
SET_TRIS_B(255);
SET_TRIS_C(0);
U=200;
SETUP_TIMER_2(T2_DIV_BY_16,255,1); //THIET LAP CAU HINH CHO TIMER0
SET_TIMER2(0);
SETUP_CCP1(CCP_PWM); //CHON CHE DO PWM
SET_PWM1_DUTY(U); //XAC DINH SO XUNG DE CHAN PWM1 O MUC 1
WHILE(TRUE)
{
IF(RB1==0) //TANG DO SANG LED
{
U=U+10;
IF(U>255)
{
U=255;
SET_PWM1_DUTY(U);//TANG TOC PHAI
}
ELSE
{
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
Ch−¬ng 7
C¸ch sö dông ch−¬ng tr×nh m« pháng proteus
Giao diÖn cña ch−¬ng tr×nh Proteus nh− sau:
§Ó t×m c¸c linh kiÖn cÇn dïng b¹n Ên phÝm P hay click chuét vo nót P ë bªn tr¸i mn
h×nh
Mét cöa sæ sÏ hiÖn ra:
-Trong ®ã cã c¸c th− môc gióp b¹n dÔ dng trong viÖc t×m c¸c linh kiÖn cÇn dïng
-Vi dô nh− diodes (c¸c lo¹i diot),microcontrollers(c¸c lo¹i vi ®iÒu khiÓn)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
Sau khi s¾p xÕp c¸c linh kiÖn ta cã s¬ ®å hon chØnh nh− sau:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
§Ó ch¹y m« pháng m¹ch ®iÖn ta lm nh− sau:
- Nh¸y chuét ph¶i vo con vi ®iÒu khiÓn ta cÇn khi thÊy nã ®æi mÇu ®á th× ta nh¸y
chuét tr¸i v mét cöa sæ sÏ hiÖn ra nh− sau:
T¹i « program file chóng ta chØ ®−êng dÉn ®Õn file HEX cÇn ph¶i n¹p cho chip
T¹i « processor clock frequency chóng ta chän tÇn sè giao ®éng cña th¹ch anh
Sau ®ã Ên ok ®Ó hon tÊt
- ®Ó ch¹y m« pháng chóng ta sö dông c¸c nót:
Qu¸ tr×nh ch¹y m« pháng ®−îc minh ho¹ ë h×nh d−íi:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
CH¦¥NG 8
H¦íng dÉn sö dông tr×nh biªn dÞch ccs c
Sau khi ci ®Æt phÇn mÒm ch−¬ng tr×nh sÏ cã giao diÖn nh− sau:
§Ó t¹o mét project míi b¹n h$y chän Project/ New /Pic Winzard . Sau khi ®¸nh
tªn file muèn ®Æt mét cöa sæ sÏ hiÖn ra nh− sau:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com
T¹i môc Device b¹n chän tªn Pic ®ang dïng
T¹i môc oscilator Frequency b¹n chän tÇn sè giao ®éng cña th¹ch anh
Sau ®ã Ên ok ®Ó hon tÊt
Sau khi hon tÊt viÖc lËp tr×nh b¹n Ên F9 ®Ó ch−¬ng tr×nh dÞch sang file HEX
Víi file Hex ®−îc t¹o ra b¹n cã thÓ n¹p ®−îc cho vi ®iÒu khiÓn
CuuDuongThanCong.com https://fb.com/tailieudientucntt
cuu duong than cong . com