Você está na página 1de 10

Universidade Nove de Julho

Departamento de Exatas
Disciplina
Professor:

Experincia N
Curso:

Identificao dos alunos


1

Campus:

Turma:

Data: ____/_____/_____

Prof Laboratrio:

Visto Prof:

Nota 1: O aluno dever fazer as adaptaes necessrias em funo do microcomtrolador ou


dos recursos didticos disponveis

Captulo 4 - Experincia 2 Contador Simplificado

Objetivo
O objetivo desta experincia ensinar os recursos de software comumente utilizados para
tratamento de debounce de teclas e a manipulao de variveis declaradas na RAM do
microcontrolador.

Descrio
O software faz uso do grupo de leds para representar de forma binria o valor da varivel
CONTADOR declarada na RAM do microcontrolador. Utilizando o boto da linha 4 coluna 1
altera-se o valor da varivel atravs de instrues de incremento e decremento. O valor est
limitado por constantes declaradas no incio do cdigo. Como apenas um boto utilizado, a
varivel incrementada at o valor mximo e em seguida decrementada at o valor mnimo,
permanecendo neste looping indefinidamente. Foi utilizado um flag para alterar o sentido da
contagem sempre que um dos extremos atingido.
Foi feito o tratamento de debounce da tecla que consiste em testar repetidas vezes se a
tecla foi realmente pressionada para somente depois executar a ao correspondente.
Sempre que a tecla estiver solta o contador de debounce (varivel FILTRO) inicializado e
sempre que a tecla for pressionada o valor da varivel FILTRO decrementado, de forma
que a tecla somente considerada pressionada quando o valor de FILTRO for igual a zero.

26

Esquema Eltrico

Manual do Usurio Sistema de Treinamento em Microcontroladores PIC McMaster rev5 2010

27

Fluxograma

INCIO

VETOR DE RESET
PULA P/ INCIO DO
PROGRAMA
CONFIGURAES INICIAIS
PORTAS, TIMERS,
INTERRUPES, OPTION, ADs.

HABILITA LEDS

ATIVA LINHA 4 DO
TECLADO MATRICIAL

CARREGA CONTADOR
COM VALOR MNIMO

ATUALIZA LEDS

RECARREGA FILTRO DE
DEBOUNCE

No

BOTO
PRESS.?

DECREMENTA FILTRO

FILTRO=0?

Sim
1

28

Sim

SENTIDO=1?

No

DECREMENTA
CONTADOR

CONTADOR<MN?

INCREMENTA
CONTADOR

No

No

CONTADOR>MX?

Sim

Sim

INCREMENTA
CONTADOR

DECREMENTA
CONTADOR

SENTIDO = 0

SENTIDO = 1

ATUALIZA LEDS

No

BOTO
LIBERADO?
Sim
2

Manual do Usurio Sistema de Treinamento em Microcontroladores PIC McMaster rev5 2010

29

Cdigo
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Exemplo de Cdigo para utilizao com a McMaster
*
*
Exemplo 2
*
*
*
*
LABTOOLS - MOSAICO DIDACTIC DIVISION
*
*
*
* TEL: (0XX11) 4992-8775
SITE: www.labtools.com.br
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
VERSO : 1.0
*
*
DATA : 18/01/2010
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Descrio geral
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
//Este exemplo mostra um contador simplificado
/*
CONFIGURAO DOS JUMPERS DA PLACA:
CAP USB(RC3)
DATA I2C
CLOCK I2C
COLUNA 2(RB1)
COLUNA 1(RB0)
LINHA 1 / DISPLAY MILHAR(RB4)
LEDS ESPECIAS (RC0,RC1,RC2)

->
->
->
->
->
->
->

ON
OFF
OFF
ON
ON
ON
ON

*/
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
DEFINIO PIC
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <p18F4550.h>

// Register definitions

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
INCLUDES DAS FUNES DE PERIFRICOS DO PIC
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include
#include
#include
#include
#include
#include
#include

<pwm.h>
<adc.h>
<timers.h>
<delays.h>
<i2c.h>
<stdlib.h>
<usart.h>

//PWM library functions


//ADC library functions
//Timer library functions
//Delay library functions
//I2C library functions
//Library functions
//USART library functions

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Configuraes para gravao
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma

30

config
config
config
config
config
config
config
config
config
config
config
config
config
config

FOSC = HS
CPUDIV = OSC1_PLL2
WDT = OFF
WDTPS = 128
LVP = OFF
PWRT = ON
BOR = OFF
BORV = 0
PBADEN = OFF
DEBUG = OFF
PLLDIV = 1
USBDIV = 1
FCMEN = OFF
IESO = OFF

#pragma
#pragma
#pragma
#pragma
#pragma
#pragma

config
config
config
config
config
config

VREGEN = OFF
MCLRE = ON
LPT1OSC = OFF
CCP2MX = ON
STVREN = OFF
ICPRT = OFF

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Definio e inicializao das variveis Globais
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
//Neste bloco esto definidas as variveis globais do programa.
struct flags
{
unsigned char BIT0 :1;
unsigned char BIT1 :1;
unsigned char BIT2 :1;
unsigned char BIT3 :1;
unsigned char BIT4 :1;
unsigned char BIT5 :1;
unsigned char BIT6 :1;
unsigned char BIT7 :1;
};
unsigned char
unsigned char

CONTADOR;
FILTRO;

struct flags FLAG_0;


/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Constantes internas
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
//A definio de constantes facilita a programao e a manuteno.
#define
#define

MIN
MAX

10
30

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Declarao dos flags de software
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
//A definio de flags ajuda na programao e economiza memria RAM.
#define
#define
#define

sentido
C_LEDS
LINHA_4

FLAG_0.BIT0
LATAbits.LATA4
LATBbits.LATB4

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Definio e inicializao dos port's
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
PROTOTIPAGEM DE FUNES
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* * * * * * * * * *
*
* * * * * * * * * *
// As entradas devem
//futuras alteraes

* * * * * * * * * * * * * * * * * * * * * * * * * *
ENTRADAS
* * * * * * * * * * * * * * * * * * * * * * * * * *
ser associadas a nomes para facilitar a programao
do hardware.

#define BOTAO PORTBbits.RB0

*
*
*/
e

//PORTA DO BOTO
//1 -> PRESSIONADO
//0 -> LIBERADO

/* * * * * * * * * * * * * * * * *
*
* * * * * * * * * * * * * * * * *
//As sadas devem ser associadas a
//futuras alteraes do hardware.

* * * * * * * * * * * * * * * * * * *
SADAS
*
* * * * * * * * * * * * * * * * * * */
nomes para facilitar a programao e

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Funo Principal
*

Manual do Usurio Sistema de Treinamento em Microcontroladores PIC McMaster rev5 2010

31

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void main
{
PORTA
PORTB
PORTC
PORTD
PORTE
LATA
LATB
LATC
LATD
LATE

()
=
=
=
=
=

=
=
=
=
=

TRISA
TRISB
TRISC
TRISD
TRISE

0x00;
0x00;
0x00;
0x00;
0x00;

0x00;
0x00;
0x00;
0x00;
0x00;

=
=
=
=
=

0b00101111;
0b00001111;
0b10011001;
0b00000000;
0b00000000;

ADCON1 = 0b00001111;

//Limpa
//Limpa
//Limpa
//Limpa
//Limpa

PORTA
PORTB
PORTC
PORTD
PORTE

//Limpa
//Limpa
//Limpa
//Limpa
//Limpa

PORTA
PORTB
PORTC
PORTD
PORTE

//CONFIG
//CONFIG
//CONFIG
//CONFIG
//CONFIG

DIREO
DIREO
DIREO
DIREO
DIREO

DOS
DOS
DOS
DOS
DOS

PINOS
PINOS
PINOS
PINOS
PINOS

PORTA
PORTB
PORTC
PORTD
PORTE

//DESLIGA CONVERSORES A/D

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Inicializao do Sistema
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
C_LEDS = 1;

//ATIVA LEDS LIGADOS AO PORTD

LINHA_4 = 1;

//ATIVA LINHA 4 DO TECLADO MATRICIAL

sentido = 0;
CONTADOR = MIN;
PORTD = CONTADOR;
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Rotina Principal
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
while(1)
{
ClrWdt();
FILTRO = 200;
if(!BOTAO) continue;
while(BOTAO)
{
ClrWdt();
FILTRO--;
if(FILTRO) continue;
else break;
}
if(sentido == 0)
{
CONTADOR++;
if(CONTADOR > MAX)
{
CONTADOR--;
sentido = 1;
continue;
}
}
else
{
CONTADOR--;
if(CONTADOR < MIN)
{
CONTADOR++;
sentido = 0;
continue;
}

32

}
PORTD = CONTADOR;
while(BOTAO) ClrWdt();
}
}

// FIM DO PROGRAMA

Manual do Usurio Sistema de Treinamento em Microcontroladores PIC McMaster rev5 2010

33

Dicas e Comentrios
O tempo do debounce pode ser calculado pelo tempo de execuo da varredura da tecla
multiplicado pelo valor inicial da varivel de filtro. No exemplo estudado o tempo de debounce
de 1,15ms e foi calculado seguindo a equao abaixo:
Tempo de Debounce = ciclo de mquina X nmero de ciclos de mquina na varredura da
tecla X valor inicial da varivel FILTRO
Tempo de Debounce = 1us x 5 x 230
Tempo de Debounce = 1150us = 1,15ms
No existe uma regra para calcular o tempo ideal que deva ser utilizado no debounce de
teclas. Isso ir depender do projeto, do tipo de tecla em utilizao, do ambiente de trabalho
onde o sistema ir operar, etc. Na prtica, tempos longos da ordem de grandeza de dezenas
de milisegundos podem ser necessrios.

Exerccios Propostos
1. Alterar os limites da contagem.
2. Retirar o tratamento de debounce do software e verificar os efeitos prticos.

34

Você também pode gostar

  • Experiência7 PDF
    Experiência7 PDF
    Documento12 páginas
    Experiência7 PDF
    Ricardo Junior
    Ainda não há avaliações
  • Experiência5 PDF
    Experiência5 PDF
    Documento12 páginas
    Experiência5 PDF
    Ricardo Junior
    Ainda não há avaliações
  • Experiência4 PDF
    Experiência4 PDF
    Documento11 páginas
    Experiência4 PDF
    Ricardo Junior
    Ainda não há avaliações
  • Experiência6 PDF
    Experiência6 PDF
    Documento12 páginas
    Experiência6 PDF
    Ricardo Junior
    Ainda não há avaliações
  • Experiência3 PDF
    Experiência3 PDF
    Documento10 páginas
    Experiência3 PDF
    Ricardo Junior
    Ainda não há avaliações
  • Experiência2 PDF
    Experiência2 PDF
    Documento10 páginas
    Experiência2 PDF
    Ricardo Junior
    Ainda não há avaliações
  • Experiência 1
    Experiência 1
    Documento8 páginas
    Experiência 1
    eliasportella
    Ainda não há avaliações
  • Experiência6 PDF
    Experiência6 PDF
    Documento12 páginas
    Experiência6 PDF
    Ricardo Junior
    Ainda não há avaliações
  • Apostila PIC C18 PDF
    Apostila PIC C18 PDF
    Documento118 páginas
    Apostila PIC C18 PDF
    Ricardo Junior
    Ainda não há avaliações
  • Experiência7 PDF
    Experiência7 PDF
    Documento12 páginas
    Experiência7 PDF
    Ricardo Junior
    Ainda não há avaliações
  • Experiência5 PDF
    Experiência5 PDF
    Documento12 páginas
    Experiência5 PDF
    Ricardo Junior
    Ainda não há avaliações
  • Experiência4 PDF
    Experiência4 PDF
    Documento11 páginas
    Experiência4 PDF
    Ricardo Junior
    Ainda não há avaliações
  • Experiência3 PDF
    Experiência3 PDF
    Documento10 páginas
    Experiência3 PDF
    Ricardo Junior
    Ainda não há avaliações
  • Experiência 1
    Experiência 1
    Documento8 páginas
    Experiência 1
    eliasportella
    Ainda não há avaliações
  • Apostila PIC C18 PDF
    Apostila PIC C18 PDF
    Documento118 páginas
    Apostila PIC C18 PDF
    Ricardo Junior
    Ainda não há avaliações