- Messaggi: 583
- Ringraziamenti ricevuti 1
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
}
}
}
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
- Autore della discussione
- Platinum Member
Riduci
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
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.
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
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
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 583
- Ringraziamenti ricevuti 1
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
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.
13 Anni 2 Mesi fa #5
da Guido
Risposta da Guido al topic Re: Dubbio istruzione
Ottimo consiglio.
Grazie
Grazie
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Guido
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 583
- Ringraziamenti ricevuti 1
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.