salve ragazzi sto progettando un contagiri con il pic 16f628a ed un sensore ottico a forcella, per ora sto progettando la parte software con il pic e continuo a riscontrare un problema a livello di input. questo è il programma:
program display_test_2
DIM LAP AS BYTE
main:
STATUS.5=1 'passaggio al banco 1
TRISA=%00000000 'trisA uscita
TRISB=%11111111 'trisB ingresso
STATUS.5=0 'ritorno al banco 0
CMCON=7 'configurazione cmcon per il display
LCD_CONFIG(PORTA,6,7,0,1,PORTA,2,4,3) 'configurazione piedini per il display
LCD_CMD(LCD_CURSOR_OFF) 'spengo il cursore del display
LAP=48 'nella tabella CHR il 48 è lo 0
LCD_CHR(1,1,LAP) 'visualizza il carattere 0 su display
CONTROL: 'inizio procedura di controllo
IF (PORTB.0=1) 'se RB0 è 1:
THEN GOTO COUNTER 'allora vai alla procedura di conteggio
ELSE GOTO CONTROL 'altrimenti torna al controllo
END IF 'fine ciclo if
COUNTER: 'inizio procedura di conteggio
LAP=LAP+1 'la variabile LAP si incrementa di 1
LCD_CHR(1,1,LAP) 'il display viene aggiornato
WHILE (PORTB.0=1) 'finchè RB0 resta 1:
LAP=LAP 'la avriabile LAP resta uguale
WEND 'quando RB0 torna a 0 fine ciclo while
GOTO CONTROL 'torna a controllo
END.
in poche parole ogni volta che il piedino 0 del portB va alto (5V) la variabile lap viene incrementata di 1 e il valore è visualizzato sul display.
il mio problema (che mi sta facendo letteralmente impazzire) è che la variabile LAP comincia a incrementarsi da sola senza che RB0 sia collegato a 5v.
PS: il passaggio dal banco 0 all'1 viene eseguito per motivi di sicurezza (anche se in mikrobasic non sarebbe necessario)