Ir ao conteúdo
  • Cadastre-se

henriquemati

Membro Júnior
  • Posts

    14
  • Cadastrado em

  • Última visita

Tópicos solucionados

  1. O post de henriquemati em Cronômetro com menu PIC18F4550 utilizando C18 foi marcado como solução   
    ae galera consegui terminar o cronômetro com menu aqui ,mesmo que nao obtive respostas agradeço,e mudei muita coisa da minha prog antiga no C18,....ela ficou assim:
     
    //************************************************************************************************************************** //realizar um cronometro para 12 horas como descrito no bloco de notas na area de trabalho   //**************************************************************************************************************************   //inclui as bibliotecas #include <p18f4550.h>     //biblioteca padrão do microcontrolador #include <delays.h>      // biblioteca padrão dos delays   //**************************************************************************************************************************   //FOSC = 4MHz //define as configuraçoes do microcontrolador #pragma config WDT = OFF       //cao de guarda do tempo reseta pic caso demore para executar uma istrução #pragma config PWRT = ON      //espera o clock instabilizar para inicializar #pragma config BOR = OFF     //brown-on-reset habilita o resset por baixa tensão #pragma config BORV = 0    //tensão de reset do brown-on-reset #pragma config LVP = OFF //programa de tensão baixa para executar com o pic #pragma config MCLRE = OFF //desabilita ou habilita o pino master-clear #pragma config PBADEN = OFF #pragma config STVREN = OFF     //**************************************************************************************************************************   //define os nomes aos pinos das entradas #define B1 PORTAbits.RA0 //botao #define B2 PORTAbits.RA1 //botao #define B3 PORTAbits.RA2 //botao #define B4 PORTAbits.RA3 //botao   //**************************************************************************************************************************   //define os nomes dos pinos das saidas #define D1 PORTBbits.RB0 //display multiplexado #define D2 PORTBbits.RB1 //display multiplexado #define D3 PORTBbits.RB2 //display multiplexado #define D4 PORTBbits.RB3 //display multiplexado #define D5 PORTBbits.RB4 //display multiplexado #define D6 PORTBbits.RB5 //display multiplexado #define DP PORTDbits.RD7 //aciona o decimal-point dos displays   #define LED PORTBbits.RB6 //LED #define BZ PORTBbits.RB7 //BUZZER   unsigned char horasdezena[13] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x67,0x3F,0x06,0x5B}; unsigned char crescente[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x67}; unsigned char dezena[6] = {0x6D,0x66,0x4F,0x5B,0x06,0x3F};   //*******************************************************   unsigned char varu[2] = {0x3F,0x06}; unsigned char varv[13] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x67,0x3F,0x06,0x5B}; unsigned char varw[6] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D}; unsigned char varx[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x67}; unsigned char vary[6] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D}; unsigned char varz[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x67};   int reset,enter,a,b,c,d,u,v,w,x,y,z,cont;   //*******************************************************   void delay() //atraso do multiplex { Delay1KTCYx(2); }   //*******************************************************   void atraso() //atraso do efeito final { Delay10KTCYx(50); }   //*******************************************************   void geral() //menu do menu e da contagem { switch(enter) //switch como menu principal das opções {   case 0: //caso da introdução   while(cont<100) {   LED = 0;   PORTD = 0x3F; //letra O D1 = 1; delay(); D1 = 0; PORTD = 0x39; //letra c + DP DP = 1; D2 = 1; delay(); D2 = 0; PORTD = 0x5B; //n 2 D3 = 1; delay(); D3 = 0; PORTD = 0x3F; //n 0 D4 = 1; delay(); D4 = 0; PORTD = 0x06; //n 1 D5 = 1; delay(); D5 = 0; PORTD = 0x6D; //n 5 D6 = 1; delay(); D6 = 0; cont++;   if(!B1) //função para mudar de caso { while(!B1); //intertravamento do botao enter++; cont = 100; }   if(!B2) //função para mudar de caso { while(!B2); //intertravamento do botao enter++; cont = 100; }   }   cont = 0;   if(!B1) //função para mudar de caso { while(!B1); //intertravamento do botao enter++; }   if(!B2) //função para mudar de caso { while(!B2); //intertravamento do botao enter++; }   cont=0;   break;   //*******************************************************   case 1: //caso da mudança das horas   LED = 1;   PORTD = varu[a]; D1 = 1; delay(); D1 = 0;; PORTD = varv; D2 = 1; delay(); D2 = 0; PORTD = varw[w]; D3 = 1; delay(); D3 = 0; PORTD = varx[x]; D4 = 1; delay(); D4 = 0; PORTD = vary[y]; D5 = 1; delay(); D5 = 0; PORTD = varz[z]; D6 = 1; delay(); D6 = 0;   if(!B1) //otao de ajuste dos valores da variavel { while(!B1); //intertravamento do botao b--; }   if(b<10) { a=0; }   if(b<0) { b=12; a=1; }   if(!B2) //botao para a mudança do caso { while(!B2); //intertravamento do botao enter++; }   break;   //*******************************************************   case 2: //caso do ajuste dos minutos   LED = 1;   PORTD = varu[a]; D1 = 1; delay(); D1 = 0;; PORTD = varv; D2 = 1; delay(); D2 = 0; PORTD = varw[c]; D3 = 1; delay(); D3 = 0; PORTD = varx[d]; D4 = 1; delay(); D4 = 0; PORTD = vary[y]; D5 = 1; delay(); D5 = 0; PORTD = varz[z]; D6 = 1; delay(); D6 = 0;   if(!B1) //botao do ajuste da variavel { while(!B1); d--; } if(c<0) { c=5; d=9; }   if(d<0) { c--; d=9; }   if(!B2) //botao para a mudança do caso { while(!B2); //intertravamento do botao enter++; d--; }   break;   //*******************************************************   case 3: //caso da contagem dos valores selecionados   LED = 0;   for(u=a;u>=0;u--) //variavel horas dezena - a { for(v=b;v>=0;v--) //variavel horas unidade - b { BZ = 1;  for(w=c;w>=0;w--) //variavel minutos dezena - c  {   for(x=d;x>=0;x--) //variavel minutos unidade - d   { for(y=5;y>=0;y--) //variavel segundos dezena { for(z=9;z>=0;z--) //variavel segundos unidade { BZ = 0;   while(cont<28) //travamento do tempo {   if(!B4) //botao de reinicio da contagem { return geral(); } LED = 0;   PORTD = varu; D1 = 1; delay(); D1 = 0;; PORTD = varv[v];   LED = 0;   D2 = 1; delay(); D2 = 0; PORTD = varw[w]; D3 = 1; delay(); D3 = 0; PORTD = varx[x];   LED= 1;   D4 = 1; delay(); D4 = 0; PORTD = vary[y]; D5 = 1; delay(); D5 = 0; PORTD = varz[z];   LED = 1;   D6 = 1; delay(); D6 = 0; cont++; //variavel para determinar os segundos   //***** PAUSA ******   if(!B3) //botao da pausa na contagem { while(!B3) {   LED = 1; BZ = 1;   PORTD = varu; D1 = 1; delay(); D1 = 0;; PORTD = varv[v]; D2 = 1; delay(); D2 = 0; PORTD = varw[w]; D3 = 1; delay(); D3 = 0; PORTD = varx[x]; D4 = 1; delay(); D4 = 0; PORTD = vary[y]; D5 = 1; delay(); D5 = 0; PORTD = varz[z]; D6 = 1; delay(); D6 = 0; }   } } cont=0; //reset da variavel que determina dos segundos } } } } } }   LED = 0; enter++; //apos a contagem muda para o caso final   break;   //*******************************************************   case 4: //caso final do menu   while(1) {   LED = 1; //LED's BZ = 1; //Buzzer   PORTD = 0x79; //letra E D1 = 1; delay(); D1 = 0;; PORTD = 0x54; //letra N D2 = 1; delay(); D2 = 0; PORTD = 0x5E; //letra D BZ = 0; //Buzzer D3 = 1; delay(); D3 = 0; PORTD = 0x00; DP = 1; //decimal-point D4 = 1; delay(); D4 = 0; PORTD = 0x00; BZ = 1; //Buzzer DP = 1; //decimal-point D5 = 1; delay(); D5 = 0; PORTD = 0x00; DP = 1; //decimal-point D6 = 1; delay(); D6 = 0;   if(!B4) { while(!B4); break; } }   reset = 0; //zera a variavel reset enter = 0; //zera a variavel enter   break;   } }     void main() //menu principal de funçoes do pic { /////////////////////   //TRIS define se os pinos serão entradas ou saídas TRISA = 0xFF; TRISB = 0x00; TRISC = 0x00; TRISD = 0x00; TRISE = 0x00;   /////////////////////   //PORT define qual sera o nivel lógico que derao começar os pinos ou ports         PORTA = 0xFF; PORTB = 0x00; PORTC = 0x00; PORTD = 0x00; PORTE = 0x00;   ////////////////////   //define entradas analógicas ou digitas desabilitando os resistores de pull-up ADCON1 = 0x0F;   /////////////////// //variaveis reset = 0; enter = 0; w=0; x=0; y=0; z=0; //********************   a=1; b=12; c=5; d=9;       while(1)   { geral();   } }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!