Você está na página 1de 8

Universidade Nove de Julho

Departamento de Exatas
Disciplina
Professor:

Experincia N 1
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 3 - Experincia 1 - Leitura de uma tecla e acionamento de um led


Objetivo
O objetivo desta experincia ensinar ao aluno os primeiros passos sobre o
microcontrolador. apresentado o modo de configurao dos pinos de I/Os e as primeiras
instrues utilizadas para testar condies nos pinos de entrada e alteraes de estado nos
pinos de sada, alm de instrues para controle do fluxo do programa.

Descrio
Sistema muito simples para representar o estado de um boto atravs de um led. Com o
boto pressionado o led ligado e com o boto solto o led apagado.
O software inicia configurando os pinos de I/Os atravs dos registradores TRIS e dos
registradores de perifricos pertinentes. Em seguida, o software habilita a linha 4 do teclado
matricial e o grupo de leds ligados ao PORTD. A partir da, o software entra num loop infinito
onde o boto da linha 1 coluna 4 testado e seu estado reproduzido no led 0 ligado ao pino
RD0.

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

19

Esquema Eltrico

20

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

BOTO
PRESS.?

No

Sim
ACENDE LED

APAGA LED

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

21

Cdigo
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Exemplo de Cdigo para utilizao com a McMaster
*
*
Exemplo 1
*
*
*
*
LABTOOLS - MOSAICO DIDACTIC DIVISION
*
*
*
* TEL: (0XX11) 4992-8775
SITE: www.labtools.com.br
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
VERSO : 1.0
*
*
DATA : 18/01/2010
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Descrio geral
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// Este software est preparado para demonstrar o controle dos pinos de I/O
// este primeiro programa demonstrar o estado de um boto por meio de um led.
/*
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
#pragma

22

config
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
VREGEN = OFF

#pragma
#pragma
#pragma
#pragma
#pragma

config
config
config
config
config

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.
//Este programa no utiliza nenhuma varivel de usurio
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Constantes internas
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
//A definio de constantes facilita a programao e a manuteno.
//Este programa no utiliza nenhuma constante de usurio
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Declarao dos flags de software
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
//A definio de flags ajuda na programao e economiza memria RAM.
//Este programa no utiliza nenhum flag de usurio
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
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

#define

LED

PORTDbits.RD0

//PORTA DO LED
//0 -> APAGADO
//1 -> ACESO

#define

C_LEDS

PORTAbits.RA4

//PINO PARA ATIVAR GRUPO DE 8 LEDS


//1 -> LEDS ATIVADOS
//0 -> LEDS DESATIVADOS

#define

LINHA_4

PORTBbits.RB7

//PINO PARA ATIVAR LINHA 4 DO TECLADO


//MATRICIAL
//1 -> LINHA ATIVADA
//0 -> LINHA DESATIVADA

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
Funo Principal
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void main
{
PORTA
PORTB
PORTC
PORTD
PORTE

()
=
=
=
=
=

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

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

PORTA
PORTB
PORTC
PORTD
PORTE

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

23

LATA
LATB
LATC
LATD
LATE

=
=
=
=
=

TRISA
TRISB
TRISC
TRISD
TRISE

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

=
=
=
=
=

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

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

ADCON1 = 0b00001111;

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;
/* * * * * * * * *
*
* * * * * * * * *
while(1)
{
ClrWdt();
if (BOTAO)
else LED =
}
}

24

//ATIVA LINHA 4 DO TECLADO MATRICIAL


* * * * * * * * * * * * * * * * * * * * * * * * * * *
Rotina Principal
*
* * * * * * * * * * * * * * * * * * * * * * * * * * */

LED = 1;
0;

// FIM DO PROGRAMA

// testa boto. Se boto = 0, ento led = 1


// caso contrrio, led = 0

Dicas e Comentrios
Veja que os pinos do microcontrolador, tanto os de entrada como os de sada so
declarados atravs de DEFINES no incio do software o que facilita futuras alteraes na
pinagem do hardware.
Repare tambm que o exemplo extremamente simples e nenhum tipo de tratamento de
debounce para a tecla foi utilizado.

Exerccios Propostos
1. Altere a lgica do sistema, ou seja, com o boto pressionado o led deve permanecer
apagado e com o boto liberado o led deve permanecer acesso.
2. Altere o software a fim de trocar a tecla ativa, passando por exemplo a utilizar a tecla
da linha 4 coluna 2.
3. Altere o software para ligar/desligar outro led, por exemplo, o led ligado ao pino RD3.

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

25

Você também pode gostar