Projeto em C
#include
#include
#include
#include "C:\pic_h\config_PIC18F4550.h"
#include "C:\pic_h\biblioteca_lcd_2x16.h"
#include
#define VERDE PORTBbits.RB2
#define VERDE1 PORTAbits.RA1
#define AMARELO PORTAbits.RA5
#define AMARELO1 PORTAbits.RA2
#define VERMELHO PORTBbits.RB1
#define VERMELHO1 PORTAbits.RA3
#define GREEN PORTCbits.RC0
#define AMARILO PORTCbits.RC1
#define RED PORTCbits.RC2
#define Vermelhopedestre PORTCbits.RC4
#define verdepedestre PORTCbits.RC5
#define Fosc 20//Define frequencia do oscilador
//unsigned char contador = 0;
//unsigned char buffer[16];
unsigned char parada = 0;
//#define LED LATEbits.LATE0 // define a saída do led
#pragma interrupt_level 1 void interrupt ISR_alta_prioridade (void){ //LED = ~ LED; //inverte o valor do led parada = 1; INTCONbits.INT0IF = 0; // Limpa o flag de ativação da interrupçãp //contador ++; // incrementa o contador em 1, sempre que a interrupção é gerada
}
void config_int0 (void){ RCONbits.IPEN = 1; // Habilita interrupção com nível de prioridade. End 0x08 - alta e 0x18 - baixo INTCONbits.GIEH = 1; // Habilita todas as interrupções de alta prioridade INTCONbits.GIEL = 0; // Desabilita todas as interrupções de baixa prioridade
INTCONbits.INT0IE = 1; // Ativa a inerrupção externa INT0 (RB0) INTCON2bits.INTEDG0 = 0; // Interrupção externa INT0 na borda de descida INTCONbits.INT0IF = 0; // Limpa o flag bit da interrupção externa INT0 } void gera_atraso_segundos(unsigned char atraso)
{
do { Delay10KTCYx(20*Fosc/4);//gera segundos de atraso Delay10KTCYx(20*Fosc/4);//gera segundos de atraso Delay10KTCYx(20*Fosc/4);//gera segundos de atraso Delay10KTCYx(20*Fosc/4);//gera segundos de atraso Delay10KTCYx(20*Fosc/4);//gera segundos de atraso atraso--; } while(atraso>0);
}
int main (void) { TRISA =