Ir ao conteúdo
  • Cadastre-se

Problemas em programa PIC18f4520


danieleder

Posts recomendados

Bom Dia Amigos...

Sou na verdade programador java e delphi, porém meu pai e eletrônico a mais de 30 anos especializado em manutenção a robótica.. Pois bem ele esta desenvolvendo uma maquina pra fazer colagem de golas de camiseta, e me pediu pra programar um pic pra ele, então resolvi estudar o danado do pic e até que gostei da brincadeira, desenvolvi o então sistema pra ele em cima do pic18f4520... ta funcionando direitinho, mas ta com alguns problemas provavelmente de configuração que eu não consegui resolver....

1º algumas portas se iniciam com sinal logico alto, e então estou precisando fecha-las manualmente..

2º as interrupções externas 1 e 2 não estão funcionando, veja no código abaixo que fiz a instrução do pino_b1 e Pino_b2 dentro do laço mas queria elas estive-sem nas interrupções..

vejam o Código:

#include <18F4520.h>                
#fuses HS,NOMCLR
#use delay(clock=4M)

#use fast_io(a)
#use fast_io(
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)

#include <lcd.c>

#define liga output_high
#define desliga output_low
#define resistencia pin_c0
#define colagem pin_c1
#define bt_inc pin_b3
#define bt_dec pin_b4
#define bt_sair pin_b5

int tempo, temp_sel;
float temperatura,tensao_real, sensor;
int flag;
#int_EXT
void EXT_isr(void){//botao colagem
liga(colagem);
printf(lcd_putc, "\fTEMPO = %us\nFAZENDO COLAGEM",tempo);
delay_ms((tempo)*(1000));
desliga(colagem);
}

#int_EXT1
void EXT1_isr(void){
printf(lcd_putc, "\fAPERTOU EXT1");

}

#int_EXT2
void EXT2_isr(void){
printf(lcd_putc, "\fAPERTOU EXT2");
}

void main(void){
desliga(pin_b2);
desliga(pin_b5);
desliga(pin_c1);
desliga(pin_c3);
desliga(pin_c4);
desliga(pin_c6);
desliga(pin_c7);
desliga(pin_e2);


enable_interrupts(INT_EXT);
enable_interrupts(INT_EXT1);
enable_interrupts(INT_EXT2);
enable_interrupts(GLOBAL);
ext_int_edge(L_TO_H);
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_tris_a (0b11111111);
set_tris_b (0x11111111);
set_tris_c (0x11111100);
set_tris_e (0x11111111);


lcd_init();
printf(lcd_putc, "\fTESTANDO LCD");
delay_ms(1000);
printf(lcd_putc, "\nLCD OK!!!!");
delay_ms(1000);
printf(lcd_putc, "\fUNION ELETRONICA\n----------------");
delay_ms(1000);
flag=1;
temp_sel =1;
while(true){
set_adc_channel(0);
delay_ms(30);
sensor=(float)(read_adc());
delay_ms(30);

tensao_real= (5000.0/256.0)*(sensor);
temperatura= (tensao_real)/(10);
delay_ms(100);

printf(lcd_putc, "\fUNION ELETRONICA\nTEMP%3.0fC TIME %u", temperatura,tempo);
delay_ms(500);
if(temperatura < temp_sel){
liga(resistencia);
}else{
desliga(resistencia);
}

/* if(input(pin_b1)){
flag=1;
while(flag==1){
printf(lcd_putc, "\fMODO PROGRAMACAO\nTEMPO = %u",tempo);
delay_ms(150);
if(input(bt_inc)){
tempo++;
}else if(input(bt_dec)){
tempo--;
}else if(input(bt_sair)){
flag=0;
}
}
}
if(input(pin_b2)){
flag=1;
while(flag==1){
printf(lcd_putc, "\fMODO PROGRAMACAO\nTEMPERATURA = ",temp_sel);
delay_ms(150);
if(input(bt_inc)){
temp_sel++;
}else if(input(bt_dec)){
temp_sel--;
}else if(input(bt_sair)){
flag=0;
}
}
}*/
}
}

coloquei abaixo o código e o arquivo de simulação do proteus...

desde já muito obrigado...

http://reviravollta.com.br/Arquivos/sistemapai.rar

Link para o comentário
Compartilhar em outros sites

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!