Escolar Documentos
Profissional Documentos
Cultura Documentos
Programao em nguagem C
Introduo
O que um mcrocontroador?
Mcrocontroador X mcroprocessador
Apcaes
PIC16F628A e PIC16F876A
Estrutura bsca dos PICs usados
Segundo nve
Tercero nve
Ouarto nve
Ounto nve
Caracterstcas Etrcas
#use ast&io,a1
#use ast&io,31
4oid main,4oid15
set&tris&a ,031111111116
set&tris&3 ,0716
8hile,true15
9
9
//---- Programa Esqueleto----
#include <16F8:6A.h>
#uses ;#
#use dela+,cloc-./0000001
#use ast&io,a1
#use ast&io,31
#use ast&io,c1
4oid main,4oid15
set&tris&a ,031111111116
set&tris&3 ,0716
set&tris&c ,0716
8hile,true15
9
9
Software mnmo
O compador case nsenstve!
Output_hgh(pno);
Ex: output_hgh(PIN_A0);
Output_ow(pno);
Ex: output_ow(PIN_A1);
Output_togge(pno);
Ex: Output_togge(PIN_A2);
Output_x(dado);
Ex: Output_a(0b00010001);
Funes de sada / trs
Output_foat(pno)
Ex:
Output_foat(PIN_A4);
Output_drve(pno)
Ex:
Output_drve(PIN_A5);
deay_ms(tempo em msegundos);
deay_us(tempo em mcrosegundos);
deay_cyces(tempo em ccos);
Funes de deay
//---- Programa Esqueleto----
#include <16F628A.h>
#uses !"#$%&!'( "')%*$
#use dela+,cloc-./0000001
#use ast&io,a1
#use ast&io,31
4oid main,4oid15
set&tris&a ,031111111016
set&tris&3 ,0716
8hile,true15
ou<ut&high,<in&a016
dela+&ms,=0016
out<ut&lo8,<in&a016
dela+&ms,=0016
9
9
//---- Programa Esqueleto----
#include <16F8:6A.h>
#uses ;#
#use dela+,cloc-./0000001
#use ast&io,a1
#use ast&io,31
#use ast&io,c1
#use ast&io,d1
#use ast&io,e1
4oid main,4oid15
set&tris&a ,031111111016
set&tris&3 ,0716
set&tris&c ,0716
set&tris&d ,0716
set&tris&e ,0716
8hile,true15
ou<ut&high,<in&a016
dela+&ms,=0016
out<ut&lo8,<in&a016
dela+&ms,=0016
9
9
1Ex: Hello World!
1Ex: Hello World!
1Ex: Hello World!
#use ast&io,a1
#use ast&io,31
4oid main,4oid15
set&tris&a ,031111111016
set&tris&3 ,0716
8hile,true15
i,in<ut,<in&c/11
ou<ut&high,<in&a016
else out<ut&lo8,<in&a016
9
9
//-------- Pisca *E> ---------
#include <16F8::A.h>
#uses ;#
#use dela+,cloc-./0000001
#use ast&io,a1
#use ast&io,31
#use ast&io,c1
#use ast&io,d1
#use ast&io,e1
4oid main,4oid15
set&tris&a ,031111111016
set&tris&3 ,0716
set&tris&c ,0716
set&tris&d ,0716
set&tris&e ,0716
8hile,true15
i,in<ut,<in&c/11
ou<ut&high,<in&a016
else out<ut&lo8,<in&a016
9
9
2Ex: (us)-button
2Ex: (us)-button
Enabe_nterrupts(parmetros)
Ex: enabe_nterrupts(GLOBAL|INT_RB0)
Ext_nt_edge(parmetros)
ex: ext_nt_edge(L_TO_H)
Defno da nterrupo:
#INT_RB
Vod funcao(){
cdgo
}
Funes bscas: Interrupo
3Ex: *nterrup&o #%terna
/----!nterru<?@o E7terna----/
#include <16F8::A.h>
#uses ;#
#use dela+,cloc-./0000001
#use ast&io,a1
#use ast&io,31
#use ast&io,c1
#use ast&io,d1
#use ast&io,e1
4oid main,4oid15
set&tris&a ,031111111016
set&tris&3 ,0716
set&tris&c ,0716
set&tris&d ,0716
set&tris&e ,0716
e7t&int&edge,*&#'&A16
ena3le&interru<ts,B*'CA*D!"#&$C16
8hile,true15
slee<,16
9
9
#!"#&$C
4oid <iscaled,4oid1
5
i,in<ut,<in&3011
5
dela+&ms,2016
i,in<ut,<in&3011
5
out<ut&toggle,<in&a016
9
9
9
#ncude <cdt.c>
cd_nt()
Incaza o LCD
Lcd_gotoxy(poso x, poso y)
cd_getc(poso x, poso y)
Prntf(cd_putc,"Mensagem")
\b - Vota 1 caractere no cd
#use ast&io,a1
#use ast&io,31
#use ast&io,c1
#use ast&io,d1
#use ast&io,e1
#include <lcdt.c>
#deine lig out<ut&high
#deine des out<ut&lo8
#deine seta out<ut&3it
#deine es< dela+&ms
#deine led <in&a0
#deine 3ot <in&c/
#deine 3l <in&c:
4oid main,4oid15
unsigned int i6
set&tris&a,031111111016
set&tris&c,030111111116
lcd&init,16
<rint,lcd&<utc(EF!G HEEEEII E16
<rint,lcd&<utc(EFn P!%a<turandoE16
lig,3l16
des,led16
or,i.06i<66iJJ15
seta,led(Iin<ut,led116 es<,/0016
9
8hile,true15
i,in<ut,3ot115
<rint,lcd&<utc(EF FeliKE16
<rint,lcd&<utc(EFn L1E16
lig,led16 lig,3l16
9else5
<rint,lcd&<utc(EF #risteE16
<rint,lcd&<utc(EFn L,E16
des,led16 des,3l1
9
es<,20016
9
9
4Ex: +ispla,
Setup_adc_ports(parmetros)
Ex: setup_adc_ports(a_anaog);
Setup_adc()
Setup_adc(adc_cock_nterna)
Set_adc_channe()
Setup_adc_channe(0);
Read_adc()
Varave=read_adc
Converso AD
5Ex: ADC
Segundo nve
Tercero nve
Ouarto nve
Ounto nve
Start bit: Avsa que a transfernca de um dado ser feta. Possu
nve gco zero.
Stop bit: Avsa que a transfernca do dado fo fnazada. Possu
nve gco um.
Baud rate: Determna quantos bts estaro contdos em um
segundo de comuncao.
Tempo de bit: o tempo de durao de um bt, tem o vaor 1/
(baud rate).
Payload: a carga de dados da comuncao, nesse caso o
caractere "a".
use rs232(parmetros)
Putc(caracter)
Ex: putc(a)
Varve = Getc();
Puts(mesagem) ou prntf("mensagem")
Varve = Gets();
Kbht();
Ex: f(kbht());
Comuncao Sera (UART)
#include <16628A.h>
#uses !"#$%&!'( "')%*$
#use dela+,cloc-./0000001
#use rs2P2,3aud.Q600( rc4.<in&31( 7mit.<in&321
#use ast&io,a1
#use ast&io,31
4oid main,4oid15
char dado.RaR6
set&tris&a,031111111116
set&tris&3,031111101116
8hile,true15
i,in<ut,<in&a0115
dela+&ms,2016
i,in<ut,<in&a0115
<utc,dadoJJ16
i,dado .. RhR1 dado .
RaR6
dela+&ms,20016
99
9
9
8Ex: UART TX
8 Ex: UART TX
Segundo nve
Tercero nve
Ouarto nve
Ounto nve
8Ex: UART RX
#include <16F8::A.h>
#uses ;#
#use dela+,cloc- . /0000001
#use ast&io,a1
#use ast&io,31
#use ast&io,c1
#use ast&io,d1
#deine use&<ort3&lcd true
#include <lcdt.c>
#use rs2P2,3aud.Q600 ( rc4 . <in&c:
( 7mit . <in&c61
4oid main,4oid15
char dado6
set&tris&a,031111111016
set&tris&c,031011111116
lcd&init,16
8hile,true15
i,-3hit,115
dado . getc,16
<rint,lcd&<utc(EF>adoLFn
OcE(
dado16
9
9
9
8 Ex: UART RX
#include <168::A.h>
#uses ;#
#use dela+,cloc-./0000001
#use ast&io,a1
#use ast&io,31
#use ast&io,c1
#use ast&io,d1
#use ast&io,e1
#include <lcdt.c>
#use rs2P2,3aud.Q600(
7mit.<in&c6( <arit+."(
rc4.<in&c:1
short lag.16
char dado.SMT6
#!"#&$>A
4oid int&rece3er,4oid15
dado.getc,16
lag.16
9
4oid main,4oid15
set&tris&a,0716
set&tris&c,031011111116
lcd&init,16
ena3le&interru<ts,B*'CA*16
ena3le&interru<ts,!"#&$>A16
8hile,#$UE15
i,lag15
<rint ,lcd&<utc(EF >adoL
E16
<rint ,lcd&<utc(EFn O1cE(
dado16
lag . 06
9
9
9
8Ex: RX Int. recebmento
setu<&timer&7,<arVmetros16
setu<&timer&0,$#%%&!"#E$"A*D$#%%&>!W&6/16
set&timer7,4alor16
E7L set&timer7,1P116
ena3le&interru<ts,<arVmetros16
ena3le&interru<ts,B*'CA*D!"#&#!)E$016
#!"#&timer7
Segundo nve
Tercero nve
Ouarto nve
Ounto nve
FIM