Professional Documents
Culture Documents
<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
proteo
proteo
proteo
proteo
de
de
de
de
code block
boot block
data eeprom code
escrita
//** cri
//** cria e inic
//**
#define led1
#define led2
//**
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
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
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;
}