×
Ir ao conteúdo
  • Cadastre-se

1hsouza1

Membro Pleno
  • Posts

    22
  • Cadastrado em

  • Última visita

Reputação

3
  1. @.if Obrigado ! Agora funcionou 100% da forma que eu quero ! 👍
  2. @.if Amigo meu objetivo é concatenas essas variáveis: Ex: a = 1, b = 0, c = 0, d = 1, e = 1; Juntando elas em uma única variável ficariam assim 10011
  3. @.if Amigo na compilação em C funcionou, porém em CCS C compiler para microcontroladores não funcionou !
  4. Pessoal gostaria de transformar a entrada dos botões nos pinos B para um codificador, estou com 2 problemas: O 1° é que eu fiz variáveis separadas a, b, c, d, e . Logo depois preciso junta-las e converter para decimal O 2° problema é que eu preciso converter na porta C na forma output_c(0x..) ; Que não faço a menor ideia em como fazer isso ! Meu código ficou da seguinte forma: #include <16F877A.h> #device adc = 8 #use delay(clock = 20MHz) #include <lcd.c> int a, b, c, d, e, decimal; void main(void){ lcd_init(); while(TRUE){ if(input(PIN_B0) == 1){ a = 1; }else{ a = 0;} if(input(PIN_B1) == 1){ b = 1; }else{ b = 0; } if(input(PIN_B2) == 1){ c = 1; }else{ c = 0;} if(input(PIN_B3) == 1){ d = 1; }else{ d = 0;} if(input(PIN_B4) == 1){ e = 1; }else{ e = 0;} //decimal = a, b, c, d; junta esses bits e converte em decimal printf(lcd_putc,"\fBINARIO = %u%u%u%u%u \nDECIMAL = %u"a, b, c, d, e, decimal); delay_ms(200); output_c(0x07); // aqui preciso imprimir o decimal (substituir o 0x07 pelo decimal como exemplo) } }
  5. @.if Não vou trabalhar com torque, o meu objetivo é apenas encontrar uma equação matemática que se aplique a nesse código.
  6. Objetivo: Calcular e mostrar na interface a velocidade de um motor DC Meu código feito no CCS C Compiler #include <16F877A.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #device ADC = 10 #use delay(clock = 20M) #include <lcd.c> unsigned int16 i ; unsigned int8 velocidade ; void main(){ setup_adc(ADC_CLOCK_DIV_32); // Set ADC conversion time to 32Tosc setup_adc_ports(AN0); // Configure AN0 as analog set_adc_channel(0); // Select channel AN0 setup_ccp1(CCP_PWM); // Configure CCP1 as a PWM setup_timer_2(T2_DIV_BY_16, 250, 1); // Set PWM frequency to 500Hz delay_ms(100); // Wait 100ms lcd_init(); while(TRUE){ i = read_adc(); // Read from AN0 and store in i set_pwm1_duty(i); // PWM1 duty cycle set printf(lcd_putc,"\fV = %u RPM",velocidade); delay_ms(10); // Wait 10ms } } Alguém poderia me auxiliar em como inserir os cálculos da velocidade do motor, sendo que a velocidade muda de acordo com o potenciômetro !
  7. Valeu ! Deu certo aqui Valeu pessoal pela ajuda, mas consegui fazer. Peguei a referencia e apliquei no código. Abaixo segue como que ficou na simulação https://blogdaengenhariacotidiana.blogspot.com/2022/04/inserir-valor-analógico-com-display.html
  8. Existe alguma forma de truncar um valor no CCS C Compiler ? Meu objetivo é truncar cada caractere de um valor analógico. - Por exemplo: Valor = 247 ; Depois armazenar esse valor truncado em um vetor nas suas devidas posições. - int vetor [ ] = {2, 4, 7} ; Se alguém souber a solução, por favor poste aqui a sua solução com o esquemático do PIC. Ou se alguém alguma outra forma de fazer, poste aqui a sua solução !
  9. Minha resolução ficou da seguinte forma, porém não sei se está correto. CÓDIGO FEITO EM CCS C Compiler #include <16F877A.h> #FUSES NOWDT #FUSES HS #FUSES NOPROTECT #FUSES NODEBUG #FUSES NOBROWNOUT #FUSES NOLVP #FUSES NOCPD #FUSES NOWRT #use delay(crystal = 20MHz) // PISCAR NAS FREQUENCIAS F1 = 90Hz, F2 = 70Hz e F3 = 150Hz // FREQUENCIA = 1/T unsigned int8 tempo1 = 1000/90, tempo2 = 1000/70, tempo3 = 1000/150; #INT_RTCC void RTCC_isr(void) { output_toggle(PIN_B0); //pisca a cada 13.1 ms delay_ms(tempo1); output_toggle(PIN_B1); delay_ms(tempo2); output_toggle(PIN_B2); delay_ms(tempo3); } void main(){ setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); //overflow en 13.1 setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED, 0, 1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); enable_interrupts(INT_RTCC); // habilita a chave RTCC enable_interrupts(GLOBAL); // habilita a chave geral while(TRUE) ; }
  10. Como que eu faço para acionar 3 display com frequência 90Hz, 70Hz e 150Hz usando interrupção no PIC 16F877A ? Alguém poderia ajudar e postar seu código aqui ! <Como que eu faço para acionar 3 display com frequência 90Hz, 70Hz e 150Hz usando interrupção no PIC 16F877A ? Alguém poderia ajudar e postar seu código aqui !>
  11. Olá ! Preciso aprender como trabalhar com o GALS (emulador de análise léxica sintática para compiladores), mas na web não tem muita referência de como ensina a trabalhar com ele. Preciso fazer um algoritmo de fatorial com base na gramática na imagem do anexo: Um algoritmo bem simples de fatorial que fiz em C/C++ #include <stdio.h> int main(){ int valor = 5, fat = 1; while(valor > 0){ fat = fat * valor; valor = valor-1; } printf("%d",fat); }
  12. Já tive um problema com PC desligando a todo momento também (Sistema operacional Windows) , fiz restauração do sistema ei ele parou , formatando também resolve o problema.
  13. As formas de onda de entrada mostradas na figura 2 são aplicadas num somador de 2 bits. Determine as formas de onda para a soma e o carry de saída em relação às entradas construindo o diagrama de temporização. Minha resolução ficou da seguinte forma: Gostaria de saber se a minha resolução está correta , pois a minha dúvida é se é para fazer em relação a soma com A2 + B2 + Cin ou se é para fazer o gráfico em relação com A1 + B1 com Cin ou sem Cin.
  14. Dado o algoritmo abaixo incompleto do caso 4 e 5 faça a INSERÇÃO e REMOÇÃO de uma posição qualquer da lista. #include <stdio.h> #include <stdlib.h> #include <cstdlib> #include <iostream> using namespace std; typedef struct celulalista{ int informacao; struct celulalista *proximo; }celula; void initlista(celula *pRecebido); void insertlista(celula *pRecebido); void buscalistasimples(celula *pRecebido); void removeelementolistasimples(celula *pRecebido); int levalor(int *valorrecebido); int main() { //Declaracoes celula *pLista; int opcao=0; //pLista = (celula *)malloc(sizeof(struct celulalista)); pLista = new celulalista; initlista(pLista); for(;;) { cout<<"\n\t1 - Inserir : "; cout<<"\n\t2 - Consultar : "; cout<<"\n\t3 - Remover : "; cout<<"\n\t4 - INSERIR EM POSICAO QUALQUER : "; cout<<"\n\t5 - REMOVER EM POSICAO QUALQUER: "; cout<<"\n\t6 - Sair\n\t"; cin>>opcao; opcao = levalor(&opcao); switch(opcao) { case 1: insertlista(pLista); break; case 2: buscalistasimples(pLista); break; case 3: removeelementolistasimples(pLista); break; case 4: exit(0); } } return 0; } /* Inicializacao da lista encadeada */ void initlista(celula *pRecebido){ (pRecebido)->proximo = NULL; } /* Funcao para insercao no inicio */ void insertlista(celula *pRecebido){ //Declaracoes celula *temporario; int valor; //Instrucoes cout<<"\n\tInforme um valor a ser inserido : "; cin>>valor; temporario = (celula * )malloc(sizeof(celula)); temporario->informacao = valor; temporario->proximo = (pRecebido)->proximo; (pRecebido)->proximo = temporario; } /* Funcao para percorrer elementos */ void buscalistasimples(celula *pRecebido){ //Declaracoes celula *temporario; int i=0; //Instrucoes if((pRecebido)->proximo == NULL){ cout<<"\tLista Vazia!\n"; }else{ temporario = (celula * )malloc(sizeof(celula)); temporario = (pRecebido)->proximo; system("cls"); while(temporario!=NULL){ cout<<"\n\t["<<(i=i+1) <<"] Valor : "<<temporario->informacao<<"\n"; temporario = temporario->proximo; } } } /* Remove elemento da cabeca */ void removeelementolistasimples(celula *pRecebido){ //Declaracoes celula *temporario; //Instrucoes if((pRecebido)->proximo == NULL){ cout<<"\n\tLista Vazia!"; }else{ temporario = (pRecebido)->proximo; (pRecebido)->proximo = temporario->proximo; free(temporario); } } int levalor(int *valorrecebido){ //Declaracoes //Instrucoes while((*valorrecebido > 6 )|| (*valorrecebido<1)){ cout<<"\n\tOpcao Invalida. Informe novamente : \n"; scanf("%d", &(*valorrecebido)); } return (*valorrecebido); }
  15. Sim eu entendi no escopo, mas eu só não estou conseguindo fazer no algoritmo e não encontro referencias nos livros nem na web.

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

Como se tornar um desenvolvedor full-stack

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!