B
bau
Guest
Je suis un newbie sur le micro-contrôleur.J'ai écrit un programme ADC qui convertissent le signal analogique et afficher sur le conduit à PORTB et PORTC.J'ai essayer de simuler avec le Proteus, ça marche bien, mais, quand je télécharger le programme dans ma PIC18F4520, il ne marche pas travailler comme vous le souhaitez.Ci-dessous est mon programme,# include <p18f4520.h># include <delays.h># include <portb.h># include <adc.h>
# pragma config OSC = HS# pragma config PWRT = ON# pragma config WDT = OFF
int temp;int Salut;
void PortB_isr (void);# pragma code high_vector = 0x08void high_interrupt (void)(GOTO _asm _endasm PortB_isr)
# pragma interrompre PortB_isrvoid PortB_isr (void)(INTCONbits.INT0IF = 0;OpenADC (ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_4_TAD, ADC_CH0 & ADC_INT_OFF& ADC_VREFPLUS_EXT & ADC_VREFMINUS_EXT, 5);SetChanADC (ADC_CH0);Delay10TCYx (100);ConvertADC (); / / Start conversionwhile (BusyADC ()); / / Wait for conversion ADC= temp ReadADC (); / / Lire la suite et mis en tempCloseADC (); / / Désactiver le convertisseur A / NPORTC = temp;Salut = temp;Salut>> = 8;PORTD = Salut
void main (void)(TRISA = 0x0F;TRISB = 0xFF;TRISC = 0x00;TRISD = 0x00;PORTC = 0;PORTD = 0;ADCON1 = 0x09;T0CONbits.T0CS = 0;CMCON = 0x07;CVRCON = 0;
OpenRB0INT (PORTB_CHANGE_INT_ON &FALLING_EDGE_INT &PORTB_PULLUPS_OFF);INTCONbits.GIE = 1;
while (1) ()
)Le cystral que j'ai utilisé est 20MHz.
La sortie de ma LED (connecté à la PORTC et PORTD) est 0b1100000000 lorsque le AN0 est relié à la terre.
Je heureux d'écouter d'autres .......
# pragma config OSC = HS# pragma config PWRT = ON# pragma config WDT = OFF
int temp;int Salut;
void PortB_isr (void);# pragma code high_vector = 0x08void high_interrupt (void)(GOTO _asm _endasm PortB_isr)
# pragma interrompre PortB_isrvoid PortB_isr (void)(INTCONbits.INT0IF = 0;OpenADC (ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_4_TAD, ADC_CH0 & ADC_INT_OFF& ADC_VREFPLUS_EXT & ADC_VREFMINUS_EXT, 5);SetChanADC (ADC_CH0);Delay10TCYx (100);ConvertADC (); / / Start conversionwhile (BusyADC ()); / / Wait for conversion ADC= temp ReadADC (); / / Lire la suite et mis en tempCloseADC (); / / Désactiver le convertisseur A / NPORTC = temp;Salut = temp;Salut>> = 8;PORTD = Salut
void main (void)(TRISA = 0x0F;TRISB = 0xFF;TRISC = 0x00;TRISD = 0x00;PORTC = 0;PORTD = 0;ADCON1 = 0x09;T0CONbits.T0CS = 0;CMCON = 0x07;CVRCON = 0;
OpenRB0INT (PORTB_CHANGE_INT_ON &FALLING_EDGE_INT &PORTB_PULLUPS_OFF);INTCONbits.GIE = 1;
while (1) ()
)Le cystral que j'ai utilisé est 20MHz.
La sortie de ma LED (connecté à la PORTC et PORTD) est 0b1100000000 lorsque le AN0 est relié à la terre.
Je heureux d'écouter d'autres .......