Ir ao conteúdo

Leonardo_1709

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

Reputação

0
  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. @Noodle Até uns 4.000,00 reais
  5. 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 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...