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