habibi Posted April 13, 2015 Report Share Posted April 13, 2015 //Calibrador p70 // #include <16F628.h> #device *=16 ///3505-2871 #FUSES NOWDT #FUSES INTRC_IO #FUSES PUT #FUSES PROTECT=3 #FUSES BROWNOUT #FUSES NOMCLR #FUSES NOLVP #FUSES NOCPD // #use delay(clock=4000000) #use rs232(baud=9600,parity=E,xmit=PIN_a0,rcv=PIN_a1,bits=8) //#use rs232(baud=9600,parity=N,xmit=PIN_a0,rcv=PIN_a1,bits=8) #define use_portb_lcd TRUE #include <lcd1.c> #include <stdlib.h> #use FAST_IO(A) #use FAST_IO(B) #byte porta=0x05 #byte portb=0x06 #byte trisb = 0x86 #byte trisa = 0X85 #byte sai=0xff #bit botao1=porta.7 #bit botao2=porta.6 #bit botao3=porta.5 #bit Rele_Reset=porta.3 #bit Rele_Grava=porta.2 #bit tristx=trisa.0 #bit bittx=porta.0 #bit trisb3=trisb.3 char versao[20]; char wversao[1]; byte data; byte wdata[6]; int k,i,l,c; void p70() { rele_reset = 0; rele_grava = 0; trisb = 1; lcd_putc("\f"); lcd_gotoxy(1,1); lcd_putc("3-Atual 1-Versao"); lcd_gotoxy(1,2); lcd_putc("2-Teste/Calibra"); botao1 = 1; while (1) { if (botao2 == 0) { lcd_putc("\f"); lcd_gotoxy(1,1); lcd_putc(" Lendo EPROM "); Rele_Reset = 1; delay_ms(1200); Rele_Reset = 0; lcd_putc("\f"); lcd_gotoxy(1,1); l = 1; c = 1; for (i=1;i<=23;++i) { wversao[0] = getc(); if (i > 3) { versao[i-3] = wversao[0]; }; }; for (i=1;i<=20;i++) { lcd_gotoxy(c,l); lcd_putc(versao); c++; if (c==16) { l = 2; c=1; }; }; while (Botao3 == 1) { }; while (Botao3 == 0) { }; reset_cpu(); }; if (Botao1 == 0) { Rele_Grava = 1; lcd_putc("\f"); lcd_gotoxy(1,1); lcd_putc(" Modo Atualiza "); lcd_gotoxy(1,2); lcd_putc("1-Reset 2-Sair "); botao1 = 1; while (Botao3 == 1) { if (Botao2 == 0) { Rele_Reset = 1; delay_ms(600); }; if (Botao2 == 1) { Rele_Reset = 0; }; }; reset_cpu(); }; if (Botao3 == 0) { lcd_putc("\f"); lcd_gotoxy(1,1); lcd_putc("3- Testa Motor"); lcd_gotoxy(1,2); lcd_putc("1-Calibra 2-Sai"); k = 0; delay_ms(1000); while (Botao3 == 1) { if (Botao2 == 0) { lcd_putc("\f"); lcd_gotoxy(1,1); lcd_putc(" Modo Calibrar "); putc(110); delay_ms(1000); putc(20); delay_ms(1000); lcd_gotoxy(1,2); lcd_putc("Inserir a Folha"); while (Botao3 == 1) { }; rele_reset = 1; delay_ms(1000); reset_cpu(); }; if (Botao1 == 0) { lcd_putc("\f"); lcd_gotoxy(1,1); lcd_putc("Veloci. Frente "); putc(110); delay_ms(1000); putc(25); delay_ms(1000); putc(01); for (i=1;i<=100;++i) { data = getc(); lcd_gotoxy(0,2); printf(LCD_PUTC, " %u",data); //delay_ms(1); }; putc(99); lcd_putc("\f"); lcd_putc("Veloci. Tras "); lcd_gotoxy(1,1); putc(110); delay_ms(1000); putc(25); delay_ms(1000); putc(02); for (i=1;i<=100;++i) { data = getc(); lcd_gotoxy(0,2); printf(LCD_PUTC, " %u",data); //delay_ms(1); }; putc(99); lcd_putc("\f"); lcd_gotoxy(1,1); lcd_putc("1- Testa Motor"); lcd_gotoxy(1,2); lcd_putc("2-Calibra 3-Sai"); Botao3 == 0; k == 0; }; }; while (botao3==0) { delay_us(1); }; reset_cpu(); }; } } void bl700() { putc(51); putc(00); delay_ms(1000); putc(10); putc(56); putc(00); delay_ms(1000); lcd_putc("\f"); lcd_gotoxy(1,1); lcd_putc("Insira o cartao"); lcd_gotoxy(1,2); lcd_putc("Menu para Cont."); while (botao1 == 1) { delay_us(100); }; delay_ms(500); lcd_putc("\f"); lcd_gotoxy(1,1); putc(00); k = 0; lcd_putc(" 1 2 3 - 4 5 6"); while (botao1 == 1) { do { data = getc(); } while (data==0) ; k = k + 1; if (k==5) { wdata[0] = data; }; if (k==6) { wdata[1] = data; }; if (k==7) { wdata[2] = data; }; if (k==8) { wdata[3] = data; }; if (k==9) { wdata[4] = data; }; if (k==10) { wdata[5] = data; }; if (k>=16) { lcd_gotoxy(1,2); printf(LCD_PUTC, " %X%X%X - %X%X%X",wdata[0],wdata[1],wdata[2],wdata[3],wdata[4],wdata[5]); k = 0; delay_ms(400); putc(00); }; if (botao3 == 0) { Reset_cpu(); }; }; putc(00); lcd_putc("\f"); lcd_gotoxy(0,1); lcd_putc(" Retire a folha "); putc(255); delay_ms(1000); putc(10); putc(56); putc(255); delay_ms(2000); reset_cpu(); } void Main() { rele_reset = 0; rele_grava = 0; lcd_init(); lcd_gotoxy(1,1); lcd_putc(" calibrador "); lcd_gotoxy(1,2); lcd_putc("1-P70 2-BL700"); botao1 = 1; botao2 = 1; botao3 = 1; while (1) { if (botao1 == 0) { delay_ms(100); if (botao1 == 0) { while (botao1 == 0) { }; p70(); }; }; if (botao3 == 0) { while (botao3 == 0) { }; bl700(); }; }; reset_cpu(); } existe algum erro??? pois ele não esta fazendo 2 funções que seria "lendo eprom" e "modo calibrar" no void p70(){ Quote Link to comment Share on other sites More sharing options...
0 LazaroBinda Posted April 13, 2015 Report Share Posted April 13, 2015 Não sei se eu conseguiria te ajudar por aqui. porque você está com um programa pra PIC. Aparentemente não vejo erro no seu código (embora seja difícil afirmar isso, porque não tenho como depurá-lo, visto que não tenho o esquema do seu circuito). O problema é que quando se trabalha com pic, a gente sempre culpa o código pelo mal funcionamento do circuito. E às vezes o problema não está no código. Você já verificou o seu display? Os outros caracteres que você manda escrever aparecerem normalmente? Não se esqueça que display lcd depende de um tempo entre as escritas, mesmo usando a biblioteca do microc. Existe algum pino do pic que não esteja totalmente definido e você esteja usando? O oscilador do pic é interno ou externo? Ele não está sofrendo nenhuma interferência? (Principalmente se estiver usando motor). Existem muitos fatores que podem influenciar no funcionamento. Estou vendo que você não configurou o conversor AD, que por padrão é o que vem ativado quando você configura o TRISA como entrada. Caso esteja tudo ok. Tente utilizar as interrupções INT ou PORTB. Boa sorte! Quote Link to comment Share on other sites More sharing options...
0 habibi Posted April 13, 2015 Author Report Share Posted April 13, 2015 Lazaro voce tem skype ? poderia te mostrar o circuito e dar outras informações Quote Link to comment Share on other sites More sharing options...
0 LazaroBinda Posted April 16, 2015 Report Share Posted April 16, 2015 Amigo, não tenho skype, mas posta uma imagem aqui que tento te ajudar. você usa proteus? Quote Link to comment Share on other sites More sharing options...
Question
habibi
Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.