Vai Indietro   PcTuner Forum > Sezione Hardware > Programmazione PIC
PcTuner Overclock
Arcade Registrazione Blogs Regolamento Feedback FAQ Lista Utenti Calendario Segna come Letti

Ultimi 5 blog pubblicati su PcTuner Blog
Data Titolo

Rispondi
 
Strumenti Discussione Modalità Visualizzazione
Vecchio 09-02-2010, 11.28.39   #1
Registered User
 
L'avatar di  elberto
 

Iscritto da: 28-08-2005
Messaggi: 958
Feedback: (0)
Si può condividere un enum?

Nel mio programma principale usavo l'enumeratore "porta":


Codice:
enum Porta {aperto; chiuso; boh}


switch (Porta) .......

Adesso, per fare un po' di ordine, mi ritrovo una procedura in un file diverso dal main.
Se nella dichiarazione del file della procedura utilizzo

Codice:
extern enum Porta;
mi dà errore, e nello switch della procedura mi dice che "Porta" non è dichiarato.

Come posso fare?
Grazie.
__________________
Materazzi squalificato!? Tanto alla fine...
elberto Non in Linea   Rispondi Citando

Advertising
Vecchio 09-02-2010, 19.36.05   #2
Tuned Moderator
 
L'avatar di  naimah
 

Iscritto da: 21-08-2006
Locazione: Pistoia
Messaggi: 1,771
Feedback: (1)
Metti l'enum nel .h e includilo nel .c .
__________________
naimah Non in Linea   Rispondi Citando
Vecchio 09-02-2010, 19.53.51   #3
Registered User
 
L'avatar di  Camillo
 

Iscritto da: 31-01-2006
Locazione: Genova
Messaggi: 1,211
Feedback: (0)
Quote:
Originariamente inviato da elberto Visualizza Messaggio
Nel mio programma principale usavo l'enumeratore "porta":


Codice:
enum Porta {aperto; chiuso; boh}


switch (Porta) .......

Adesso, per fare un po' di ordine, mi ritrovo una procedura in un file diverso dal main.
Se nella dichiarazione del file della procedura utilizzo

Codice:
extern enum Porta;
mi dà errore, e nello switch della procedura mi dice che "Porta" non è dichiarato.

Come posso fare?
Grazie.
Così com'è scritto non può funzionare la sintassi è totalmente errata.
Codice:
enum Porta {aperto, chiuso, boh};

Ad uno switch occorre passare una variabile e non una costante.
switch (Porta) .......
__________________
Camillo
Il VeroProgrammatore può contare fino a 1024 con le dita delle mani. Grazie a .mau.
Le donne e i gatti fanno quello che vogliono, gli uomini e i cani dovrebbero rilassarsi e abituarsi all'idea. R.A.Heinlein
Camillo Non in Linea   Rispondi Citando
Vecchio 09-02-2010, 20.22.29   #4
Tuned Moderator
 
L'avatar di  naimah
 

Iscritto da: 21-08-2006
Locazione: Pistoia
Messaggi: 1,771
Feedback: (1)
Io lo uso così: nel .h

Codice:
	enum ISR_PHER_FLAGS
	{
		EN_TMR0 = 	0b00000001,		
		EN_TMR1 = 	0b00000010,		
		EN_TMR2 = 	0b00000100,		
		EN_TMR3 = 	0b00001000,		
		EN_RBINT= 	0b00010000,		
		EN_INT0 = 	0b00100000,			
		EN_INT1 = 	0b01000000,			
		EN_USART= 	0b10000000
	};
e nel .c, passando il parametro "mode" alla funzione:

Codice:
void INT_Prio(enum ISR_PHER_FLAGS mode)
{

	if(EN_TMR0 & mode) 
			INTCON2bits.TMR0IP = 1; 
	else	
			INTCON2bits.TMR0IP = 0; 

	if(EN_TMR1 & mode) 
			IPR1bits.TMR1IP = 1; 	
	else	
			IPR1bits.TMR1IP = 0; 	
		
	if(EN_TMR2 & mode) 
			IPR1bits.TMR2IP = 1; 	
	else	              
			IPR1bits.TMR2IP = 0; 	        
	                
	if(EN_TMR3 & mode)               
			IPR2bits.TMR3IP = 1; 	        
	else	              
			IPR2bits.TMR3IP = 0; 	        
                    
	if(EN_RBINT & mode)               
			INTCON2bits.RBIP = 1; 	        
	else	              
			INTCON2bits.RBIP = 0; 	                                     

	if(EN_INT1 & mode)               
			INTCON3bits.INT1IP = 1;         
	else	              
			INTCON3bits.INT1IP = 0;         
                    
	if(EN_USART & mode)               
			IPR1bits.RCIP = 1;         
	else	              
			IPR1bits.RCIP = 0;         	        
}
__________________
naimah Non in Linea   Rispondi Citando
Vecchio 10-02-2010, 10.23.53   #5
Registered User
 
L'avatar di  elberto
 

Iscritto da: 28-08-2005
Messaggi: 958
Feedback: (0)
Quote:
Originariamente inviato da Camillo Visualizza Messaggio
Così com'è scritto non può funzionare la sintassi è totalmente errata.
Bon, era solo per rendere l'idea.

Comunque adesso funziona, grazie a tutti.
__________________
Materazzi squalificato!? Tanto alla fine...
elberto Non in Linea   Rispondi Citando
Rispondi Per le vostre immagini su questo forum potete usare PcTunerUp!
Iscriviti gratuitamente alla nostra newsletter.


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 visitatori)
 
Strumenti Discussione
Modalità Visualizzazione

Regole di scrittura
non Puoi inserire messaggi
non Puoi rispondere ai messaggi
non Puoi inviare allegati
non Puoi modificare i tuoi messaggi

codice vB è Attivo
Smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Disattivato
Pingbacks are Disattivato
Refbacks are Disattivato
Vai al Forum


Tutti gli Orari sono GMT +1. Attualmente sono le 13.15.34.


Powered by vBulletin Versione 3.6.12
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright © 2009 - Master New Media S.r.l. a socio unico - P.I. 02947530784. Tutti i diritti di proprietà letteraria e artistica sono riservati- Privacy
www.pctuner.net è testata telematica registrata presso il Tribunale di Torino, n. 39 del 07.05.2008, Editore Master New Media S.r.l.