Dubbio istruzione

13 Anni 3 Mesi fa #1 da Guido
Dubbio istruzione è stato creato da Guido
Ciao, sto tornando indietro sui miei passi, e sto rileggendo il tuo tutorial (i tuoi consigli sono pillole di saggezza) e sto provando a simulare la pressione del pulsante (sette) per far lampeggiare lo stesso led. Se abilito i 7 pulsanti appena lancio Proteus il led lampeggia, se elimino le istruzioni dal codice che riguardano RB0 e RB1 gli altri 6 pulsanti funzionano.
Ometto qualche istruzione?
Ps. Ho inizito a scrivere il codice per un pulsante come mi hai insegnato per andare nel difficile.
Grazie



#include <p18f4550.h>
#include <portb.h>

#pragma config FOSC = HS //Imposto x lavorare ad alta frequenza
#pragma config WDT = OFF //Disabilito il watcdog timer
#pragma config LVP = OFF //Disabilito programmazione lvp
#pragma config PBADEN = OFF //Disabilito gli ingressi analogici


void main (void) {
int i; //Variabile usata x creare un conteggio fittizio

LATA = 0x00; //Imposto POTA tutti ingrassi
TRISA = 0xFF;

LATB = 0x00; //Imposto PORTB tutti ingressi
TRISB = 0xFF;

LATC = 0x00; //Imposto PORTC tutti ingressi
TRISC = 0xFF;

LATD = 0x00; //Imposto PORTD tutte uscite
TRISD = 0x00;

LATE = 0x00; //Imposto PORTE tutti ingressi
TRISE = 0xFF;


EnablePullups(); //Abilita i resistori di pull-up sulla PORTB


for(;;) { //Ciclo infinito


if (PORTBbits.RB0 == 0) { //Primo pulsante premuto


for (i=0; i<25000; i++){ //Pausa che filtra gli spiche
}

if (PORTBbits.RB0 == 0) { //Controllo il pulsante x vedere se è ancora premuto

LATDbits.LATD0 = ~ LATDbits.LATD0; //Lampeggia il led
}
else {
LATDbits.LATD0 = 0x00; //Led spento
}
}

if (PORTBbits.RB1 == 0) { //Secondo pulsante premuto

for (i=0; i<25000; i++){ //Pausa che filtra gli spiche
}

if (PORTBbits.RB1 == 0) { //Controllo il secondo pulsante x vedere se è ancora premuto

LATDbits.LATD0 = ~ LATDbits.LATD0; //Lampeggia il led
}
else {
LATDbits.LATD0 = 0x00; //Led spento
}
}

if (PORTBbits.RB2 == 0) { //Terzo pulsante premuto

for (i=0; i<25000; i++){ //Pausa che filtra gli spiche
}

if (PORTBbits.RB2 == 0) { //Controllo il secondo pulsante x vedere se è ancora premuto

LATDbits.LATD0 = ~ LATDbits.LATD0; //Lampeggia il led
}
else {
LATDbits.LATD0 = 0x00; //Led spento
}
}
if (PORTBbits.RB3 == 0) { //Quarto pulsante premuto

for (i=0; i<25000; i++){ //Pausa che filtra gli spiche
}

if (PORTBbits.RB3 == 0) { //Controllo il secondo pulsante x vedere se è ancora premuto

LATDbits.LATD0 = ~ LATDbits.LATD0; //Lampeggia il led
}
else {
LATDbits.LATD0 = 0x00; //Led spento
}
}
if (PORTBbits.RB4 == 0) { //Quinto pulsante premuto

for (i=0; i<25000; i++){ //Pausa che filtra gli spiche
}

if (PORTBbits.RB4 == 0) { //Controllo il secondo pulsante x vedere se è ancora premuto

LATDbits.LATD0 = ~ LATDbits.LATD0; //Lampeggia il led
}
else {
LATDbits.LATD0 = 0x00; //Led spento
}
}
if (PORTBbits.RB5 == 0) { //Sesto pulsante premuto

for (i=0; i<25000; i++){ //Pausa che filtra gli spiche
}

if (PORTBbits.RB5 == 0) { //Controllo il secondo pulsante x vedere se è ancora premuto

LATDbits.LATD0 = ~ LATDbits.LATD0; //Lampeggia il led
}
else {
LATDbits.LATD0 = 0x00; //Led spento
}
}
if (PORTBbits.RB6 == 0) { //Settimo pulsante premuto

for (i=0; i<25000; i++){ //Pausa che filtra gli spiche
}

if (PORTBbits.RB6 == 0) { //Controllo il secondo pulsante x vedere se è ancora premuto

LATDbits.LATD0 = ~ LATDbits.LATD0; //Lampeggia il led
}
else {
LATDbits.LATD0 = 0x00; //Led spento
}
}
if (PORTBbits.RB7 == 0) { //Ottavo pulsante premuto

for (i=0; i<25000; i++){ //Pausa che filtra gli spiche
}

if (PORTBbits.RB7 == 0) { //Controllo il secondo pulsante x vedere se è ancora premuto

LATDbits.LATD0 = ~ LATDbits.LATD0; //Lampeggia il led
}
else {
LATDbits.LATD0 = 0x00; //Led spento
}
}

}

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido
  • Platinum Member
  • Platinum Member
Di più
13 Anni 2 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Dubbio istruzione
Ciao Guido,

questo topic era rimasto in un cantuccio.
Ho controllato il programma e non mi sembra di vedere alcuna ragione per cui non debba funzionare.
E' piuttosto simmetrico.
In particolare hai correttamente disabilitato gli ingressi analogici sulla PORTB.

In questo tempo hai avuto modo di fare altre prove?

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
13 Anni 2 Mesi fa #3 da Guido
Risposta da Guido al topic Re: Dubbio istruzione
Ciao, al momento ,non ho problemi a scrivere un codice per far funzionare un solo pulsante ad un entrata del pic per pilotare ad es. un led. Ho anche comprato un libro che sto leggendo sul lingaggio C.
Ho problemi a far funzionare una matrice di pulsanti, es. 4x3, assegno un led ad ogni pulsante e quando premo il pulsante della stessa colonna (o riga) in contemporanea mi si accende anche un altro led.
Ho letto e cercato di modificare il codice trovato su settorezero senza risultati.
Se hai qualche suggerimento lo accetto sempre.
Grazie

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido
  • Platinum Member
  • Platinum Member
Di più
13 Anni 2 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Dubbio istruzione
Ciao Guido,

credo che stai su di un´ottima strada e sicuramente stai mostrando molto interesse ad imparare.
Credo che il documento di Gianni di Settorezero sia ben scritto.
Magari prova a fare degli esempi piu´ semplici con 4 pulsanti ovvero 2x2. Il concetto e´ lo stesso ma non ti devi perdere in troppe righe e colonne. Credo sia anche piu´ facile da simulare.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
13 Anni 2 Mesi fa #5 da Guido
Risposta da Guido al topic Re: Dubbio istruzione
Ottimo consiglio.
Grazie

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido
  • Platinum Member
  • Platinum Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login