Você está na página 1de 55

Universidade Federal do Piau Centro de Tecnologia Curso de Engenharia Eltrica

MICROCONTROLADORES
Linguagem C

Prof. Marcos Zurita zurita@ufpi.edu. r !!!.ufpi. r"zurita

Teresina - 2012

Sumrio

%. &ntrodu'(o

%.%. C vs )sse* l+

#. Co*piladores ,. ) -inguage* C do CC. /i liografia

Microcontroladores $ Prof. Marcos Zurita

%. &ntrodu'(o

Microcontroladores $ Prof. Marcos Zurita

Introduo
C vs Assembly C1digo )sse* l+

2era u* c1digo co*pilado 3en4uto5 6eloz Controle 3total5 so re as opera'7es C1digos fonte e4tensos 8ifcil de progra*ar 8ifcil de entender 8ifcil *anuten'(o 2rande depend9ncia do hard!are /ai4o reaproveita*ento de c1digo &*possi ilidade de *igra'(o para outros :C;s
Microcontroladores $ Prof. Marcos Zurita

Introduo

C1digo C

C1digo co*pilado =uase t(o 3en4uto5 =uanto ).M >uase t(o veloz =uanto ).M ) stra'(o das opera'7es e* ai4o nvel C1digos?fonte en4utos F@cil de progra*ar F@cil de entender F@cil *anuten'(o /ai4a depend9ncia do hard!are /o* reaproveita*ento de c1digo Possi ilidade de integra'(o co* ).M Menor velocidade e* opera'7es crticas
Microcontroladores $ Prof. Marcos Zurita

<

Introduo
Como Projetar Sistemas om !i ro ontroladores
8espe'a?se da sua fa*lia e de seus pais por alguns dias...

) aste'a seu *ascote co* oas reservas de ra'(o

Estude o dispositivo =ue ser@ controlado pelo *icrocontrolador.

Microcontroladores $ Prof. Marcos Zurita

Introduo

E4a*ine 3todos5 os *icrocontroladores de =ue voc9 disp7e CnD de E".E conver? soresE te*poriza? doresE etc.F Escolha o =ue *elhor atende aos re=uisitos de funciona? *ento do siste*a deseGado.

ProGete eE se possvelE construa u* prot1tipo do siste*a =ue ser@ con? trolado pelo uCE incluindo perifricos =ue ser(o utiliza? dos na aplica'(o real.

Microcontroladores $ Prof. Marcos Zurita

Introduo

Escreva o progra*a e* u*a linguage* de alto nvel para progra*ar o uC. Escolha ta* * u* si*ulador para au4iliar o desenvolvi*ento.

Co* alguns pucos cli=ues o progra*a inteiro se converte e* algo co*preensvel pelo uC. Utilize u* gravador para progra*a?lo.

Microcontroladores $ Prof. Marcos Zurita

Introduo

)gora o uC G@ est@ suficiente*ente *a? duro para co*e'ar a dar retorno a sociedadeJ Colo=ue o chip progra*ado no siste*aE respire fundo e ligue?oJ

FeitoJ 8esfrute o sucesso da e*preitada e co*ece a pensar e* novos proGetos.

Microcontroladores $ Prof. Marcos Zurita

#. Co*piladores

Microcontroladores $ Prof. Marcos Zurita

%K

Com"iladores
Alguns Com"iladores "ara PIC

Assembly

MP).M Cco*piladorF MP-)/ Cdepura'(oE e*ula'(o e grava'(oF Pic)nt pico?C P&L&E C#C CC<4 Mi?Tech P&CC MiNroC

CCS

Microcontroladores $ Prof. Marcos Zurita

%%

Com"iladores
# Com"ilador CCS C

.uporta toda linha de :C;s P&C CP&C%#E %0E %A e %HF &ntegra'(o co* o MP-)/ Co*pati ilidade co* )O.& e &.P 2era c1digos eficientes 2rande diversidade de i liotecas e fun'7es 2rande porta ilidade de c1digo &*ple*enta'(o natural de ponto flutuante )ssistente de cria'(o de c1digo 2era'(o auto*@tica de c1digo ).M e relat1rios 2rande nvel de a stra'(o no uso deQ

8ela+s Co*unica'(o serial -C8

Microcontroladores $ Prof. Marcos Zurita

%#

,. ) -inguage* C do CC.

Microcontroladores $ Prof. Marcos Zurita

%,

A Linguagem C do CCS
A Linguagem do CCS C

6ari@veis e tipos de dados Pperadores Estruturas de condi'(o Estruturas de repeti'(o Fun'7es

Microcontroladores $ Prof. Marcos Zurita

%0

A Linguagem C do CCS
$ari%eis e Ti"os de &ados

Tipos nativos da linguage* C


char int float void int% intH int%A int,# oolean +te
Microcontroladores $ Prof. Marcos Zurita

Tipos especficos do co*pilador CC. C


%<

A Linguagem C do CCS
!odi'i adores de Ti"o

)ltera* o ta*anho ou a for*a co* =ue os tipos s(o tratados. signed unsigned short long

Microcontroladores $ Prof. Marcos Zurita

%A

A Linguagem C do CCS
Ti"os &is"on(%eis no CCS C
Tipo short int, int1, boolean char signed char unsigned char int, int8, byte signed int, signed byte unsigned int, unsigned byte long int, int16 signed long int unsigned long int int32 signed int32 unsigned int32 float Tamanho em Bits 1 8 8 8 8 8 8 16 16 16 32 32 32 32 Faixa de Valores 0 ou 1 0 a 255 -128 a 127 0 a 255 0 a 255 -128 a 127 0 a 255 0 a 65.535 -32.768 a 32.767 0 a 65.535 0 a 4.294.967.295 -2.147.483.648 a 2.147.483.647 0 a 4.294.967.295 -3.4 1038 a 3.4 1038

Microcontroladores $ Prof. Marcos Zurita

%B

A Linguagem C do CCS
)so de $ari%eis
int cont; unsigned int ciclo, j; float tensao; cont = 0; ciclo = 1; j = ciclo + 1; tensao = 3.496; // contador de 8 bits // ciclos de maquina // tensao lida

Microcontroladores $ Prof. Marcos Zurita

%H

A Linguagem C do CCS
!atri*es

8efine* u* conGunto de ele*entos do *es*o tipo Cta*anho fi4oFQ


int v[10]; // conj. de 10 inteiros

Cada ele*ento deste conGunto pode ser acessado atravs de seu ndice no conGunto C%R ele*ento S ndice KFQ
b = v[2]; // recebe o 3 elemento v[0] = 34; // atribui 34 ao 1 elemento

Microcontroladores $ Prof. Marcos Zurita

%I

A Linguagem C do CCS
!atri*es !ultidimensionais

.(o associa'7es de *atrizes unidi*ensionais CvetoresF.


int [16][16]; int1 ![2][4]; // matriz bidimensional 16x16 // matriz bidimensional 2x4

[0][0] = 200; // atribui 200 ao elemento 0,0 [0"f][0"f] = 0; // atribui 0 ao elemento 15,15 ! = #0,0,1,0 // reenc!e toda a matriz 1,1,0,0$;

Microcontroladores $ Prof. Marcos Zurita

#K

A Linguagem C do CCS
Strings

Trata*?se de u* conGunto de caracteres. Pode* ser declaradas na for*a de vetores ou de ponteiros. >uando declaradas so a for*a de vetorE deve* ter se*pre o ta*anho do nT*ero *@4i*o de caracteres U %.
c%a& 'sg[14]; c%a& 'es[2][4]; // strin" de ate 13 caracteres // #etor de strin"s de 3 caracteres reenc!e 13 caracteres

'sg = ()&ans'itancia(; // 'es = #(*an(, (+ev($;

Microcontroladores $ Prof. Marcos Zurita

#%

A Linguagem C do CCS
Casting - Con%erso de Ti"os

Casting u* recurso para for'ar o co*pilador a tratar u*a vari@vel Cou e4press(oF co*o sendo de u* tipo diferente da=uele =ue foi declarado no progra*a. .eu uso pode ser necess@rio e* opera'7es envolvendo vari@veis de tipos diferentes. .inta4eQ
,ti o-destino. e" &essao-a-se&-conve&tida;

E4e*ploQ
int16 adc; float tensao; // #ari$#el ti o %int& // #ari$#el ti o %'loat&

adc = fa/-conve&sao-01,.; // %adc& est$ entre 0 e 1023 tensao = ,float.adc21023; // con#erte %adc& ara 'loat
Microcontroladores $ Prof. Marcos Zurita

##

A Linguagem C do CCS

P uso de casting re=uer alguns cuidados =ue deve* ser o servados pelo progra*adorQ Casting de u*a e4press(o co* sinal para u*a vari@vel se* sinalQ pode gerar resultados inesperados caso o valor seGa negativo Ce4.Q int para unsigned intFV Casting de u*a vari@vel"e4press(o cuGo nT*ero de its *aior =ue o da vari@vel de destinoQ o resultado ser@ truncadoE isto E todos os its de orde* superior ao de *aior orde* da vari@vel de destino ser(o desprezados Ce4.Q int16 para int8FV Casting de u* nT*ero para u* u* caractere n(o gera o caractere do nT*ero Ci.e.E CcharF< W X<XFE o invs disto resultar@ nu* caractere cuGo valor ).C&& corresponde ao nT*ero dado. #,
Microcontroladores $ Prof. Marcos Zurita

A Linguagem C do CCS

Casting de u* ponto flutuante CfloatF para u* tipo inteiro CintE int16 ou int32FE pode gerar resultados inesperadosQ

Caso o valor contido seGa *aior do =ue o aceit@vel pela vari@vel de destinoE *es*o =ue ela seGa u* tipo int,# Cfloat pode co*portar at ,.04%K,H en=uanto u* int32 se* sinal vai at 0.#I4%KIFV Float u* tipo co* sinalE logoE suGeito aos *es*os pro le*as de convers(o para tipos se* sinalE caso o valor contido seGa negativo. ) convers(o deseG@vel pode re=uerer arredonda*entoE o =ue n(o feito pelo cast. E4.Q

int 3; // #ari$#el ti o %int& float gan%o=4.99; // #ari$#el ti o %'loat& 3 = ,int.gan%o; // ( #ale 5 e n)o 6*
Microcontroladores $ Prof. Marcos Zurita

#0

A Linguagem C do CCS
$ari%eis +lobais e Lo ais

+lobais .(o acessveis e* =ual=uer ponto do progra*a. .1 s(o destrudas no encerra*ento do progra*a. Lo ais .1 s(o acessveis dentro da fun'(o onde fora* declaradas. .(o destrudas no encerra*ento da fun'(o.

Microcontroladores $ Prof. Marcos Zurita

#<

A Linguagem C do CCS
,-./ 6ari@vel glo al vs local
5include 6stdio.%7 int " = 3; void 'ain ,. # int 8 = 910; " = " + 8; &intf,(:o'a = ;i(, ".; $ // #ari$#el "lobal

// #ari$#el local

Microcontroladores $ Prof. Marcos Zurita

#A

A Linguagem C do CCS
!odi'i ador Stati

P riga o co*pilador a *anter a vari@vel nu*a posi'(o fi4a da *e*1ria. Evita =ue a vari@vel seGa destruda no encerra*ento da fun'(o. .(o inicializadas co* KV

Microcontroladores $ Prof. Marcos Zurita

#B

A Linguagem C do CCS
,-./ Modificador .tatic
5include 6stdio.%7 int " = 3; // #ari$#el "lobal

b8te inc&e'enta,. # static b8te ciclo; // #ari$#el local est$tica &etu&n ciclo++; $ void 'ain,. # " = " + inc&e'enta,.; " = ," + 2. < inc&e'enta,.; &intf,(=oisa = ;"(, ".; $
Microcontroladores $ Prof. Marcos Zurita

#H

A Linguagem C do CCS
Ponteiros

Ponteiro u*a vari@vel =ue cont* o endere'o de outra vari@vel. Pode* ser utilizados para aloca'(o dinY*icaE podendo su stituir *atrizes co* *ais efici9ncia Cpor n(o ter ta*anho fi4oF. .inta4eQ
ti o <no'e-do- ontei&o;

) *anipula'(o de ponteiros re=uer dois operadoresQ


0 ? Zetorna o endere'o apontado pelo ponteiroV 1 ? Zetorna o conteTdo ar*azenado no endere'o apontado pelo ponteiro.
Microcontroladores $ Prof. Marcos Zurita

#I

A Linguagem C do CCS
,-./ Ponteiros
int < t&; int " = 10; int 8 = 24; t& = >"; &intf,("=;i?n(, < t&.; t& = >8; &intf,(8=;i?n(, < t&.; // tr + um onteiro ara int // x + uma #ari$#el ti o int // , + uma #ari$#el ti o int // tr a"ora a onta // im rime %x-10& // tr a"ora a onta // im rime %,-20& ara %x& ara %x&

Microcontroladores $ Prof. Marcos Zurita

,K

A Linguagem C do CCS
Constantes

6alores *antidos fi4os na *e*1ria durante toda a e4ecu'(o do progra*a. Todo valor atri udo e4plicita*ente no c1digo potencial*ente u* candidato a ser convertido e* constante. Pode* assu*ir =ual=uer u* dos tipos nativos do CE e sere* declaradas co*o he4adeci*aisE octaisE strings e constantes de controle C arra invertidaF. 8eve* ser declaradas e* cai4a alta Cpor conven'(oF.

Microcontroladores $ Prof. Marcos Zurita

,%

A Linguagem C do CCS
,-./ Constantes
5include 6stdio.%7 5define =@A:0 24 //const. ti o int 5define @B)C0-=@A:0 DE out&a coisa( //const. ti o strin" 5define F0A:-=@A:0 14.32+ //const. ti o 'loat void 'ain,. # float j = 0.0; c%a& 'sg[14] = @B)C0-=@A:0 ; j = j + =@A:0 + F0A:-=@A:0; &intf,(=oisas = ;f(, j.; $
Microcontroladores $ Prof. Marcos Zurita

,#

A Linguagem C do CCS
,-"ress2es Constantes
3ormato &es rio

123 12.3 0123 0"123 0b0101 G)G G?012G G?"12G G?cG

OT*ero deci*al inteiro OT*ero deci*al e* ponto flutuante OT*ero octal OT*ero he4adeci*al OT*ero in@rio Caractere Caractere octal Caractere he4adeci*al Caractere especialE onde [c pode serQ [n Oova linha [r Zetorno de carro [t Ta ula'(o [ Zetrocesso CBackspaceF [f .alta For*ul@rio [X )spas si*ples [5 )spas duplas [[ /arra invertida
Microcontroladores $ Prof. Marcos Zurita

,,

A Linguagem C do CCS
#"eradores Aritm4ti os

Usados para desenvolver e4press7es *ate*@ticas. Pode* ser in@rios ou un@rios.


#"erador &es rio

+ 9 < 2 % ++ 99

.o*a Cinteira e ponto flutuanteF .u tra'(o ou troca de sinal Cinteira e ponto flutuanteF Multiplica'(o Cinteira e ponto flutuanteF 8ivis(o Cinteira e ponto flutuanteF Zesto de divis(o Cde inteirosF &ncre*ento Cinteiro e ponto flutuanteF 8ecre*ento Cinteiro e ponto flutuanteF
,0

Microcontroladores $ Prof. Marcos Zurita

A Linguagem C do CCS
,-./ Pperadores )rit*ticos
void 'ain,. # int " = 10, 8 = 1H, / = 4; float f = 13.0f; " = 8 + /; 8 = 23 2 2; f = 23.0 2 2; / = 24 ; 4; "++; /99; &intf,(" &intf,(8 &intf,(/ &intf,(f $
Microcontroladores $ Prof. Marcos Zurita

// // // // // //

x , ' z x z

22 11 11.5 4 15 3

= = = =

;i?n(, ;i?n(, ;i?n(, ;f?n(,

".; 8.; /.; f.;


,<

A Linguagem C do CCS
#"eradores 5ela ionais e L6gi os
Com"arao ,ntre $alores
#"erador 7 7= 6 6= == I= !aior "ue !aior ou igual a !enor "ue !enor ou igual a #gual a $iferente de &es rio

5eali*am #"era2es L6gi as 7$ ou 38


#"erador >> JJ I &es rio % &' (( ' ) ', ' (( * ) *, * (( * ) *+ ,- &' . . ' ) ', ' . . * ) ', * . . * ) *+ /,0 &1' ) *, 1* ) '+
Microcontroladores $ Prof. Marcos Zurita

,A

A Linguagem C do CCS
#"eradores de 9its

Manipula* its e* valores inteiros.


#"erador 77 66 K J > L &es rio $esloca2ento de bits 3ara direta $esloca2ento de bits 3ara es"uerda 4o23le2ento bit-a-bit &in5erte todos os bits+ ,6 bit-a-bit 7/$ bit-a-bit 8,6 bit-a-bit

Microcontroladores $ Prof. Marcos Zurita

,B

A Linguagem C do CCS
,-./ Pperadores de /its
b8te s' = 0b10001100; b8te ", 8, /, 3; / = Ks'; " = s' 77 3; 8 = s' 66 2; 3 = " J 8; 3 = " > 8; 3 = " L 8; // sm - 140 // // , a"ora #ale 0b01110011 // x a"ora #ale 0b00010001 // , a"ora #ale 0b00110000 // ( a"ora #ale 0b00110001 // ( a"ora #ale 0b00010000 // ( a"ora #ale 0b00100001

Microcontroladores $ Prof. Marcos Zurita

,H

A Linguagem C do CCS
5egistros em C 7stru t8

U* registro u* conGunto de vari@veis agrupadas e* u*a *es*a refer9ncia. Pode* conter vari@veis de tipos distintos. )s vari@veis contidas pode* ter seu ta*anho e* its alterado atravs do *odificador 3Q5. .inta4eQ
st&uct nome.estrutura # ti o1 nome.#ar1 /0bits1; ti o2 nome.#ar2 /0bits1; 2...3 ti o4 nome.#ar4 /0bits1; $ nome.#ar;
Microcontroladores $ Prof. Marcos Zurita

,I

A Linguagem C do CCS
,-./ Zegistros e* C CstructF
st&uct lcd- in # int1 enable; int1 &s; int1 &M; int1 unused; int dataN4; $ lcd; // cria a estrutura %lcd. in& // bit 00 cam o %enable& // bit 10 cam o %rs& // bit 20 cam o %r5& // bit 30 cam o %unused& // bits 4670 cam o %data& 24 bits3 // %lcd&0 #ari$#el do ti o %lcd. in&

c%a& c, c%; st&uct lcd-b3 lcd- in; // %lcd.b(& + do ti o %lcd. in& lcd.data = 0"9; c = lcd.data; c% = GaG; lcd-b3.enable = 0; lcd-b3.data = c%;
Microcontroladores $ Prof. Marcos Zurita

0K

A Linguagem C do CCS
)ni2es em C 7union8

Per*ite a cria'(o de vari@veis capazes de suportar dife? rentes tipos de dados nu* *es*o espa'o de *e*1ria. Pcupa na *e*1ria apenas o ta*anho da *aior vari@vel declarada. P ta*anho das vari@veis pode ser alterado por 3Q5. .inta4eQ
union nome.uniao # ti o1 nome.#ar1 /0bits1; ti o2 nome.#ar2 /0bits1; 2...3 ti o4 nome.#ar4 /0bits1; $ nome.#ar;
Microcontroladores $ Prof. Marcos Zurita

0%

A Linguagem C do CCS
,-./ Uni7es e* C CunionF
union d-ifc # // 8ria a uni)o %d.i'c& de 32 bits int32 i24N24; // 6 ode conter um inteiro de 24 bits float f; // ou ode conter um 'loat c%a& c[3]; // ou ode conter 3 caracteres $ dado; // %dado&0 #ari$#el do ti o %d.i'c& dado.i24 = 0"204; dado.f = 3.14; dado.c%a& = G iG;

// %dado& cont+m um inteiro de 24 bits // %dado& cont+m a"ora um 'loat // %dado& cont+m a"ora uma strin"

Oote =ue 3dado5 ora cont* u* inteiro de #0 itsE ora cont* u* float C,# F ora cont* u*a stringE e* ora a uni(o ocupe ,# its de *e*1ria durante todo te*po. Ca e ao progra*ador o conheci*ento de =ual tipo de vari@vel foi ar*azenada *ais recente*ente na uni(o.
Microcontroladores $ Prof. Marcos Zurita

0#

A Linguagem C do CCS
,numera2es 7,num8

U*a enu*era'(o u*a lista de constantes inteiras. .inta4eQ


enu' nome.enum #id1 /-#11, id2 /-#21, id4 /-#41$;

Por padr(oE o pri*eiro identificador te* valor zeroE sendo o valor de cada identificador su se=uenteE o valor do identificador anterior U %.
enu' se'afo&o #OPC1P, 0F0CPQ@=2, OPCFPQR@$; // 9:;<:-0, =>=;:?@-2, 9:;>:?A@-3 enu' udc' #BSA101P=1, 1PTPS0=10, =PS)PS0=100, FAQR0C=1000$; // B4C<=<:-1, <:D:4=-10, 8:4E:4=-100, >C?A=;-1000 valo& = '<FAQR0C + c<=PS)PS0 + d<1PTPS0 + u<BSA101P; estado = OPC1P;
Microcontroladores $ Prof. Marcos Zurita

0,

A Linguagem C do CCS
&e'inio de Ti"os 7ty"ede'8

T+pedef per*ite criar u* novo tipo de vari@velE al* dos tipos nativos da linguage* CintE charE floatE etcF. .inta4eQ
t8 edef /ti o.quali'icador1 /nome.ti o1 /declaraF)o1;

E4e*ploQ
t8 edef intH o&ta 0 = 0, U; o&ta; // cria um no#o ti o c!amado % orta& = e G s)o do ti o % orta&

// as #ari$#eis

U = 0"00;

Oeste e4e*ploE 3porta5 u* sin\ni*o para intH.


Microcontroladores $ Prof. Marcos Zurita

00

A Linguagem C do CCS
,-.2/ 8efini'(o de Tipos Ct+pedefF
t8 edef st&uct coo&d# // cria um no#o ti o c!amado %coord& int32 os-"N24; int32 os-8N24; $; float asso-", asso-8;

void 'ain,. # coo&d coo&d-ini, coo&d-fin; // no#o ti o sendo usado* // instruFHes... asso-" = ,coo&d-fin." 9 coo&d-ini.".2100; asso-8 = ,coo&d-fin.8 V coo&d-ini.8.2100; // mais instruFHes... $
Microcontroladores $ Prof. Marcos Zurita

0<

A Linguagem C do CCS
,strutura de Condio :i';

E4ecuta u* co*ando ou u* loco de co*andos caso a condi'(o testada seGa verdadeira.


void 'ain,. # int " = 10, 8 = 1H; if ," 7= 10. # 8 = 0; " = 0; $ else 8++; "++; $
Microcontroladores $ Prof. Marcos Zurita

0A

A Linguagem C do CCS
,strutura de Condio :s<it =;

Co*para'(o de diversos valores de u*a *es*a vari@vel.


sMitc% # case case case ,tecla.

0N 8 = 1; b&ea3; 1N 8 = 10; b&ea3; 2N 8 = 100; " = 0; b&ea3; defaultN 8++;

Microcontroladores $ Prof. Marcos Zurita

0B

A Linguagem C do CCS
,strutura de 5e"etio :'or;

Zepeti'(o condicional de u*a instru'(o ou loco


fo& ,i = 0; i 6 4; i++. # 8 = 8 < 8; $ fo& ,i = 12; 8 6 100 6 4; i99. # 8 = 8 < 2; $

Microcontroladores $ Prof. Marcos Zurita

0H

A Linguagem C do CCS
,strutura de 5e"etio :<=ile;

E4ecuta teste antes de e4ecutar o loco


M%ile ,8 I= 13. # 8++; "99; $ M%ile ,1. # ... $ 22 loo infinito

22 codigo

Microcontroladores $ Prof. Marcos Zurita

0I

A Linguagem C do CCS
,strutura de 5e"etio :do-<=ile;

E4ecuta teste ap1s e4ecutar o loco.


do # 8++; "99; $ M%ile ,8 I= 13.

Microcontroladores $ Prof. Marcos Zurita

<K

A Linguagem C do CCS
3un2es

ConGunto de rotinas agrupadas de *odo a realizar u*a deter*inada tarefa. Melhor *aneira de a strair e agrupar trechos de c1digo =ue se repete*. 8efinida por u* no*eE u* tipo de retornoE argu*entos e corpo. Ps argu*entos s(o opcionaisE e o retornoE =uando n(o for necess@rioE deve ser void.

Microcontroladores $ Prof. Marcos Zurita

<%

A Linguagem C do CCS
,./ Fun'7es
void &intRelloWo&d,. # &intf,DRello Wo&ldI(.; $ int16 so'a,intH a, intH b. # &etu&n a + b; $ void 'ain,. # int16 s = so'a,4, 14.; &intf,(so'a = ;l?n(, s.; &intRelloWo&d,.; $
Microcontroladores $ Prof. Marcos Zurita

<#

A Linguagem C do CCS
#"erador Ternrio

Ta* * conhecido co*o 3operador de e4press(o condicional5. ] u*a for*a co*pacta da estrutura if-else. .inta4eQ
condicao X e" &essao1 N e" &essao2;

E4e*ploQ
'ini'o = ,"68.X " N 8; //retorna o menor ar"umento // o cIdi"o acima equi#ale a0 if ,"68. 'ini'o = "; else 'ini'o = 8;
Microcontroladores $ Prof. Marcos Zurita

<,

A Linguagem C do CCS
!a ros

8e *aneira se*elhante a declara'(o de constantesE *acros s(o u* recurso de su stitui'(o te4tual de trechos de c1digoE co*portando?se de *aneira se*elhante a pe=uenas fun'7es. .inta4eQ
5define no'e-'ac&o,a&g1, a&g2, ..., a&gS. e" &essao;

E4e*ploQ
5define 'in,",8. ,,"68.X"N8. //retorna o menor ar"umento int a, b, c, d, 'eno&; // instruFHes... d = 'in,a,b.; // "era o cIdi"o %d-22aJb3Ka0b3L& 'eno& = 'in,d,c.; // "era o cIdi"o %menor-22dJc3Kd0c3L&
Microcontroladores $ Prof. Marcos Zurita

<0

9ibliogra'ia

Milan 6erleE PIC Microcontrollers Programming in CE %a Ed.E MiNroEleNtroniNaE #KKI. )l erto Oo oru Mi+adairaE Microcontroladores PIC18: aprenda e programe em liguagem CE #a Ed.E Editora ]ricaE #K%%. )ndre! .. Tanen au*E Organizao Estruturada de ComputadoresE <a Ed.E PearsonE #KKA. Microchip Tec. &nc.E 8- it PIC MicrocontrollersE 8ata .heetE #K%K. Microchip Tec. &nc.E PIC1!"8#$% - &8'()'((-Pin En*anced "las* MicrocontrollersE 8ata .heetE #KK,.
Microcontroladores $ Prof. Marcos Zurita

<<

Você também pode gostar