You are on page 1of 3

#include

<p18f4520.h>
ocontrolador usado
#include
<delays.h>
que permite usar os delays
#include
<stdio.h>
de entradas e sadas da linguagem C
//**
//** CONFIGURAO DOS FUSE BITS
//**
#pragma config OSC
= INTIO67
7 como pinos digitais
#pragma config FCMEN = OFF
#pragma config IESO
= OFF
witchover mode
#pragma config PWRT
= ON
#pragma config BOREN = ON
e controlado por software
#pragma config BORV
= 0
#pragma config WDT
= OFF
#pragma config WDTPS = 128
:128
#pragma config MCLRE = ON
#pragma config LPT1OSC = OFF
u alta potncia)
#pragma config PBADEN = OFF
no reset
#pragma config CCP2MX = PORTC
#pragma config STVREN = ON
#pragma config LVP
= OFF
#pragma config DEBUG = OFF
bugger
#pragma config XINST = OFF
#pragma config CP0
= OFF
#pragma config CP1
= OFF
#pragma config CP2
= OFF
#pragma config CP3
= OFF
#pragma config CPB
= OFF
#pragma config CPD
= OFF
#pragma config WRT0
= OFF
#pragma config WRT1
= OFF
#pragma config WRT2
= OFF
#pragma config WRT3
= OFF
#pragma config WRTB
= OFF
#pragma config WRTC
= OFF
#pragma config WRTD
= OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTR2 = OFF
#pragma config EBTR3 = OFF
#pragma config EBTRB = OFF
int
contador=0;
a e inicializa a vriavel contador
int
btApertado=0;
ializa a vriavel btapertado
//**DECLRAO DE ENTRADAS
//**
#define push
PORTCbits.RC5
a o pino RC5
//**DECLARAO DE SADAS

//** inclui a biblioteca do micr


//** inclui a biblioteca
//** inclui a bibioteca

//** oscilador interno, RA6 e RA


//** fail-safe-clock-monitor
//** internal external s
//** power up timer on
//** brown-out reset habilitado
//** tenso do brown-out reset
//** watch dog timer off
//** escala do watch dog timer 1
//** habilitao do pino masterclear
//** configurao do timer1 (baixa o
//** configurao dos pinos digitais
//** configura sadas multiplexada
//** stack full/overflow reset
//** low voltage program
//** habilita/ou no background de
//** extended instruction
//**
//**
//**
//**
//**

proteo
proteo
proteo
proteo

de
de
de
de

code block
boot block
data eeprom code
escrita

//** proteo de escrita


//**

//** cri
//** cria e inic

//** Define o mnemonico push par

//**
#define led1
#define led2

LATBbits.LATB0 //define o bit RB0 como sada


LATBbits.LATB1 //define o bit RB1 como sada

//**
INICIA OS REGISTRADORES
//**
void inic_regs(void)
{
OSCCON =
0b01100000;
TRISA =
0b11111111;
RTA como entrada
TRISB =
0b00000000;
RTB como sada
TRISC =
0x0F;
TRISD =
0x00;
sada
TRISE =
0x00;
sada;
ADCON1 =
0b00001111;
RCON
=
0b00000000;
de prioridades de interrupes
INTCON =
0b10100000;
s gerais e int externa em rb0
T0CON =
0b10000110;
escaler ativado, 1:128
PORTA =
0;
PORTB =
0;
PORTC =
0;
PORTD =
0;
PORTE =
0;
TMR0L = 0b01101001;
TMR0H = 0b00110011;
e TMR0 com o valor a ser descontado para chegar

//** configura clock em 4MHz


//** configura todo o PO
//** configura todo o PO
//** configura todo o PORTD como
//** configura todo o PORTE como
//** desabilita sistema
//** habilita chave de interrupoe
//** Habilita Timer0, 16bits, pr
//**
//**
//**
//**
//**

limpa
limpa
limpa
limpa
limpa

o
o
o
o
o

PORTA
PORTB
PORTC
PORTD
PORTE

// Inicializa os registradores d
em 5s

void main(void)
{
inic_regs();
led1 = 1;
led2 = 1;
while (push ==0)
{
btApertado=0;
}
while (push ==1)
{
btApertado=1;
}
Delay1KTCYx(1);
// Debounce delay
led1 = 0;
while(1)
{
while (push ==0)
{
btApertado=0;

}
while (push ==1)
{
btApertado=1;
}
led2 = 0;
led1 = 0;
while (push ==0)
{
btApertado=0;
}
while (push ==1)
{
btApertado=1;
}
led2 = 1;
led1 = 0;
}
}
#pragma code
int_h = 0x00008
para altas prioridades
#pragma interrupt
trata_interrupcao

//** endereo do vetor de interrupes


//** tratamento de interrupo

void trata_interrupcao(void)
{
if(btApertado == 0)
{
contador=contador+1;
}
else
{
contador=0;
}
if
(contador ==5)
led1=1;
else{}
TMR0L = 0b01101001;
TMR0H = 0b00110011;
// Inicializa os registradores de TMR0 c
om o valor a ser descontado para chegar em 5s
INTCONbits.TMR0IF = 0;
}

You might also like