Ir ao conteúdo

Executar função após duas entradas simultâneas CCS


tehuan

Posts recomendados

Postado

Amigos minha dúvida é a seguinte: 

Eu quero executar uma função após duas entradas simultânes no PIC 16f628a.

 

Minha ideia:

if (input(pin_a0))   // E também pino a1   {x=1;}

Abração a todos!

 

Agradecido desde já!

Postado

@MatheusLPS!

 

Boa tarde meu amigo. Obrigado pela ajuda!

Meu problema ainda persiste mas não sei se é algo relacionado a eletronica ou ao código. Eu estou tentando exibir um número em um dysplay de sete segmentos através de um dipswitch de 3 chaves. Por exemplo chave 1 e 2 ligadas exibem o número 4.

 

Trew1lj.png

 

Meu código

#include <16f628a.h>#FUSES NOWDT                    //No Watch Dog Timer#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT#FUSES PUT                      //Power Up Timer#FUSES PROTECT                  //Code protected from reads#FUSES NOBROWNOUT               //No brownout reset#FUSES NOMCLR                   //Master Clear pin used for I/O#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O#FUSES CPD                      //Data EEPROM Code Protected#use delay(clock=4000000)#define leda pin_b0           //LED A DO DISPLAY PINO 6 NO PIC#define ledb pin_b1           //LED B DO DISPLAY PINO 7 NO PIC             #define ledc pin_b2           //LED C DO DISPLAY PINO 8 NO PIC#define ledd pin_b3           //LED D DO DISPLAY PINO 9 NO PIC#define lede pin_b4           //LED E DO DISPLAY PINO 10 NO PIC#define ledf pin_b5           //LED F DO DISPLAY PINO 11 NO PIC#define ledg pin_b6           //LED G DO DISPLAY PINO 12 NO PIC#define ledpd pin_b7          //LED PD DO DISPLAY PINO 13 NO PIC#define terra1  pin_A6        //TERRA DISPLAY 1 PINO 15 NO PIC#define terra2  pin_A7        //TERRA DISPLAY 2 PINO 16 NO PIC#define terra3  pin_A3        //TERRA DISPLAY 3 PINO 02 NO PIC#define liga output_high      #define desliga output_low#define frame 10int preco = 0;void digito_000(){   liga(leda);   liga(ledb);   liga(ledc);   liga(ledd);   liga(lede);   liga(ledf);   desliga(ledg);   liga(ledpd);   liga(terra1);   delay_ms (frame);   desliga(terra1);      liga(leda);   liga(ledb);   liga(ledc);   liga(ledd);   liga(lede);   liga(ledf);   desliga(ledg);   desliga(ledpd);   liga(terra2);   delay_ms (frame);   desliga(terra2);      liga(leda);   liga(ledb);   liga(ledc);   liga(ledd);   liga(lede);   liga(ledf);   desliga(ledg);   desliga(ledpd);   liga(terra3);   delay_ms (frame);   desliga(terra3);  }void digito_100(){   desliga(leda);   liga(ledb);   liga(ledc);   desliga(ledd);   desliga(lede);   desliga(ledf);   desliga(ledg);      liga(ledpd);    liga(terra1);   delay_ms (frame);   desliga(terra1);      liga(leda);   liga(ledb);   liga(ledc);   liga(ledd);   liga(lede);   liga(ledf);   desliga(ledg);   desliga(ledpd);   liga(terra2);   delay_ms (frame);   desliga(terra2);      liga(leda);   liga(ledb);   liga(ledc);   liga(ledd);   liga(lede);   liga(ledf);   desliga(ledg);   desliga(ledpd);   liga(terra3);   delay_ms (frame);   desliga(terra3);  }void digito_200(){   liga(leda);   liga(ledb);   desliga(ledc);   liga(ledd);   liga(lede);   desliga(ledf);   liga(ledg);      liga(ledpd);    liga(terra1);   delay_ms (frame);   desliga(terra1);      liga(leda);   liga(ledb);   liga(ledc);   liga(ledd);   liga(lede);   liga(ledf);   desliga(ledg);   desliga(ledpd);   liga(terra2);   delay_ms (frame);   desliga(terra2);      liga(leda);   liga(ledb);   liga(ledc);   liga(ledd);   liga(lede);   liga(ledf);   desliga(ledg);   desliga(ledpd);   liga(terra3);   delay_ms (frame);   desliga(terra3);  }void digito_300(){   liga(leda);   liga(ledb);   liga(ledc);   liga(ledd);   desliga(lede);   desliga(ledf);   liga(ledg);      liga(ledpd);    liga(terra1);   delay_ms (frame);   desliga(terra1);      liga(leda);   liga(ledb);   liga(ledc);   liga(ledd);   liga(lede);   liga(ledf);   desliga(ledg);   desliga(ledpd);   liga(terra2);   delay_ms (frame);   desliga(terra2);      liga(leda);   liga(ledb);   liga(ledc);   liga(ledd);   liga(lede);   liga(ledf);   desliga(ledg);   desliga(ledpd);   liga(terra3);   delay_ms (frame);   desliga(terra3);  }void digito_400(){   desliga(leda);   liga(ledb);   liga(ledc);   desliga(ledd);   desliga(lede);   liga(ledf);   liga(ledg);      liga(ledpd);    liga(terra1);   delay_ms (frame);   desliga(terra1);      liga(leda);   liga(ledb);   liga(ledc);   liga(ledd);   liga(lede);   liga(ledf);   desliga(ledg);   desliga(ledpd);   liga(terra2);   delay_ms (frame);   desliga(terra2);      liga(leda);   liga(ledb);   liga(ledc);   liga(ledd);   liga(lede);   liga(ledf);   desliga(ledg);   desliga(ledpd);   liga(terra3);   delay_ms (frame);   desliga(terra3);  }#int_TIMER0void  TIMER0_isr(void) {   switch (preco)      {            case 0:                 //CASO A VARIÁVEL PRECO ASSUMA VALOR 0                        {               digito_000();     //CHAMA A FUNÇÃO DIGITO_000               break;            }                     case 1:                 //CASO A VARIÁVEL PRECO ASSUMA VALOR 1                        {               digito_100();     //CHAMA A FUNÇÃO DIGITO_100               break;            }                      case 2:                 //CASO A VARIÁVEL PRECO ASSUMA VALOR 2                        {               digito_200();     //CHAMA A FUNÇÃO DIGITO_200               break;            }                    case 3:                 //CASO A VARIÁVEL PRECO ASSUMA VALOR 3                        {               digito_300();     //CHAMA A FUNÇÃO DIGITO_300               break;            }                    case 4:                 //CASO A VARIÁVEL PRECO ASSUMA VALOR 4                        {               digito_400();     //CHAMA A FUNÇÃO DIGITO_400               break;            }             set_timer0(0);      }}void main(){     desliga (terra1); //INICIA O PROGRAMA COM O PINO 15 TERRA DO DISPLAY 1 DESLIGADO   desliga (terra2); //INICIA O PROGRAMA COM O PINO 16 TERRA DO DISPLAY 2 DESLIGADO   desliga (terra3); //INICIA O PROGRAMA COM O PINO 02 TERRA DO DISPLAY 3 DESLIGADO   setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_1);      enable_interrupts(INT_TIMER0);   enable_interrupts(GLOBAL);   //TODO: User Code   while(true){      if (input(pin_a0))      {         preco = 1;         }      else if (input(pin_a1))      {         preco = 2;      }      else if (input(pin_a2))      {         preco = 3;      }      else if ((input(pin_a0)) && (input(pin_a1)))      {         preco = 4;      }      else      {         preco = 0;    }   }}

Abração meu amigo agradeço a força!

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!