lap trinh ccs cho pic
TRANSCRIPT
-
8/12/2019 Lap Trinh CCS cho PIC
1/41
TRNG I HC KHOA HC TNHINTRNG I HC KHOA HC TNHINKHOA IN TKHOA IN T-- VIN THNGVIN THNG
PHN 3: LP TRNH VI CCS
1
ngng LL KhoaKhoa
-
8/12/2019 Lap Trinh CCS cho PIC
2/41
CHNG 1: CBN VCCS Ngn ngC
Cu trc cbn mt chng trnh
Xut nhp
Hm delay Lp trnh vi cc vng lp v iu kin
Lp trnh vi cc lnh logic v shc
2
-
8/12/2019 Lap Trinh CCS cho PIC
3/41
Ngn
ngC
3
-
8/12/2019 Lap Trinh CCS cho PIC
4/41
Ngn ngC
4
-
8/12/2019 Lap Trinh CCS cho PIC
5/41
Ngn ngC
5
-
8/12/2019 Lap Trinh CCS cho PIC
6/41
Ngn ngC
6
-
8/12/2019 Lap Trinh CCS cho PIC
7/41
Cu trc cbn mt chngtrnh
#include
#use delay(clock=16000000)
void main(void)
{
//chuong trinh C
}
7
-
8/12/2019 Lap Trinh CCS cho PIC
8/41
Xut nhp
8
-
8/12/2019 Lap Trinh CCS cho PIC
9/41
V dVD 1: Xut gi xut ra port C gi tr0x0F
#include
void main()
{
set_tris_c(0x00);while(1)
{
output_c(0x0F);
}
}
9
-
8/12/2019 Lap Trinh CCS cho PIC
10/41
V dVD 2: c dliu port D v xut port C#include
void main()
{
char data;
set_tris_c(0x00);set_tris_d(0xff);
while(1)
{
data = input_d();
output_c(data);
}
}
10
-
8/12/2019 Lap Trinh CCS cho PIC
11/41
Hm delay Cn c khai bo #use delay ( clock =xxxx)
VD : #use delay ( clock = 20000000 ) Hm delay khng sdng bt ktimer no
delay_cycles (count )
delay_us ( time )
delay_ms (time )
11
-
8/12/2019 Lap Trinh CCS cho PIC
12/41
Hm delay. 1: delay_cycles (count )
Count : hng st0 255 , l schu klnh .1 chu klnh bng 4chu kmy .
VD : delay_cycles ( 25 ) ; // vi OSC = 20 Mhz , hm ny delay 5 us
2: delay_us ( time )
Time : l bin sth = 0 255 , time l 1 hng sth = 0 -65535 . 3: delay_ms (time )
Time = 0-255 nu l bin shay = 0-65535 nu l hng s.
VD :
nt a = 215;elay_us ( a ) ; // delay 215 us
elay_us ( 4356 ) ; // delay 4356 us
elay_ms ( 2500 ) ; // delay 2 . 5 s
12
-
8/12/2019 Lap Trinh CCS cho PIC
13/41
V dVD 3: Vit chng trnh chp tt cc Led port C#include
#use delay (clock = 16000000)void main(void)
{
set_tris_c(0x00);
while(1)
{
output_c(0x00);
delay_ms(500);
output_c(0xff);
delay_ms(500);
}
}13
-
8/12/2019 Lap Trinh CCS cho PIC
14/41
Lp trnh vi cc vng lpVD 5: Vit chng trnh chp tt cc Led port C 5 ln#include
#use delay (clock = 16000000)
void main(void){
char i;
set_tris_c(0x00);
for (i=0;i
-
8/12/2019 Lap Trinh CCS cho PIC
15/41
Lp trnh vi iu kinVD 6: Vit chng trnh nu Port D =0 => xut Port C=0xff ngc li xut Port C=0x0f
#include
#use delay (clock = 16000000)
void main(void)
{
char data;
set_tris_c(0x00);
set_tris_d(0xff);
while(1)
{
data=input_d();
if (data==0)
output_c(0xff);
else
output_c(0x0f);
}
} 15
-
8/12/2019 Lap Trinh CCS cho PIC
16/41
Php ton logic v shcVD: Vit chng trnh dch 1 led tbit thp n bit cao#include
#use delay(clock=16000000)
void main()
{
char a,i;
_ _
while(1)
{
a=0x01;
for(i=0;i
-
8/12/2019 Lap Trinh CCS cho PIC
17/41
Bi tp#
# ( = 16000000)
()
,;
(000);
(0);
(1)
= ;
(==0)
(0);
(500);
(000);
(500);
(0);
17
-
8/12/2019 Lap Trinh CCS cho PIC
18/41
CHNG 2: CHUYN I
TNG TSANG S(ADC)
Nguyn tc hot ng ca ADC
Cu hnh bADC
V d
18
-
8/12/2019 Lap Trinh CCS cho PIC
19/41
Nguyn tc hot ng ca ADC ADC bchuyn i tng tsang s
Gi trxut ra dng sphthuc vo inthanalog, in ththam chiu v sbit
ADC 8 ( 0255 ) ADC 10 (01023 )
V d: ADC c 10 bitADC = V/VREF * 1023
19
-
8/12/2019 Lap Trinh CCS cho PIC
20/41
Nguyn tc hot ng ca ADC Phi c khai bo #DEVICE cho bit dng
ADC my bit (thng l 8 hay 10 bit hochn) .
thnh ADC 8 bit bng cch chia cho 4
C thlp trnh bng cc cp nht, hay
dng ngt ADC
20
-
8/12/2019 Lap Trinh CCS cho PIC
21/41
21
-
8/12/2019 Lap Trinh CCS cho PIC
22/41
Setup_ADC ( mode )Dng xcnh cch thc hotng b bini ADC . Xem
chi tit tng loi PIC khc nhau. Cc tham s thngdng:
ADC_OFF : tt hotng ADC_ _
xung clock IC ( mt 2-6 us ) ADC_CLOCK_DIV_2 : thi gian ly mu bng
xung clock / 2 ( mt 0.4 us trn thch anh 20MHz )
ADC_CLOCK_DIV_8 : thi gian ly mu bngxung clock / 8 ( 1.6 us )
ADC_CLOCK_DIV_32 : thi gian ly mu bng
xung clock / 32 ( 6.4 us ) 22
-
8/12/2019 Lap Trinh CCS cho PIC
23/41
Setup_ADC_ports ( value )Xcnh chn ly tn hiu analog vin th chun s dng .Xem chi tit tng loi PIC khc nhau. Vref : p chun , Vdd :
p ngunSauy l cc gi tr thng dng cho value: ALL_ANALOGS : dng tt c chn sau lm analog (Vref=Vdd)
NO_ANALOG : khng dng analog, cc chn s l chn I /O
AN0 : A0 AN0_AN1_AN3: A0 A1 A3, Vref = Vdd
AN0_AN1_VSS_VREF: A0 A1 VRefh = A3
AN0_AN1_AN4_VREF_VREF: A0 A1 A5 VRefh=A3 VRefl=A2 AN0_AN1_VREF_VREF : A0 A1 VRefh=A3 VRefl=A2
AN0_VREF_VREF : A0 VRefh=A3 VRefl=A2
..
23
-
8/12/2019 Lap Trinh CCS cho PIC
24/41
Setup_ADC_ports ( value ).VD :
setup_adc_ports (AN0_AN1_AN3) ;
// A0 , A1 , A3 nhn analog , p ngun +5V cp cho IC sli n chun .
24
-
8/12/2019 Lap Trinh CCS cho PIC
25/41
( ) Chn chn c vo gi tranalog bng
lnh Read_ADC ( ). Nn delay 10 us sau hm ny ri mi
_
Gi trchannel tuschn chc nngADC mi chip. Thng c gi tr:
0-chn A0 , 1-chn A1, 2-chn A2, 3-chnA3
25
-
8/12/2019 Lap Trinh CCS cho PIC
26/41
( ) D ADC ADC
.
H ADC ( ).
,
8 , 16 #DEICE ADC 10 .
Sly ADC tchn bn chn trong hm
Set_ADC_channel( ) trc . M 1 , ,
ADC( ) .
26
-
8/12/2019 Lap Trinh CCS cho PIC
27/41
( )M , :
#DECE 8 10 11 16 ADC=8 0255 0255 00255 00255
ADC=10 01023
ADC=11 02047
ADC=16 065280 065472 065504 065535
27
-
8/12/2019 Lap Trinh CCS cho PIC
28/41
V d
28
-
8/12/2019 Lap Trinh CCS cho PIC
29/41
V d
V d: c d liu t analog t chn AN0 xut ra port C#include
#device *=16 ADC=8
#use delay (clock = 16000000)
void main (void)
{
int8 value;
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(ALL_ANALOG);
set_adc_channel(0);
set_tris_c(0x00);
while(1)
{
delay_ms(100);
value = read_adc();
output_c(value);
}
} 29
-
8/12/2019 Lap Trinh CCS cho PIC
30/41
#
# *=16 ADC=8
# ( = 16000000)
()
8 ;
(ADCCLOCKINENAL);
(ALLANALOG);
(000);
(000);(1)
(0);
(1);
= ();
();
(1);
(1);
= ();
();
30
-
8/12/2019 Lap Trinh CCS cho PIC
31/41
CHNG 3: GIAO TIP NI TIP Nguyn tc hot ng port ni tip
Cc hm dng trong giao tip ni tip Cu hnh giao tip ni tip
V d
31
-
8/12/2019 Lap Trinh CCS cho PIC
32/41
Hot ng port ni tip Chng ny sgip bn vit chng trnh giao tip PC
VK truyn dliu cho PC xl , hoc nhn gi trtPCxl v iu khin
P 2 :
use e ay c oc = z
#use rs232 (baud=19200 , parity=n ,
xmit=pin_C6 , rcv=pin_C7 )
// = 19200 , , C6 , C7
32
-
8/12/2019 Lap Trinh CCS cho PIC
33/41
Cc hm dng trong giao tip
ni tip
33
C hm d t i ti
-
8/12/2019 Lap Trinh CCS cho PIC
34/41
Cc hm dng trong giao tip
ni tip
34
-
8/12/2019 Lap Trinh CCS cho PIC
35/41
Cc hm dng trong giao tip
ni tip
35
-
8/12/2019 Lap Trinh CCS cho PIC
36/41
printf ( string ) Printf ( cstring , values . . . )
Dng xut chui theo chun RS232 ra PC- string l 1 chui hng hay 1 mng k t
.
- value l danh sch cc bin , cch nhaubi du phy .
B % .
36
-
8/12/2019 Lap Trinh CCS cho PIC
37/41
-
8/12/2019 Lap Trinh CCS cho PIC
38/41
( ) RC6 v RC7 cho RX v TX trong giao tip cngCOM , VDK PIC trang bphn cng phc vvic ny vi thanh ghi gi v nhn v cc bitbo hiu tng ng. Do khi dng RS232 htrtphn cng th KHBIT ( ) trvTRUE nu
v sn sng cho vic c , v trv0 nu chasn sng .
Hm ny c thdng hi vng xem khi no cdata nhn tRS232 c .
38
-
8/12/2019 Lap Trinh CCS cho PIC
39/41
V dgi dliu qua RS232#include
#use delay (clock = 16000000)
#use rs232 (uart1, baud=9600,parity=n,xmit=pin_c6,
rcv=pin_c7 )
char temp;
void main (void)
{
set_tris_d(0x00);
while(1)
{printf("%u",5);
}
}
39
-
8/12/2019 Lap Trinh CCS cho PIC
40/41
V dnhn dliu qua RS232#include
#use delay (clock = 16000000)
#use rs232 (uart1, baud=9600,parity=n,xmit=pin_c6,rcv=pin_c7 )
char temp;
{set_tris_d(0x00);
while(1)
{
if (kbhit())temp = getc();
output_d(temp);
}
} 40
-
8/12/2019 Lap Trinh CCS cho PIC
41/41
41