Você está na página 1de 13

LaboraLrlo de Mlcroprocessadores

1ema: rogramao de MlcroconLroladores lC


AssunLos:
AmblenLe para Compllao e Slmulao
Lxemplos
Lxerclclos
rof. ur. Ldson AnLonlo 8ausLa
alesLranLe: Lng. !oo Carlos Slquelra
2
8lblloLecas
Na pr|me|ra ||nhas de cd|go, so |nser|das as
b|b||otecas que sero un||zadas:
#|nc|ude <16f628a.h> //8lblloLeca do lC uullzado
3
Conguraes adres
As conhguraes so denom|nadas de fus|ve|s (!"#$#) e so responsve|s
por hab|||tar ou desab|||tar func|ona||dades no IC, so dec|aradas aps
as b|b||otecas:
#fuses nS //uullzao de crlsLal com frequncla alLa (> 4MPz)
#fuses NCMCLk //!"#$%& ()%"& desablllLado
#fuses U1 //*+,%& -. /01%& hablllLado
Cu,
#fuses nS, NCMCLk, U1 //ode ser declarado apenas uma llnha Lambem
4
CuLras Conguraes
A|m dos fus|ve|s, tambm so dec|arados a un||zao ("#$) de
outros recursos como: frequenc|a do cr|sta| externo, reso|uo do
conversor A]D, conhgurao da kS232.

#use de|ay(c|ock = 20M) //uullza um crlsLal exLerno de 20MPz

3
luno rlnclpal (maln)
1oda ||nguagem C deve ser dec|arada a funo pr|nc|pa|, a
execuo do IC sera |n|c|ada a parnr desta funo:

vo|d ma|n()
{
// Cdlgo sequenclal
//--------------------------
//--------------------------
} //Lembre-se de abrlr [ e fechar }" para Loda funo
6
luno de Loop (whlle)
1odo m|crocontro|ador necess|ta de uma funo de |oop
para forar a connnuao do a|gor|tmo, portanto, dec|ara-se
a segu|nte ronna dentro da funo "%&'(":
wh||e(true) 223456"4$+ 78%&9"9%0&+: *;( &%.%<&= + >?90@+
{
//Cdlgo sequenclal
/--------------------------
} //Lembre-se de abrlr [ e fechar }" para Loda funo
Cbs: Apenas chamadas de outras funes ou |nterrupes podem sa|r desta ronnha de |oop.
7
LnLrada ulglLal
A |e|tura dos p|nos d|g|ta|s podem ser rea||zadas
separadamente ou em con[unto:
Va|or = |nput_a(), //varlvel valor" recebe os 8 blLs da porLa A"
Va|or = |nput(IN_A0), //varlvel valor" recebe apenas o blL da porLa A0

//ara fazer a lelLura de ouLras porLas, apenas deve-se alLerar a leLra A" pela
leLra correspondenLe a porLa.
8
Salda ulglLal
Ass|m como a entrada, pode-se ac|onar a porta |nte|ra ou apenas um
p|no:

output_a(0b00001111), //Cs plnos A0, A1, A2 e A3 recebero
output_a(1S), //nlvel lglco alLo 1", enquanLo
output_a(0x0I), //A4, A3, A6 e A7 recebero nlvel lglco balxo 0"
output_h|gh(IN_A0), //C plno A0" recebe nlvel lglco alLo 1"
output_|ow(IN_A0), //C plno A0" recebe nlvel lglco balxo 0"
output_togg|e(IN_A0),//C plno A0" alLera o nlvel lglco aLual Loda vez que
o comando e lldo
9
8ounas de ALraso
Mu|to un||zado em me|o as funes, perm|te
"travar" o IC durante um per|odo de tempo
determ|nado:
de|ay_ms(1000), //Lspera 1000 ms ou 1s

de|ay_us(1000), //Lspera 1000 us ou 1ms
10
Lxemplo 1
lazer um LLu plscar a cada 300 ms uullzando um mlcroconLrolador lC16l628A.
#lnclude <16f628a.h>
#fuses nCMCL8, PS
#use delay(clock = 20M)

vold maln()
[
whlle(Lrue)
[
ouLpuL_hlgh(pln_a0),
delay_ms(300),
ouLpuL_low(pln_a0),
delay_ms(300),
}
}
11
Lxemplo 2
lazer um LLu plscar quando um boLo e presslonado uullzando um mlcroconLrolador
lC16l628A.
#lnclude <16f628a.h>
#fuses nCMCL8, PS
#use delay(clock = 20M)

vold maln()
[
whlle(Lrue)
[
lf (lnpuL(pln_b0))[
ouLpuL_Loggle(pln_a0),
whlle(lnpuL(pln_b0)),
}
}
}
12
Lxerclclo 1
8eallzar o conLrole de dols semforos em um
cruzamenLo uullzando um mlcroconLrolador
lC16l628A.
Cbs: 1empo verde = 3 s
1empo Amarelo = 2,3 s
13
hup://www.educolorlr.com/semaforo-L28284.[pg

Você também pode gostar