Você está na página 1de 5

1.

Experincia - Leitura de uma tecla e acionamento de um led

1.1. 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. 1.2. 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. 1.3. Diagrama Eltrico

1.4. Fluxograma

1.5. Cdigo /****************************************************************************** * * Curso PIC18 de Microcontroladores (PIC18F4520) * ****************************************************************************** * Nome do Arquivo: main.c * Dependncias: Veja a seo INCLUDES abaixo * Processador: PIC18F4520 * Opo de Clock: HS 20MHz (externo) - CPU:5MHz * Compilador: C18 v3.39 ou superior * Empresa: SENAI/CETEL * Plataforma: Kit CETEL v1.0 * Prtica: Prtica 1 - Leitura de uma tecla e acionamento de um led *****************************************************************************/ /** I N C L U D E S **********************************************************/ #include <p18f4520.h> // Necessrio para que o compilador adicione a biblioteca // com as definies do PIC selecionado no projeto, neste // caso, o modelo 18F4520. /** P A L A V R A S D E C O N F I G U R A O **************************/ #pragma config OSC = HS // Oscilador HS (High Speed) #pragma config PWRT = ON // Habilita Power-up Timer #pragma config BOREN = OFF // Desabilita o Brown-Out-Reset #pragma config WDT = OFF // Watch-dog Timer desabilitado #pragma config LVP = OFF // Desabilita programao por baixa tenso #pragma config DEBUG = OFF // Desabilita modo de DEGUB /** D E F I N E S ***********************************************************/ #define BOTAO PORTBbits.RB0 //Estado Led: //1 = aceso //0 = apagado #define LED PORTDbits.RD0 //Estado Led: //1 = aceso //0 = apagado PORTBbits.RB1 //Pino para ativar linha 1 do teclado matricial //1 = linha ativada //0 = linha desativada

#define COL_1

/** V A R I A V E I S G L O B A I S ****************************************/

/** P R O T O T I P O S P R I V A D O S ***********************************/ void MCU_init(void);

/** F U N C O E S ************************************************************/ /****************************************************************************** * Funcao: void main(void) * Entrada: Nenhuma (void) * Sada: Nenhuma (void) * Descrio: Funo principal do programa. O termo "main" significa * principal, e isto relacionado a esta funo, pois eh a * mesma a primeira a ser chamada aps o reset do PIC. * Todas as outras funes so chamadas a partir da "main". *****************************************************************************/ void main(void) { MCU_init(); COL_1 = 1; while(1) // Lao infinito que executa o funcionamento principal do projeto. { if(BOTAO) LED=1; // testa boto. Se boto = 1, ento led = 1 else LED = 0; // caso contrrio, led = 0 } }//end main /****************************************************************************** * Funcao: void MCU_init(void) * Entrada: Nenhuma (void) * Sada: Nenhuma (void) * Descrio: MCU_init a rotina de configurao principal do PIC. * Seu objetivo configurar as portas de I/O e os perifricos * do microcontrolador para que os mesmos trabalhem da maneira * desejada no projeto. * *****************************************************************************/ void MCU_init(void) { TRISBbits.TRISB0 = 1;//Configura pino RD0 como sada TRISBbits.TRISB1 = 0;//Configura pino RD1 como sada TRISDbits.TRISD0 = 0;//Configura pino RC0 como sada ADCON1 = 0x0F; //Desliga conversores A/D PORTB = 0; PORTD = 0; }//end MCU_init

1.6. Exerccios Propostos

1) Altere a lgica do sistema, ou seja, com o boto pressionado o led deve permanecer 2)
apagado e com o boto liberado o led deve permanecer acesso. Altere o software para ligar/desligar outro led, por exemplo, o led ligado ao pino RD3.

2.

Experincia Contador simplificado