HELLO WORD COM PIC16F628A – COMO FAZER UM
LED PISCAR
Para essa experiência
você precisa criar um projeto no MPLAB ou MPLAB-X e
inserir as linhas abaixo dentro do arquivo “main.c”. O
programa foi ricamente comentado para ajudá-lo a
compreender o seu “funcionamento”.
Listagem main.c
//****************************************************************************** // Projeto Hello World para placa PE-PIC16F628A // Desenvolvido por: Eng. Márcio José Soares // // V1.0 - 05/09/2022 // // Compilador: XC8 v2.45 // IDE : MPLABX 6.0 Linux // Plataforma: placa PE-PIC16F628A com PIC16F648A // Gravador : PICKIT3 // // Pinos utilizados: // RB4 : LED5 (Hello World) // //******************************************************************************
//****************************************************************************** // Bits de configuração #pragma config FOSC = INTOSCIO // Bits de seleção do oscilador (Oscilador interno: RA6 e RA7 como I/O) #pragma config WDTE = OFF // WDT disabilitado #pragma config PWRTE = ON // Power-up Timer disabilitado #pragma config MCLRE = ON // MCLR = I/O RA5 #pragma config BOREN = OFF // Brown-out Detect BOD disabilitado #pragma config LVP = OFF // Low-Voltage Programming desabilitado - I/O RB4 #pragma config CPD = OFF // Data EE Memory Code Protection desabilitado #pragma config CP = OFF // Flash Program Memory Code Protection desabilitado
//****************************************************************************** // Se nenhuma freqüência foi definida, assume 4MHz // Esta definição é exigida para calibrar as funções __delay_us() e __delay_ms() #define _XTAL_FREQ 4000000
//****************************************************************************** // Inclui arquivos #include <xc.h>
//****************************************************************************** // Definições importantes do módulo #define LED PORTBbits.RB4 #define TRUE 1
//****************************************************************************** // Função principal // // Entradas - nenhuma // Saídas - nenhuma //****************************************************************************** void main(void) { PORTA = 0; // zera ports PORTB = 0; INTCON = 0x00; // Todas as ints desligadas CMCON = 0x07; // desliga comparadores TRISA = 0xFF; // Configura PORT A - entrada TRISB = 0x00; // Configura PORT B - saída LED = 0; while(TRUE){ LED ^= 0x01; // inverte o estado do pino __delay_ms(500); // temporiza } return; }
|
Após digitar o
programa, compile-o e grave-o no microcontrolador PIC
presente na placa PE-PIC16F628A. O jumper JP3 precisa
estar fechado, caso contrário o LED não piscará!
Neste programa LED é
definido como pino RB4. Você percebeu que o LED pisca a
cada 500ms?! Ele se mantêm aceso por 0,5s e apagado por
0,5s. Isso é obtido através da lógica “XOR” realizada
através da linha LED ^= 0x01 (LED = LED XOR 1). Dessa
forma o estado do bit é invertido sempre. Note que o LED
é inicializado com 0, então:
0 xor 1 = 1;
1 xor 1 = 0;
Desafios:
- Faça o LED2 piscar ao invés do
LED5?!
- Faça o LED2 e o LED5 piscarem de
forma alternada (quando LED2 estiver aceso, LED5 deve
estar apagado e vice-versa)
|