- Messaggi: 293
- Ringraziamenti ricevuti 29
Valore bit di variabili char (RISOLTO)
12 Anni 1 Mese fa - 12 Anni 1 Mese fa #1
da shinshi
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Valore bit di variabili char (RISOLTO) è stato creato da shinshi
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- shinshi
- Autore della discussione
- Elite Member
Riduci
Di più
12 Anni 1 Mese fa #2
da Mauro Laurenti
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Risposta da Mauro Laurenti al topic Re: Valore bit di variabili char
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Si prega Accedi o Crea un account a partecipare alla conversazione.
12 Anni 1 Mese fa #3
da shinshi
Risposta da shinshi al topic Re: Valore bit di variabili char
Funziona anche con MPLABX. Grazie mille Mauro.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- shinshi
- Autore della discussione
- Elite Member
Riduci
Di più
- Messaggi: 293
- Ringraziamenti ricevuti 29
12 Anni 1 Mese fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Valore bit di variabili char
...perfetto!
Morale della favola:
Bisogna fare attenzione a quando si copia!
Saluti,
Mauro
Morale della favola:
Bisogna fare attenzione a quando si copia!
Saluti,
Mauro
Ringraziano per il messaggio: shinshi
Si prega Accedi o Crea un account a partecipare alla conversazione.
12 Anni 1 Mese fa #5
da shinshi
Risposta da shinshi al topic Re: Valore bit di variabili char
chiedo scusa
Mi sono lasciato prendere dall'entusiasmo e ho detto che funzionava solo perchè il compilatore non da più l'errore, ma una volta programmato il microcontrollore il risultato mi lascia perplesso.
Con freedom2 ho scritto questo semplice programma:
#include <p18f4550.h>
#pragma config FOSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
//OSC = HS Impostato per lavorare ad alta frequenza
//WDT = OFF Disabilito il watchdog timer
//LVP = OFF Disabilito programmazione LVP
//PBADEN = OFF Disabilito gli ingressi analogici
//BIT della variabile reflect
volatile unsigned char REFLECT;
volatile struct {
unsigned R0:1;
unsigned R1:1;
unsigned R2:1;
unsigned R3:1;
unsigned R4:1;
unsigned R5:1;
unsigned R6:1;
unsigned R7:1;
} REFLECTbits;
void main (void){
// Imposto PORTA tutti ingressi
LATA = 0x00;
TRISA = 0xFF;
// Imposto PORTB tutti ingressi
LATB = 0x00;
TRISB = 0xFF;
// Imposto PORTC tutti ingressi
LATC = 0x00;
TRISC = 0xFF;
// Imposto PORTD tutte uscite
LATD = 0x00;
TRISD = 0b00000000;
// Imposto PORTE tutti ingressi
LATE = 0x00;
TRISE = 0xFF;
REFLECT = 0b00000000;
LATDbits.LATD0 = REFLECTbits.R0;
LATDbits.LATD1 = REFLECTbits.R1;
LATDbits.LATD2 = REFLECTbits.R2;
LATDbits.LATD3 = REFLECTbits.R3;
LATDbits.LATD4 = REFLECTbits.R4;
LATDbits.LATD5 = REFLECTbits.R5;
LATDbits.LATD6 = REFLECTbits.R6;
LATDbits.LATD7 = REFLECTbits.R7;
// Ciclo infinito
while (1) {
}
}
Mi aspettavo di vedere tutti i led spenti invece ottengo sempre la stessa sequenza qualsiasi valore scrivo su REFLECT. La sequenza è:
LED8 ON
LED7 OFF
LED6 ON
LED5 OFF
LED4 ON
LED3 ON
LED2 ON
LED1 ON
Quello che vorrei ottenere è di avere una variabile char dove scrivere un valore e poi poter leggere i singoli bit e viceversa scrivere nei singoli bit della variabile e poter leggere il valore della variabile char.
Mi sono lasciato prendere dall'entusiasmo e ho detto che funzionava solo perchè il compilatore non da più l'errore, ma una volta programmato il microcontrollore il risultato mi lascia perplesso.
Con freedom2 ho scritto questo semplice programma:
#include <p18f4550.h>
#pragma config FOSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
//OSC = HS Impostato per lavorare ad alta frequenza
//WDT = OFF Disabilito il watchdog timer
//LVP = OFF Disabilito programmazione LVP
//PBADEN = OFF Disabilito gli ingressi analogici
//BIT della variabile reflect
volatile unsigned char REFLECT;
volatile struct {
unsigned R0:1;
unsigned R1:1;
unsigned R2:1;
unsigned R3:1;
unsigned R4:1;
unsigned R5:1;
unsigned R6:1;
unsigned R7:1;
} REFLECTbits;
void main (void){
// Imposto PORTA tutti ingressi
LATA = 0x00;
TRISA = 0xFF;
// Imposto PORTB tutti ingressi
LATB = 0x00;
TRISB = 0xFF;
// Imposto PORTC tutti ingressi
LATC = 0x00;
TRISC = 0xFF;
// Imposto PORTD tutte uscite
LATD = 0x00;
TRISD = 0b00000000;
// Imposto PORTE tutti ingressi
LATE = 0x00;
TRISE = 0xFF;
REFLECT = 0b00000000;
LATDbits.LATD0 = REFLECTbits.R0;
LATDbits.LATD1 = REFLECTbits.R1;
LATDbits.LATD2 = REFLECTbits.R2;
LATDbits.LATD3 = REFLECTbits.R3;
LATDbits.LATD4 = REFLECTbits.R4;
LATDbits.LATD5 = REFLECTbits.R5;
LATDbits.LATD6 = REFLECTbits.R6;
LATDbits.LATD7 = REFLECTbits.R7;
// Ciclo infinito
while (1) {
}
}
Mi aspettavo di vedere tutti i led spenti invece ottengo sempre la stessa sequenza qualsiasi valore scrivo su REFLECT. La sequenza è:
LED8 ON
LED7 OFF
LED6 ON
LED5 OFF
LED4 ON
LED3 ON
LED2 ON
LED1 ON
Quello che vorrei ottenere è di avere una variabile char dove scrivere un valore e poi poter leggere i singoli bit e viceversa scrivere nei singoli bit della variabile e poter leggere il valore della variabile char.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- shinshi
- Autore della discussione
- Elite Member
Riduci
Di più
- Messaggi: 293
- Ringraziamenti ricevuti 29
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.
Login
© LaurTec 2006 - 2024