You are on page 1of 33

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

1/32

TUT01.01.PVN
Gi n:

www.picvietnam.com

Ni dung:

Lp trnh cho PIC bng CCS ver3.242


MICROSOFT WORD

Tm tt:
Ti liu hng dn s dng trnh bin dch CCS cho lp trnh PIC. Tm hiu tng quan v CCS
v cch to mt Project trong CCS.
Chng trnh mu cho PIC16F877
Cc v d lp trnh n gin: qut LED, ADC, RS232

1.

Tng quan v CCS

1.1.

V sao ta s dung CCS ?

S ra i ca mt loi vi iu khin i km vi vic pht trin phn mm ng dng cho


vic lp trnh cho con vi iu khin . Vi iu khin ch hiu v lm vic vi hai con s 0
v 1. Ban u vic lp trnh cho VK l lm vic vi dy cc con s 0 v 1. Sau ny khi
kin trc ca Vi iu khin ngy cng phc tp, s lung thanh ghi lnh nhiu ln, vic lp
trnh vi dy cc s 0 v 1 khng cn ph hp na, i hi ra i mt ngn ng mi thay
th. V ngn ng lp trnh Assembly. y ta khng ni nhiu n Assmebly. Sau ny khi
ngn ng C ra i, nhu cu dng ngn ng C thay cho ASM trong vic m t cc lnh
lp trnh cho Vi iu khin mt cch ngn gn v d hiu hn dn n s ra i ca
nhiu chng trnh son tho v bin dch C cho Vi iu khin : Keil C, HTPIC, MikroC,
CCS
Ti chn CCS cho bi gii thiu ny v CCS l mt cng c lp trnh C mnh cho Vi
iu khin PIC. Nhng u v nhc im ca CCS s c cp n trong cc phn
di y.

1.2.

Gii thiu v CCS ?

CCS l trnh bin dch lp trnh ngn ng C cho Vi iu khin PIC ca hng Microchip.
Chng trnh l s tch hp ca 3 trnh bin dich ring bit cho 3 dng PIC khc nhau
l:
PCB cho dng PIC 12bit opcodes
PCM cho dng PIC 14bit opcodes
PCH cho dng PIC 16 v 18bit
Tt c 3 trnh bin dich ny uc tch hp li vo trong mt chng trnh bao gm c
trnh son tho v bin dch l CCS, phin bn mi nht l PCWH Compiler Ver 3.227

Ging nh nhiu trnh bin dich C khc cho PIC, CCS gip cho ngi s dng nm bt
nhanh c vi iu khin PIC v s dng PIC trong cc d n. Cc chng trnh diu
khin s c thc hin nhanh chng v t hiu qu cao thng qua vic s dng ngn
ng lp trnh cp cao Ngn ng C
Ti liu hng dn s dng c rt nhiu, nhng chi tit nht chnh l bn Help i km
theo phn mm (ti liu Ting Anh). Trong bn tr gip nh sn xut m t rt nhiu v
hng, bin, ch th tin xa l, cu trc cc cu lnh trong chng trnh, cc hm to sn cho
ngi s dng Ngoi ra v Ting Vit cng c bn dch ca tc gi Trn Xun Trng,
SV K2001 DH BK HCM. Ti liu ny dch trn c s bn Help ca CCS, tuy rng cha y
nhng y l mt ti liu hay, nu bn tm hiu v PIC v CCS th nn tm ti liu ny
v c. a ch Download ti liu: www.picvietnam.com > Mc ni v CCS.

2.

To PROJECT u tin trong CCS


to mt Project trong CCS c nhiu cch, c th dng Project Wizard, Manual Creat,
hay n gin l to mt Files mi v thm vo cc khai bo ban u cn thit v bt
buc.
Di y s trnh by cch to mt project hp l theo c 3 phng php. Mt iu ta
cn ch khi to mt Project l: khi to bt c mt Project no mi th ta nn to mt
th mc mi vi tn lin quan n Project ta nh lm, ri lu cc files vo . Khi lp
trnh v bin dch, CCS s to ra rt nhiu files khc nhau, do nu chung cc Project
trogn mt th mc s rt mt thi gian trong vic tm kim sau ny. y cng l quy tc
chung khi ta lm vic vi bt k phn mm no, thit k mch hay lp trnh.
Vic u tin bn cn lm l khi ng my tnh v bt chng trnh PIC C Compiler.

2.1.

To mt PROJECT s dng PIC Wizard

Trc ht bn khi ng chng trnh lm vic PIC C Compiler. T giao din chng
trnh bn di chut chn Project > New > PIC Wizard nhn nt tri chut chn.

Sau khi nhn chut, mt ca s hin ra yu cu ban nhp tn Files cn to. Bn to mt


th mc mi, vo th mc v lu tn files cn to ti y.

Hnh2.0: Ca s Save As
Nh vy l xong bc u tin. Sau khi nhn nt Save, mt ca s New Project hin ra.
Trong ca s ny bao gm rt nhiu Tab, mi Tab m t v mt vi tnh nng ca con PIC.
Ta s chn tnh nng s dng ti cc Tab tng ng.
Di y s trnh by ngha tng mc chn trong mi Tab. Cc mc chn ny chnh
l cp n cc tnh nng ca mt con PIC, ty theo tng loi m s c cc Tab tng ng.
i vi tng d n khc nhau, khi ta cn s dng tnh nng no ca con PIC th ta s chn
mc . Tng cng c 13 Tab ta la chn. Ti gii thiu nhng Tab chnh thng hay
c s dng.

2.1.1.

Tab General

Tab General cho php ta la chn loi PIC m ta s dng v mt s la chn


khc nh chn tn s thch anh dao ng, thit lp cc bit CONFIG nhm thit lp
ch hot ng cho PIC.

Hnh 2.1: Tab General

2.1.2.

Device: Lit k danh sch cc loi PIC 12F, 16F, 18F Ta s chn tn Vi iu khin
PIC m ta s dng trong d n. Ly v d chn PIC16F877A
Oscilator Frequency: Tn s thch anh ta s dng, chn 20 MHz (ty tng loi)
Fuses: Thit lp cc bit Config nh: Ch dao ng (HS, RC, Internal ), ch bo
v Code, Brownout detected
Chn kiu con tr RAM l 16bit hay 8bit

Tab Communications

Tab Communications lit k cc giao tip ni tip m mt con PIC h tr, thng l
RS232 v I2C, cng vi cc la chn thit lp ch hot ng cho tng loi giao tip.
Giao tip RS232

Mi mt Vi iu khin PIC h tr mt cng truyn thng RS232 chun. Tab ny


cho php ta la chn chn Rx, Tx, tc Baud, Data bit, Bit Parity
Giao tip I2C
s dng I2C ta tch vo nt chn Use I2C, khi ta c cc la chn: Chn
SDA, SCL, Tc truyn (Fast Slow), ch Master hay Slave, a ch cho Salve.

Hnh 2.2: Tab Communications

2.1.3.

Tab SPI and LCD

Tab ny lit k cho ngi dng cc la chn i vi giao tip ni tip SPI, chun
giao tip tc cao m PIC h tr v phn cng. Ch khi ta dng I2C th khng
th dng SPI v ngc li. c th s dng c hai giao tip ny cng mt lc th
buc mt trong 2 giao tip phi lp trnh bng phn mm (ging nh khi dng I2C
cho cc chip AT8051, khng c h tr phn cng SSP).
Phn cu hnh cho LCD dnh cho cc chp dng 18F v 30F.

Hnh 2.3: Tab SPI and LCD

2.1.4.

Tab Timer

Lit k cc b m/nh thi m cc con PIC dng Midrange c: Timer0, timer1,


timer2, WDT

Trong cc la chn cu hnh cho cc b m /nh thi c: chn ngun xung


ng h (trong/ngoi), khong thi gian xy ra trn

Hnh 2.4: Tab Timer

2.1.5.
Tab Analog
Lit k cc la chn cho b chuyn i tng t/s (ADC) ca PIC. Ty vo
tng IC c th m c cc la chn khc nhau, bao gm:
La chn cng vo tng t
Chn chn in p ly mu (Vref)
Chn phn gii: 8bit = 0 ~ 255 hay 10bit = 0~1023
Ngun xung ng h cho b ADC (trong hay ngoi), t m ta c c tc
ly mu, thng ta chn l internal 26 us.
Khi khng s dng b ADC ta chn none

Hnh 2.5: Tab Analog

2.1.6.

Tab Other

Tab ny cho php ta thit lp cc thng s cho cc b Capture/Comparator/PWM.


Capture Bt gi

Chn bt gi xung theo sn dng (rising edge) hay sn m (falling edge) ca


xung vo
Chn bt gi sau 1, 4 hay 16 xung (copy gi tr ca TimerX vo thanh ghi lu tr
CCCPx sau 1, 4 hay 16 xung).

Compare So snh

Ta c cc la chn thc hin lnh khi xay ra bng nhau gia 2 i tng so snh l
gi tr ca Timer1 vi gi tr lu trong thanh ghi so snh. Bao gm:
o Thc hin ngt v thit lp mc 0
o Thc hin ngt v thit lp mc 1
o Thc hin ngt nhng khng thay i trng thi ca chn PIC.
o a Timer1 v 0 nhng khng thay i trng thi chn.

PWM iu ch rng xung

La chn v tn s xung ra v duty cycle. Ta c th la chn sn hay t chn tn s,


tt nhin tn s ra phi nm trong mt khong nht nh.

Comparator So snh in p

La chn mc in p so snh Vref. C rt nhiu mc in p ta la chn. Ngoi


ra ta cn c th la chn cho u vo ca cc b so snh.

Hnh 2.6: Tab Other

2.1.7.

Tab Interrupts v Tab Driver

Tab Interrupts cho php ta la chn ngun ngt m ta mun s dng. Ty vo tng
loi PIC m s lng ngun ngt khc nhau, bao gm: ngt ngoi 0(INT0), ngt RS232,
ngt Timer, ngt I2CSPI, ngt onchange PORTB.v.v
Tab Drivers c dng la chn nhng ngoi vi m trnh dch h tr cc hm
giao tip. y l nhng ngoi vi m ta s kt ni vi PIC, trong cc IC m CCS h tr, ng
ch l cc loi EEPROM nh 2404, 2416, 2432, 9346, 9356Ngoi ra cn c IC RAM
PCF8570, IC thi gian thc DS1302, Keypad 3x4, LCD, ADC Chi tit ta c th xem trong
th mc Driver ca chng trnh: \...\PICC\Drivers

Hnh 2.7: Tab Interrupts

Hnh 2.8: Tab Driver


Sau cc bc chn trn, ta nhn OK kt thc qu trnh to mt Project trong CCS,
mt Files ten_project.c c to ra, cha nhng khai bo cn thit cho PIC trong mt Files
ten_project.h. Di y l ni dung mt files chng trnh mu.

Chuong_trinh_mau.c
#include D:\1PIC project\chuong trinh test.HEX.h
#int_EXT
EXT_isr()
{
// Code here
}
Void Chuong_trinh_con()
{
// Code here
}
void main()
{
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_EXT);
enable_interrupts(INT_TBE);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
// Enter your code here
}

Chuong_trinh_mau.h
#include <16F877A.h>
#device adc=8
#FUSES NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,
#use delay(clock=20000000)
#define SRAM_SCL PIN_C3
#define SRAM_SDA PIN_C4
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)

2.2.

Mu chng trnh chun cho lp trnh CCS

Phn trn ta tm hiu cch to mt Project trong CCS, tuy nhin theo cch mt
kh nhiu thi gian, mt khc mi ngi lp trnh s to ra nhng form ti liu theo cch
ring khc nhau, khng ng nht. Ti liu khng c chun ha s gy mt s kh khn
cho ngi c, ngi c c th khng hiu ht nhng g m ngi lp trnh mun din t.
Vi mc ch a ra mt form ti liu chun cho vic lp trnh bng CCS, qua tham kho
bn mu cho lp trnh bng ASM ca anh Falleaf trn din n WWW.PICVIETNAM.COM
ti a ra y mt form ti liu cho vic vit lp trnh bng CCS. i km vn bn ny cn c
cc files ngun cho vn bn mu, bao gm files cho PIC16F877A, 16F876A, 16F88. V sau khi
lp trnh bn ch vic copy ti liu ny vo th mc cha Project ca bn, sa i tn files.
Khi cn thay i ni dung cu hnh cho PIC bn chi vic tham kho qua PIC Wizard , xem
code v copy a vo Project.
M t ni dung chng trnh.

#include 16f877a.h : i km chng trnh dch, cha khai bo v cc thanh ghi trong
mi con PIC, dng cho vic cu hnh cho PIC.
#include def_877a.h: Files do ngi lp trnh to ra, cha khai bo v cc thanh ghi
trong PIC gip cho vic lp trnh c d dang hn v d ta co th gn PORTB =
0xAA (chi tit files ny s trnh by trong phn di y)
#device *=16 ADC = 10: Khai bo dng con tr 8 hay 16 bit, b ADC l 8 hay 10 bit
#FUSES NOWDT, HS: Khai bo v cu hnh cho PIC
#use delay(clock=20000000): Tn s thch anh s dng
#use rs232 (baud=9600,): Khai bo cho giao tip ni tip RS232
#use i2c(master, SDA=PIN_C4,): Khai bo dng I2C, ch hot ng
#include <tn_file.c>:Khai bo cc files th vin c s dng v d LCD_lib_4bit.c
#INT_xxx : Khai bo a ch chng trnh phc v ngt
Void tn_chng_trnh (tn_bin) {}: Chng trnh chnh hay chng trnh con

Chng trnh mu cho PIC16F877A


//================================================= =======
// Ten chuong trinh : Mach test den LED_1
// Nguoi thuc hien : Falleaf
// Ngay thuc hien
: 23/05/2005
// Phien ban : 1.0
// Mo ta phan cung : Dung PIC16F877A thach anh 20MHz
//
: LED giao tiep voi PORTB
//
: Cuc am cua LED noi voi GND
//
: RB0 RB7 la cac chan output
//
// Ngay hoan thanh : 23/05/2005
// Ngay kiem tra
: 23/05/2005
// Nguoi kiem tra
: Doan Hiep
//
// Chu thich : Mo ta cac diem khac nhau cua cac phien ban khac nhau
//
: hoac cac chu thich khac
//
: vd, dung che do Power On Reset, PORTB = 00000000
//
: hoac, chuong trinh viet cho PIC Tutorial
//
: hoac, chuong trinh nay hoan toan mien phi va co the dung cho
//
: moi muc dich khac nhau
//================================================= =======
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP

#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9)
#use i2c(Master,Fast,sda=PIN_B1,scl=PIN_B4)
#int_xxx
// Khai bao chuong trinh ngat
xxx_isr() {
// Code here
}
void Ten_chuong_trinh_con(Ten_Bien) {
// Code here
}
void main() {
// Enter code here!
}

Chng trnh mu cho PIC16F876A


//================================================= =======
// Ten chuong trinh : Mach test den LED_1
// Nguoi thuc hien : Falleaf
// Ngay thuc hien
: 23/05/2005
// Phien ban : 1.0
// Mo ta phan cung : Dung PIC16F876A thach anh 20MHz
//
: LED giao tiep voi PORTB
//
: Cuc am cua LED noi voi GND
//
: RB0 RB7 la cac chan output
//
// Ngay hoan thanh : 23/05/2005
// Ngay kiem tra
: 23/05/2005
// Nguoi kiem tra
: Doan Hiep
//
// Chu thich : Mo ta cac diem khac nhau cua cac phien ban khac nhau
//
: hoac cac chu thich khac
//
: vd, dung che do Power On Reset, PORTB = 00000000
//
: hoac, chuong trinh viet cho PIC Tutorial
//
: hoac, chuong trinh nay hoan toan mien phi va co the dung cho
//
: moi muc dich khac nhau
//================================================= =======
#include <16f876a.h>
#include <def_876a.h>
#device *=16 ADC=8

#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD,


NOWRT

#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9)
#use i2c(Master,Fast,sda=PIN_B1,scl=PIN_B4)
#int_xxx
// Khai bao chuong trinh ngat
xxx_isr() {
// Code here
}
void Ten_chuong_trinh_con(Ten_Bien) {
// Code here
}
void main() {
// Enter code here!
}

Chng trnh mu cho PIC16F88


//================================================= =======A
// Ten chuong trinh : Mach test den LED_1
// Nguoi thuc hien : Falleaf
// Ngay thuc hien
: 23/05/2005
// Phien ban : 1.0
// Mo ta phan cung : Dung PIC16F88 thach anh 20MHz
//
: LED giao tiep voi PORTB
//
: Cuc am cua LED noi voi GND
//
: RB0 RB7 la cac chan output
//
// Ngay hoan thanh : 23/05/2005
// Ngay kiem tra
: 23/05/2005
// Nguoi kiem tra
: Doan Hiep
//
// Chu thich : Mo ta cac diem khac nhau cua cac phien ban khac nhau
//
: hoac cac chu thich khac
//
: vd, dung che do Power On Reset, PORTB = 00000000
//
: hoac, chuong trinh viet cho PIC Tutorial
//
: hoac, chuong trinh nay hoan toan mien phi va co the dung cho
//
: moi muc dich khac nhau
//================================================= =======
#include <16f88.h>
#include <def_88.h>
#device *=16 ADC=8

#FUSES NOWDT, HS, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG

#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9)
#use i2c(Master,Fast,sda=PIN_B1,scl=PIN_B4)
#int_xxx
// Khai bao chuong trinh ngat
xxx_isr() {
// Code here
}
void Ten_chuong_trinh_con(Bien) {

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

14/32

3.

Mt s v d cho lp trnh CCS


Vi mc tiu gip ngi c nhanh chng lm bt c cch lp trnh C cho PIC thng
qua chng trnh dch CCS. Di y ti gii thiu mt vi bi lp trnh n gin cho PIC,
cc bi mu ny da theo ti liu tutorial ca Nigel nh qut LED, LED 7 thanh, LCD, bn
phm, cch dng cc giao tip ca PIC giao tip vi thit b ngoi vi nh Real Time IC,
ADC, EEPROM

Yu cu v phn cng ti thiu cn c thc hnh:

PIC16F877A ( hoc 16F876A hay 16F88) = 50K (Tt nht l PIC16F877A)


1 Board cm linh kin (ti thiu ) = 40K
Thch anh 20MHz, t 22pF, 10uF, tr 10K, 4K7, 330, nt bm = 10K
10 LED n xanh hay , 4 LED 7 thanh (loi 4 LED lin mt ) = 15K
MAX232 giao tip my tnh () = 10K
Tng cng l: 125K

Phn cng m rng

LCD 1602A loi 2 dng 16 k t (Nu c LCD 2002 cng tt) = 65K (Minh H c bn)
Real Time IC DS1307 hay DS1337 = 25K (c th xin sample ca MaximIC)
EEPROM AT24Cxx
ADC/DAC IC loi 12bit tr nn (ADC 10bit th PIC cng c)
Sensor nhit LM335 hay LM35 = 13K
ng c bc, ng c mt chiu

Mc ch chnh ca ti trong vic gii thiu cc v d di y l nhm gip mi ngi


nhanh chng nm c k thut lp trnh bng CCS, thng qua cc v d mi ngi s
hiu cc hm ca CCS, cch s dng trong tng ng dng c th. V chi tit ca mi hm
ti s khng trnh by k ti y, bit r ta c th xem trong phn Tr gip ca CCS hay
ti liu ca tc gi Trn Xun Trng, trong ni kh y . Ti nhn mnh mt
iu khi mi ngi tm hiu v PIC v CCS l hy t mnh tm hiu l chnh, t vic
nghin cu ti liu, tm ti liu cho n thit k mch v vit chng trnh. Nhng g ti
y ch l c bn, cn vic pht trin, s dng ht im mnh ca PIC v CCS l pha mi
ngi. Chc thnh cng!
Mt iu ch l tt c cc mch in v code ti trnh by di y ti u lp
mch tht trn bo cm v chy tt.

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

15/32

3.1.

Chng trnh nhp nhy LED

Nhp nhy LED c th coi l mt chng trnh Kinh in. Mi ngi khi bt tay vo
hc VK th bi hc u tin l lm nhp nhy mt hay vi con LED trn chn VK. Trong
ti liu ny ti cng chn bi tp bt u. Bn thn ti cng vy, bi hc u tin l
nhy LED v qut LED 7 thanh
Mc ch ca bi nh trn ni: Lm nhp nhy 8 LED ti PORTB ca PIC 16F877A,
thi gian tr do ngi lp trnh nh trc.
Nhng iu thu c qua bi hc:
V mt mch in t hon chnh dng OrCad 9.2
To mt D n trong CCS (ci ny ni trong phn 2)
Tp nh ngha cc thanh ghi ca PIC do ngi dng to ra
Thit lp ch vo ra cho mt cng ca PIC
S dng hm to tr thi gian
Di y l s phn cng. Trong s cc LED c mc chung ln dng ngun
thng qua in tr. Gia tr in tr thay i trong khong 100 cho n 560 ty theo
sng ca LED m ta mun v cng m bo dng qua mi LED khng qu 20mA khi
ngun cp l 5V. Nh vy lm sng LED ta ch vic a mc 0 ra cc chn PIC v ngc
li tt ta a mc 1.
VCC

R1

D1

R2

D2

R3

LDE
3D
LDE
4D
LDE
5D
DLE

R4
R
R
R7
R8
R
220

RB0
RB1
RB2
RB3
RB4
RB5

DLE
LD
7
DE

RB7

RB6
RB7

8D
LED

OSC1
OSC2
RESET

10K
Cong tac

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

2
3
4

RA0/AN0
RA1/AN1

5
6
7

RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT

RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT

15
16
17
18
23
24
25
26

RD0/PSP0
RD1/PSP1

19
20
21

RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7

22
27
28
29
30

LED

R9
VCC

33
34
35
36
37
38
39
40

OSC1
Y1

OSC2

RESET

13
14
1
12
31

20MHz
C1
22p

OSC1/CLKI
OSC2/CLKO
MCLR/VPP

RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7

VSS
VSS

C2
22p

Hnh 3.1. S mch nhy 8 LED ti PORTB

VDD
VDD

8
9
10
11
32

VCC

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

16/32

VDD

VCC
LM7805C/TO220
U3
1
3
IN
OUT
C4
100uF/50V

C3
4.7uF/25V

R11
R

D9
LED

Hnh 3.2. S mach ngun cho PIC


M ngun chng trnh np vo PIC
//================================================= =======
// Ten chuong trinh : Mach nhay den LED
// Nguoi thuc hien : linhnc308
// Ngay thuc hien : 13/03/2006
// Phien ban : 1.0
// Mo ta phan cung : Dung PIC16F877A thach anh 20MHz
//
: LED giao tiep voi PORTB
//
: Cuc am cua LED noi voi PORTB
//
: RB0 RB7 la cac chan output
//
// Ngay hoan thanh : 13/06/2006
// Ngay kiem tra
: 13/06/2006
// Nguoi kiem tra : linhnc308
//
// Chu thich : dung che do Power On Reset, PORTB = 00000000
//
: chuong trinh viet cho PIC Tutorial
//
: chuong trinh nay hoan toan mien phi va co the dung cho
//
: moi muc dich khac nhau
//================================================= =======
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
void main()

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

17/32

{
// Thiet lap che do cho PORTB
TRISB = 0x00;
// Tat ca PORTB deu la cong xuat du lieu
PORTB = 0xFF;
// Tat het cac LED
While(1)
{
PORTB = 0; // Cho cc LED sng
delay_ms(250);
// To thi gian tr 250ms
PORTB = 0xFF;
delay_ms(250);
}
}
Qua v d n gin trn bn hiu cch xut d liu ra mt cng ca PIC v dng cc
hm to tr.
Th tc thit lp vo ra cho mt cng hay mt chn ca PIC
Ghi gi tr vo thanh ghi iu khin ch ca cng tng ng l TRISx
o Bit 0 ng vi chn xut d liu
o Bit 1 ng vi nhn d liu
o Thanh ghi TRISx c th cu hnh theo tng bit
Khi mun xut d liu, v d ra PORTB, cu lnh l: PORTB = gia_tri;
Khi mun nhn d liu t PORTB, cu lnh l: data_in = PORTB;
V cc hm to tr, trong CCS h tr sn 3 loi hm to tr l:
delay_cycles(gia_tri): gia_tri l thi gian tr tnh theo s chu k my
delay_us(gia_tri): To tr Micro giy
delay_ms(gia_tr): To tr Mili giy
Bn cht ca cc hm to tr l a Vi iu khin vo mt vng lp chng lm g c cho
s thi gian m ta cn. Ngoi vic dng hm to tr c sn ta c th t vit hm to tr
dng b Timer

3.2.

B ADC trong PIC v ng dng

B chuyn i t tng t sang s l mt khi mch in t quan trng, c mt trong


rt nhiu thit k in t. Cc b ADC thc t c ng gi trong nhng IC chuyn dng,
do nhiu hng sn xut. im quan trong cn lu cc b ADC ny l phn gii v
tc ly mu tn hiu. phn gii ca b ADC c th l 8bt, 10bt, 12bt, 16bt, 24
bt Tc ly mu ca ADC c th nhanh hay chm, ty tng ng dng m ta chn tc
thch hp.
Vi iu khin PIC l mt trong nhng dng Vi iu khin c phn giao tip ngoi vi
mnh v a dng. Bn trong PIC c tch hp sn mt b ADC c phn gii ti a

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

18/32

l 10bt (ty chon l 8bit hay 10bit). Vi b ADC trong PIC ta c th lm c kh nhiu
cng vic, di y ti trnh by mt ng dng ca b ADC trong vic thit k mch o
nhit s dng sensor nhit LM335.
Di y l phn code mch o nhit d, hin th trn LCD.

//================================================= =======
// Ten chuong trinh
: Mach do nhiet do
// Nguoi thuc hien: linhnc308
// Ngay thuc hien : 28/03/2006
// Phien ban: 1.0
// Mo ta phan cung
: Dung PIC16F877A thach anh 20MHz
//
: LCD giao tiep voi PORTD
//
: Dau ra LM335 dua vao chan AN0
//
// Ngay hoan thanh
: 28/03/2006
// Ngay kiem tra : 28/03/2006
// Nguoi kiem tra : Linhnc308
//
// Chu thich : hoac cac chu thich khac
//
: dung che do Power On Reset
//
: chuong trinh viet cho PIC Tutorial
//================================================= =======
#include <16F877A.h>
#include <def_877a.h>
#device *=16 adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)
#include <lcd_lib_4bit.c>
// Thu vien ham cho LCD
int8 low,high,key,mode,min,max,mode1,i;
int1 do_F;
void convert_bcd(int8 x);
void bao_dong();
void test();
//
void main()
{

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

19/32

float value;
on_off =1;
min =15; //nhiet do min default
max =35; //nhiet do max default
do_F =0 ; i
= 50 ; mode
=0 ; mode1
=0;
trisa = 0xFF;
trisb = 0x01;
trisd = 0x00;
LCD_init();
Printf(LCD_putchar,Lop DT8
BKHN); LCD_putcmd(0xC0);
Printf(LCD_putchar,Khoi tao...);
// Khoi tao cho ngat ngoai
enable_interrupts (INT_EXT);
ext_int_edge(H_TO_L);
enable_interrupts (GLOBAL);
// Khoi tao che do cho bo ADC
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
delay_us(10);
// Lay mau nhiet do lan dau tien
value=(float)read_adc();
value = (value 558.5)/2.048;
// For 5V supply
// value = (value 754.8)/2.048; // For 3.7V Supply
// value = (value 698.2)/2.048; // For 4V supply
convert_bcd((int8)value); // Tach so tram, chuc, donvi de hien thi len LED 7
delay_ms(1000);
LCD_putcmd(0xC0);
Printf(LCD_putchar,Khoi tao
xong); while(1)
{
if (i==50)
{
value = read_adc();

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

20/32

value=(value558.5)/2.048;
if (do_F==1) value=1.8*value+32;
convert_bcd((int8)value);
printf(\n\rNhiet do phong: %u,value);// Gui gia tri len may tinh
LCD_putcmd(0xC0);
printf(LCD_putchar, Temp = );
LCD_putchar(high); LCD_putchar(low);
if (do_F==0) printf(LCD_putchar, C);
else printf(LCD_putchar, F);
i=0;

}
i++;
if(((int8)value > 40) || ((int8)value < 15)) on_off=1;
else
{
on_off = 0;
LCD_Putcmd(0xCF);
LCD_putchar( );
blink=0;
}
if (on_off==1)
{
if (blink==0) { LCD_Putcmd(0xCF);LCD_putchar(!
);blink=1;delay_ms(250);}
else
{LCD_Putcmd(0xCF);LCD_putchar( );blink=0;delay_ms(250);}
}
}
}//end main
#INT_EXT
void test()
{
if (do_F == 1) do_F=0;
else
do_F=1;
}
void convert_bcd(int8 x)
{
low=x%10; //chia lay phan du, so hang don vi

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

21/32

high=x/10; //tach hang tram va hang chuc


low = low + 0x30;
high = high + 0x30;
}
void bao_dong(){
int8 i;
if (blink == 0) blink = 1;
else
blink=0;
for(i=0;i<50;i++)
{
LCD_Putcmd(0xCF);
if (blink==0) LCD_putchar(!);
else
LCD_putchar( );
}
}
Di y l mt s dng PIC v LM335 o nhit , hin th trn LCD v trn
LED 7. Trong chng trnh bn thy c hm chuyn i nhit t a tr K v C.
Nguyn nhn c hm l do con LM335 thay i 10mV/K, ta cn hin th l C. Nhn
thy 0oC = 273K, nh vy ti 0oC con LM335 s xut ra mt in p l 2.73V v vi in p
2.73 *1023
= 558.558 . Nh vy khi tnh ton gi tr
ny, ADC trong PIC s cho gi tr s l
5
nhit ta cn tr i gi tr 558.558 ny. Cng thc y l:
adc _ value 558.558
Do _ C =
2.048
Gi tr 2.048 c l do ta dng ADC 10bit, in p ly mu l 5V, nh vy mi mc
5V
= 4.883mV . LM335 thay di 10mV/K do ng vi s thay
lng t s tng ng vi
1024
i 1 C s thay i 2.048 mc lng t (10mV/4.883mV = 2.048). Cng thc trn l cho
ADC 10bit, vi cc b ADC 8bit hay 12bit vic tnh ton chuyn i gi tr cng tng t.

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

22/32

U13

VCC

56
R/W RS VEE VCC VSSE

LCD_1602A

21
22
23
24
25
26
27
28
29
30

33pF
Crystal

13
14
15
16
17
18
19
20

33pF

RD2/PSP2
RB7/PGD
RD3/PSP3
RB6/PGC
RC4/SDI/SDA
RB5
RC5/SDO
RB4
RC6/TX/CK RB3/PGM
RC7/RX/DT
RB2
RD4/PSP4
RB1
RD5/PSP5
RB0/INT
RD6/PSP6
RD7/PSP7
RA2/AN2
RA3/AN3
RA4
RA5/AN4
OSC1/CLKI RE0/AN5
OSC2/CLKO RE1/AN6
RC0/T1CKI RE2/AN7
RC1/CCP2
RC2/CCP1
RC3/SCK/SCL
VDD1
RD0/PSP0
VSS1
RD1/PSP1

40
39
38
37
36
35
34
33
4
5
6
7
8
9
10

Q3
4K7
SPEAKER
HI

32
31
2

D6D7
1314

HI

12

VDD
VSS

RA1/AN1
RA0/AN0
VPP

3
10K

LM335Z
1K

HI

HI

Hnh 3.3. Mch o nhit LM335 hin th trn LCD1602

11

3
2
1

HI

1516

KA

LCD - 16x2 - DM1602A

VR10K

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

23/32

DOT

4
a

HI

33pF
Crystal

13
15
16
17
18

33pF
4K7
4K7

19
20

RD2/PSP2
RB7/PGD
RD3/PSP3
RB6/PGC
RC4/SDI/SDA
RB5
RC5/SDO
RB4
RC6/TX/CK RB3/PGM
RC7/RX/DT
RB2
RD4/PSP4
RB1
RD5/PSP5
RB0/INT
RD6/PSP6
RD7/PSP7
RA2/AN2
RA3/AN3
RA4
RA5/AN4
OSC2/CLKO RE1/AN6
RC0/T1CKI RE2/AN7
RC1/CCP2
RC2/CCP1
RC3/SCK/SCL
RD0/PSP0
RD1/PSP1

VDD1
VSS1

40
39
38
37
36
35
34
33
4
5
6
7
8

Q3
4K7
SPEAKER

10
HI

32
31
2

3
VCC
Vcc

c
7

21
22
23
24
25
26
27
28
29
30

Q2

HI

11

VDD
VSS

3
2
1

3
10K

VR10K

LM335Z
1K

HI

HI

HI

12

RA1/AN1
RA0/AN0
VPP

Q1

2
f
d
9

1
g
e

5
b
DOT
6

10

4
a
c
7

3
VCC
Vcc
8

2
f
d

g
e
10

Ngi bo co:

Hnh 3.4. Mch o nhit hin thi trn LED 7 thanh


Trong mch trn ta dng chnh con PIC cho vic gii m LED 7 thanh. Nguyn tc qut
cho tng LED 7 thanh l gi gi tr cn hin th > bt LED > To thi gian tr > tt LED.
Qu trnh c lp li nh vy cho n khi qut ht LED. Ta tnh ton thi gian tr sao cho
m bo cc s hin th lin tc.

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

24/32

3.3.

Giao tip my tnh RS232

Vic giao tip gia Vi iu khin v my tnh l bi lp trnh kh quan trng khi ta lm
vic vi cc dng Vi iu khin khc nhau. Vi Vi iu khin PIC cng vy, trong mi IC
PIC u c tch hp mt khi giao tip my tnh USART. Ta s dng khi giao tip ny
truyn d liu ln my tnh v x l d liu ty vo mc ch ca ngi lp trnh.
nhn d liu do Vi iu khin truyn ln my tnh ta c th s dng cc phn mm giao
tip COM c sn hay vit mt chng trnh mi, s dng cc ngn ng lp trnh nh C++,
VB hay Delphi Trong chng trnh v d di y ti s dng cng c sn c ca CCS l
Serial Port Monitor truyn v nhn d liu t PIC.
S mch in ORCAD. Mch s dng IC MAX232 kt ni n cng COM ca
my tnh. Mch n gin ch nhm mc ch gii thiu khi giao tip my tnh ca PIC v
cch lp trnh cho n trong CCS.

56
E R/W RS VEE VCC VSS

D6D7

LCD_1602A

1314

1516
KA

LCD - 16x2 - DM1602A

D4
D5
D6
D7

U14
13
8

TX_PIC
C9 1uF
1uF C8
VCC
C10
C7

11
10
1
3
4
5
2
6

R1IN
R2IN

R 1OU T
R2OUT

T1IN
T2IN

T1OU T
T2OUT

C1+
C1C2+
C2V+
V-

12
9

VCC

RW

RX_PIC
RX_PC

21
22
23

TX_PIC

24
25

RX_PIC
D4
D5
D6
D7

14
7
33pF

26
27
28
29
30

20MHz
13
14
15
16
17
18
19
20

1uF
MAX232

RS
E

33pF

1uF

RD2/PSP2
RD3/PSP3

RB7/PGD
RB6/PGC

RC4/SDI/SDA
RC5/SDO

RB5
RB4

RC6/TX/CK RB3/PGM
RC7/RX/DT
RB2
RD4/PSP4
RB1
RB0/INT
RD5/PSP5
RD6/PSP6
RD7/PSP7
RA2/AN2
RA3/AN3
RA4
RA5/AN4
OSC1/CLKI RE0/AN5
OSC2/CLKO RE1/AN6
RC0/T1CKI RE2/AN7
RC1/CCP2
RC2/CCP1
RC3/SCK/SCL
VDD1
RD0/PSP0
VSS1
RD1/PSP1

40
39
38
37
36
35
34
33
4
5
6
7
8
9
10

32
31
HI

11

HI

12

VDD

RA1/AN1
RA0/AN0
VPP

VSS

Hnh 3.5. Mch giao tip my tnh, hin th LCD

3
2
1

10K
HI

TX_PC

RW
RS

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

25/32

M ngun chng trnh:


#include <16f877a.h>
#include <def_877a.h>
#use delay(clock=20000000)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP, NOCPD, NOWRT
// Khai bo s dng giao tip ni tip RS232
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)
#include <lcd_lib_4bit.c>
int8 count=0;
char string_in[16];
#INT_RDA
// Hm x l ngt ni tip
Receive_isr() {
char c;
int8 i;
count+
+;
c = getc();
putc(c);
if (c==c | c==C)
{
LCD_putcmd(0x01); //Clear Screen
c=c;
count=0;
}
if ((count<=16) && (c!=c)) LCD_putchar(c);
if (count > 16)
{
count=0;
LCD_putcmd(0xC0);
}
}
void main()
{

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

26/32

enable_interrupts(int_rda);
enable_interrupts(GLOBAL);
lcd_init(); // Khi to cho LCD
lcd_putcmd(0x01);
lcd_putcmd(line_1);
printf(Enter a String.);
printf(Or anything you want!);
while (1) {}
}

M t chng trnh: Trn y l chng trnh giao tip vi my tnh, ta thy trong CCS
s dng giao tip ni tip ta ch cn khai bo #use rs232(). Cc hm giao tip vi my tnh m
CCS h tr l:

putc(char ky_tu) : Gi mt k t ASCII ln my tnh


getc() : Hm tr v mt k t nhn c t my tnh

printf(string): hm gi mt chui k t ln my tnh

Trong chng trnh ta c s dng hm x l ngt ni tip x l k t nhn c t my


tnh. Khi c ngt xy ra, ta gi hm getc() s tr v k t va nhn c. Trn mn hnh LCD
s hin th k t m ta g t bn phm my tnh.

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

27/32

3.4.

Ngt ca PIC v cch s dng

Trong Vi iu khin PIC c nhiu ngun ngt. bit c th ta c th vo mc


View >> Valid Interrupts . Khi mt ca s s hin ra lit k y cc ngun
ngt ca tng con PIC.

Hnh 3.6 Cc ngun ngt trong PIC


vit mt hm phc v ngt ta ch vic thm khai bo #INT_tn_ngt vo
trc hm phc v cho ngt . Khi trnh dich s hiu l a ch hm cho
ngt, khi c ngt tng ng xy ra th n s nhy n v tr
Ly v d khi ta mun x l ngt ngoi, hm s c vit nh sau:
#INT_EXT
Ext_isr()
{
// Nhp m ti y
}
Di y l chng trnh nhy led theo nhiu kiu khc nhau, s dng 1 phm
bm ni vi chn ngt ngoi RB0 chn kiu nhy. C 8 kiu nhy LED khc nhau,
Khi n kiu nhy th 8, nu ta nhn th s tr v ch ban u. Ban u bin mode = 0

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

28/32

v tt c cc LED u tt Mi khi nhn phm bm, bin mode s tng ln 1 n v. Gi tr


bin mode tng ng vi chng trnh nhy c thc hin. Khi mode = 9 th s c gn
v mode = 0. Cc kiu nhy khc nhau l do ta bt tt cc LED trn cng D theo cc cch
khc nhau. Ly v d khi ta mun cc LED nhy xen k nhau ta ch vic gi ra cng D gi
tr AAh (10101010) v 55h (01010101).

S mch in:

VCC

R10
R

SW1
Phim chon

33
34
35
36
37
38
40
39

R9
RESET
VCC

10K
Cong tac

2
3
4
5
6
7
OSC1
OSC2

OSC1

OSC2

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT

RA0/AN0
RA1/AN1

RD0/PSP0
RD1/PSP1

LED1
LED2
LED3

19 LED1
20 LED2
21 LED3

12
31

D7

R7

DLE

R2260
R5

LED5 LDE

R4

DLE
4D
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT

MCLR/VPP

Y1

R8

LED4 6D

13
14

RESET

D8

5D

OSC1/CLKI
OSC2/CLKO

20MHz
C1
22p

15
16
17
18
23
24
25
26

VSS
VSS

RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
VDD
VDD

22
27
28
29
30

LED4
LED5
LED6
LED7
LED8

LED6 DLE

LED7 3D

LED8

L DE

R1

2D

DLE

8
9
10
11
32

C2
22p

VCC

1D
LED
LED

Hnh 3.7. Nhy LED nhiu ch


Phn m ngun chng trnh:
#include <16F877A.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
int8 mode,i;
byte temp;

VCC

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

29/32

#INT_EXT
EXT_ISR() {
mode+
+;
if (mode==9) mode =
0;
}
// End of INT
void program1();
void program2();
void program3();
void program4();
void program5();
void program6();
void program7();
void program8();
void main() {
trisd = 0x00;
trisb = 0xFF;
portd=0xff;
enable_interrupts(int_EXT);
ext_int_edge(H_TO_L); // Chn ngt theo sn m
enable_interrupts(GLOBAL);
mode = 0;
while (1) {
switch(mode) {
case 1: program1(); break;
case 2: program2(); break;
case 3: program3(); break;
case 4: program4(); break;
case 5: program5(); break;
case 6: program6(); break;
case 7: program7(); break;
case 8: program8(); break;
}
}
}

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

30/32

void program1() {

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

30/32

PortD = 0x00;
delay_ms(250);
Portd = 0xFF;
delay_ms(250);

}
void program2() { // LED sng chy t tri qua phi
temp = 0xFF;
for (i=0;i<=8;i++)
{ portd = temp;
delay_ms(250);
temp >>= 1;
}
}
void program3() { // LED sng chy t phi qua tri
temp = 0xFF;
for (i=0;i<=8;i++)
{ portd = temp;
delay_ms(250);
temp <<= 1;
}
}
void program4() {
portd = 0xAA;
delay_ms(500);
portd = 0x55;
delay_ms(500);
}
void program5() {
Portd = 0x7E; delay_ms(150);
Portd = 0xBD; delay_ms(250);
Portd = 0xDB; delay_ms(150);
Portd = 0xE7; delay_ms(150);
Portd = 0xDB; delay_ms(150);
Portd = 0xBD; delay_ms(150);
Portd = 0x7E; delay_ms(150);
}
void program6() {
temp = 0xFF;
for (i=0;i<=8;i++)
{ portd = temp;
delay_ms(250);

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

31/32

temp = temp >> 1;


}

}
void program7() {

Portd = 0xFE; delay_ms(150);


Portd = 0xFD; delay_ms(150);
Portd = 0xFB; delay_ms(150);
Portd = 0xF7; delay_ms(150);
Portd = 0xEF; delay_ms(150);
PortD = 0xDF; delay_ms(150);
Portd = 0xBF; delay_ms(150);
Portd = 0x7F; delay_ms(150);

void program8() {
Portd = 0x7F; delay_ms(150);
Portd = 0xBF; delay_ms(150);
PortD = 0xDF; delay_ms(150);
Portd = 0xEF; delay_ms(150);
Portd = 0xF7; delay_ms(150);
Portd = 0xFB; delay_ms(150);
Portd = 0xFD; delay_ms(150);
Portd = 0xFE; delay_ms(150);
}

Ngi bo co:

Nguyn Ch Linh

Ti liu:

TUT01.01.PVN

Ngy:

9/8/2006

Trang:

32/32

3.5.

B m/nh thi (Timer)

3.6.

Giao tip I2C, SPI

3.7.

PWM, Capture, Comparator

You might also like