Ir ao conteúdo
  • Cadastre-se

Leonardo_1709

Membros Juniores
  • Total de itens

    6
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. Então pessoal, fiz uma postagem ontem sobre um exercício de um código de PIC18F4550, que necessitava utilizar botões e um tempo específico, criei um código e agora necessito encaixar um TMR0 no lugar dos delays, alguém sabe como fazer isso?? Valeu!!! Código: // PIC18F4550 Configuration Bit Settings #define _XTAL_FREQ 20000000UL #include <p18f4550.h> #include <xc.h> bit b_right, b_left, b_up, b_down, b_emerg = 0; int x = 0; void lcd_ini(); void lcd_cmd(char cmd); void lcd_envia_byte(char nivel, char dado); void main(void) { ADCON1 = 0x0f; lcd_ini(); lcd_envia_byte(0, 0x84); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'Q'); lcd_envia_byte(1, 'U'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'P'); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, 'A'); lcd_envia_byte(0, 0xC4); lcd_envia_byte(1, 'M'); lcd_envia_byte(1, 'C'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, '3'); __delay_ms(5000); while (1) { b_right = TRISBbits.RB0; // b0 b_left = TRISBbits.RB1; // b1 b_up = TRISBbits.RB2; // b2 b_down = TRISBbits.RB3; // b3 b_emerg = TRISBbits.RB4; // b4 inicio: lcd_envia_byte(0, 0x80); lcd_envia_byte(1, 'M'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, 'T'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'S'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'S'); lcd_envia_byte(1, 'L'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'G'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ':'); lcd_envia_byte(0, 0xC0); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'G'); lcd_envia_byte(1, 'U'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'N'); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'N'); lcd_envia_byte(1, 'S'); lcd_envia_byte(1, 'T'); lcd_envia_byte(1, ':'); if (b_right == 1 && b_emerg == 0) { PORTBbits.RB6 = 1; __delay_ms(8000); PORTBbits.RB6 = 0; lcd_envia_byte(0, 0x80); lcd_envia_byte(1, 'M'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, 'T'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, 'L'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'G'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ':'); lcd_envia_byte(1, ' '); lcd_envia_byte(0, 0xC0); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'C'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'T'); lcd_envia_byte(1, 'A'); } if (b_left == 1 && b_emerg == 0) { PORTBbits.RB6 = 1; __delay_ms(8000); PORTBbits.RB6 = 0; lcd_envia_byte(0, 0x80); lcd_envia_byte(1, 'M'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, 'T'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, 'L'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'G'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ':'); lcd_envia_byte(1, ' '); lcd_envia_byte(0, 0xC0); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'C'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'S'); lcd_envia_byte(1, 'Q'); lcd_envia_byte(1, 'U'); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'A'); } if (b_up == 1 && b_emerg == 0) { PORTBbits.RB6 = 1; __delay_ms(8000); PORTBbits.RB6 = 0; lcd_envia_byte(0, 0x80); lcd_envia_byte(1, 'M'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, 'T'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, 'L'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'G'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ':'); lcd_envia_byte(1, ' '); lcd_envia_byte(0, 0xC0); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'C'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, 'C'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'M'); lcd_envia_byte(1, 'A'); } if (b_down == 1 && b_emerg == 0) { PORTBbits.RB6 = 1; __delay_ms(8000); PORTBbits.RB6 = 0; lcd_envia_byte(0, 0x80); lcd_envia_byte(1, 'M'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, 'T'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, 'L'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'G'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ':'); lcd_envia_byte(1, ' '); lcd_envia_byte(0, 0xC0); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'C'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, 'B'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'X'); lcd_envia_byte(1, 'O'); } if (b_emerg == 1) { PORTBbits.RB5 = 1; __delay_ms(4000); PORTBbits.RB5 = 0; lcd_envia_byte(0, 0x80); lcd_envia_byte(1, 'M'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, 'T'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ' '); lcd_envia_byte(1, 'P'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, 'D'); lcd_envia_byte(1, 'O'); lcd_envia_byte(1, ' '); lcd_envia_byte(1, ':'); lcd_envia_byte(1, ' '); lcd_envia_byte(0, 0xC0); lcd_envia_byte(1, '!'); lcd_envia_byte(1, '!'); lcd_envia_byte(1, '!'); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'M'); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'R'); lcd_envia_byte(1, 'G'); lcd_envia_byte(1, 'E'); lcd_envia_byte(1, 'N'); lcd_envia_byte(1, 'C'); lcd_envia_byte(1, 'I'); lcd_envia_byte(1, 'A'); lcd_envia_byte(1, '!'); lcd_envia_byte(1, '!'); lcd_envia_byte(1, '!'); __delay_ms(5000); goto inicio; } } } void lcd_ini() { char i; TRISD = 0b00000000; TRISEbits.TRISE0 = 0; TRISEbits.TRISE1 = 0; PORTD = 0b00000000; PORTEbits.RE0 = 0; PORTEbits.RE1 = 0; __delay_ms(15); for (i = 0; i < 3; i++) { lcd_cmd(0x30); __delay_ms(5); } lcd_cmd(0x38); __delay_us(40); lcd_cmd(0x01); __delay_ms(2); lcd_cmd(0x0C); __delay_us(40); lcd_cmd(0x06); __delay_us(40); } void lcd_cmd(char cmd) { PORTD = cmd; PORTEbits.RE1 = 1; PORTEbits.RE1 = 0; } void lcd_envia_byte(char nivel, char dado) { PORTEbits.RE0 = nivel; __delay_us(100); PORTEbits.RE1 = 0; lcd_cmd(dado); }
  2. Galera, eu necessito que alguém saiba montar esse exercício, por que tipo, eu não estou conseguindo, mas necessito entregar isso na faculdade se alguém conseguir resolver o enunciado, joga o código aqui no post que vai ajuda muito. E pessoal, eu necessito pra até quinta de manhã (19/04/2018) Valeu!!! É utilizando o PIC18F4550 ENUNCIADO: O projeto O projeto deve possuir quatro botões de entrada normal (sem interrupção) e um ligado a uma das interrupções externas. Os quatro botões devem indicar ao programa as seguintes orientações (para cima, para baixo, para a direita e para a esquerda) referente ao acionamento de dois motores CC (de uma CNC). O botão ligado a interrupção deve gerar uma parada total do sistema (emergência). Cada botão deve acionar um sentido de movimento de um motor hipotético por um tempo determinado. Dessa forma cada acionamento/botão pressionado deve iniciar a contagem de um tempo, com um Timer, e o movimento do motor. Assim que a contagem do Timer acabar o motor deve parar de girar. Todos as informações/ações devem aparecer no display LCD. Exemplo: • Iniciando movimento do motor par a direita. • Iniciando movimento do motor par cima. • Parada do movimento do motor da direita. • Parada total por emergência. • Etc ... O motor hipotético deve girar por “X” segundos e a cada meio segundo dois LEDs devem piscar intercaladamente indicando o movimento de qualquer um dos motores. O display de 7 segmentos também pode ser usado para indicar qual botão foi pressionado. O display de LCD, ao ser inicializado, deve mostrar por 5 segundo o nome do Grupo (A) Os valores de X são: • Grupo A: 7.5 segundos
  3. Dae galera, aqui não é bem o lugar certo pra esse post. Mas estou com dúvida na escolha de um monitor para um PC. Queria saber a opinião de vocês em relação a esses dois monitores e qual o melhor: MONITOR GAMER ASUS 27 POL. LED 1920X1080 1MS FLICKER FREE, VP278H-P MONITOR GAMER BENQ ZOWIE 24 POL. LED 1MS WIDESCREEN, RL2455 OBS: Se souberem algum melhor na faixa de preço desses dois, deixa aí que vai ajudar bastante também!!! valeu
  4. Fala galera, sou novo aqui, então não sei se estou postando no lugar certo, peço desculpas se estou no lugar errado haha. Mas é o seguinte, eu necessito de uma configuração de PC que rode jogos e alguns programas 3D, tipo SolidWorks, AutoCAD. E, pedi pra uma empresa de Curitiba, montar um PC para mim e gostaria de saber se vale a pena ou se é melhor trocar algumas peças. Aí está a configuração que me enviaram: placa-mãe: Asus H110M-A/M.2 PROCESSADOR: Intel Core I5-7400 MEMÓRIA: Memória Crucial 8GB DDR4 HARD DISK: (1TB) SATA III 7200 RPM 64MB SeaGate PLACA DE VÍDEO: GigaByte GeForce GTX 1050 TI 4GB GABINETE: Gamer AeroCool MID TOWER GT FONTE: CX Series CX450 Desde já agradeço!!!

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

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!