Ir ao conteúdo
  • Cadastre-se

ceciliaellen

Membros Juniores
  • Total de itens

    2
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. Olá boa tarde! estou desenvolvendo uma "roleta do bota fogo" porém no momento da execução do programa não consigo achar o erro. Se alguém conseguir desvendar este problema me ajudem por favor. veja a seguir a característica do programa e o meu já feito. Já para entrada de dados são utilizadas três chaves push-button que fazem o papel de roletas (ROL0 – ROL2). Quando pressionada corresponderá à entrada de uma pessoa na respectiva roleta. A seleção de público (total/individual) que será apresentado nos displays, é determinada pela combinação de duas chaves on-off (Sel0 e Sel1), conforme a seguinte tabela: Sel1 Sel0 Público que passou pela 0 0 Total 0 1 Roleta 1 1 0 Roleta 2 1 1 Roleta 3  Programa principal:  Configurar as portas 1 e 2 para correto funcionamento do sistema;  Monitorar as entradas do sistema para realizar a contagem de pessoas que passam pelas roletas;  Detectar o estouro de capacidade de público do estádio;  Monitorar qual a informação que será exibida nos displays em função da seleção das chaves (Sel0 e Sel1);  Chamar a função mostra_display para apresentar o público relativo a combinação das chaves Sel0 e Sel1.  Função mostra_display  Recebe o público como parâmetro e mostra nos displays o respectivo valor. #include "<msp430x20x3.h>" // SOMA,ROLETA1,ROLETA2,ROLETA3 unsigned char ROLETAS[4]={0,0,0,0}; // 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 unsigned char cod[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F}; unsigned char valor = 0; /*------------------------------------------------------------------------------ ;NOME: TEMPO ;DESCRICAO: FAZ UMA CONTA DE 65535. ;ENTRADA: - ;SAIDA: - ;------------------------------------------------------------------------------ */ void tempo() { unsigned int cont=0xffff; while(cont!=0) cont=cont-1; } /*------------------------------------------------------------------------------ ;NOME: MOSTRA_DISPLAY ;DESCRICAO: APRESENTA EM DOIS DISPLAYS DE 7 SEGMENTOS O VALOR DA DEZENA E UNIDADE DE QUALQUER NÚMERO DE 2 DÍGITOS DECIMAL ;ENTRADA: valor - NÚMERO EM HEXADECIMAL QUE SERÁ MOSTRADO ;SAIDA: - ;------------------------------------------------------------------------------ */ void mostra_display(unsigned char valor) { unsigned char unidade=valor,dezena=0; while (unidade > 9) { dezena=dezena+1; unidade=unidade-10; } P2OUT=cod[unidade]; P1OUT|= 0x01; tempo(); P1OUT&=0xFE; P2OUT=cod[dezena]; P2OUT|= 0x80; tempo(); } // multiplexação dos displays /*------------------------------------------------------------------------------ ;NOME: ROLETA 1 ;DESCRICAO: Contagem de quantas pessoas passaram pela roleta 1 ;ENTRADA: P1IN = 0x20 ;SAIDA: ROLETAS[1] ;------------------------------------------------------------------------------ */ void ROLETA1 (void) { if((P2IN&0x00)==0x00) { tempo(); ROLETAS[1]++; return; } else return; } /*------------------------------------------------------------------------------ ;NOME: ROLETA 2 ;DESCRICAO: Contagem de quantas pessoas passaram pela roleta 2 ;ENTRADA: P1IN = 0x40 ;SAIDA: ROLETAS[2] ;------------------------------------------------------------------------------ */ void ROLETA2 (void) { if((P2IN&0x02)==0x00) { tempo(); ROLETAS[2]++; return; } else return; } /*------------------------------------------------------------------------------ ;NOME: ROLETA 3 ;DESCRICAO: Contagem de quantas pessoas passaram pela roleta 3 ;ENTRADA: P1IN = 0x80 ;SAIDA: ROLETAS[3] ;------------------------------------------------------------------------------ */ void ROLETA3 (void) { if((P2IN&0x04)==0x00) { tempo(); ROLETAS[3]++; return; } else return; } /*------------------------------------------------------------------------------ ;NOME: SOMA ;DESCRICAO: soma das roletas 1, 2 e 3 ;ENTRADA: ROLETAS[1], ROLETAS[2], ROLETAS[3] ;SAIDA: ROLETA [0] ;------------------------------------------------------------------------------ */ void SOMA () { ROLETAS[0]=ROLETAS[1]; ROLETAS[0]+=ROLETAS[2]; ROLETAS[0]+=ROLETAS[3]; } /*------------------------------------------------------------------------------ ;NOME: SELECIONA ;DESCRICAO: seleciona o que será mostrado no display de acordo com as chaves selecionadas ;ENTRADA: - ;SAIDA: - ;------------------------------------------------------------------------------ */ void SELECIONA (void) { unsigned char chaves = P1IN; chaves&=0x18; switch(chaves) { case 0x00: // quando as chaves estiverem em 00, vai mostrar a soma das roletas valor = ROLETAS[0]; break; case 0x08: // quando as chaves estiverem em 01, vai mostrar a roleta 1 valor = ROLETAS[1]; break; case 0x10: // quando as chaves estiverem em 10, vai mostrar a roleta 2 valor = ROLETAS[2]; break; case 0x18: // quando as chaves estiverem em 11, vai mostrar a roleta 3 valor = ROLETAS[3]; break; } } /*------------------------------------------------------------------------------ */ int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1DIR&=0x07; P1DIR|=0x01; P2DIR=0xFF; P1REN=0xF8; P1OUT=0xF8; while(1) { ROLETA1(); ROLETA2(); ROLETA3(); SOMA(); SELECIONA(); mostra_display(valor); if (ROLETAS[0]>4) { while(1) { SELECIONA(); mostra_display(valor); } } } }
  2. Estou com muita duvida na hora de realizar o código. Alguém pode me ajudar por favor.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×