Progr.pic interruption

julien__68 Messages postés 5 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 7 juin 2005 - 30 mai 2005 à 10:13
nounou2006merci Messages postés 2 Date d'inscription mercredi 27 décembre 2000 Statut Membre Dernière intervention 20 mai 2010 - 20 mai 2010 à 15:49
bonjours a tous,

j'utilise un pic18f4620, je débute dans la programmation,

je voulai réaliser une interruption sur rb0 , si quelqu'un pouvai me dire mon erreure pasque je suis bloqué la ...

mon programme reste bloqué dans le sleep , et l appuie sur rb0 n'a aucun effet,

voila mon programme:



list p=18f4620

#include p18f4620.inc





ORG 0

goto init



;****** Le programme d' interruption se déclenche ***

;****** lorsque l' entrée RB0 passe de 0 à 1 ***



ORG 4



;*********** Programme d 'interruption **********************



bsf PORTB,1 ; on allume la led connectée sur rb1



bcf INTCON,INT0IF ; on remet à 0 le bit du registre d' IT qui est passé à 1



RETFIE
; retour d 'interruption



;************* Programme d' INIT **************************





init




; -> broches en entrée ou en sortie )

MOVLW B'10011001' ; rb0,rb3,rb4 en entrée ( rb0 sera la broche utilisée


; pour l ' interruption )



MOVWF TRISB







bsf INTCON2,INTEDG0 ; Le passage de 0 à 1 sur RB0 provoque une IT


; sur un front montant



bsf
INTCON,INT0IE
; autorise l ' IT sur RB0



bsf
INTCON,GIE
; autorise les Interruptions



clrf PORTB



;************ Programme principal en rebouclage *********************



debut



sleep
; mise en sommeil du PIC conso : 3.2 mA, attente impulsion sur RB0



GOTO debut



;*********** Fin du programme ***********

end







merci pour vos réponses ++

4 réponses

phenojeff Messages postés 87 Date d'inscription jeudi 10 octobre 2002 Statut Membre Dernière intervention 4 avril 2008
30 mai 2005 à 17:43
la ca marche en Mplab mais oublie pas de maitre les bits _OPTION

list p=18f4620
#include p18f4620.inc



ORG 0x0000
goto init


;****** Le programme d' interruption se déclenche ***
;****** lorsque l' entrée RB0 passe de 0 à 1 ***
; TAVAIS des ERREUR sur tes ORG
ORG 0x0008


;*********** Programme d 'interruption **********************


bsf PORTB,1 ; on allume la led connectée sur rb1


bcf INTCON,INT0IF ; on remet à 0 le bit du registre d' IT qui est passé à 1


RETFIE ; retour d 'interruption


;************* Programme d' INIT **************************



init
; ICI aussi ne pas oublier de configurer les pins
MOVLW 07h ; Configure A/D
MOVWF ADCON1 ; en digital inputs
MOVWF 07h ; Configure comparators
MOVWF CMCON ; pour digital input
; -> broches en entrée ou en sortie )
MOVLW B'10011001' ; rb0,rb3,rb4 en entrée ( rb0 sera la broche utilisée
; pour l ' interruption )


MOVWF TRISB




bsf INTCON2,INTEDG0 ; Le passage de 0 à 1 sur RB0 provoque une IT
; sur un front montant

bsf INTCON,INT0IE ; autorise l ' IT sur RB0

bsf INTCON,GIE ; autorise les Interruptions


clrf PORTB


;************ Programme principal en rebouclage *********************


debut


sleep ; mise en sommeil du PIC conso : 3.2 mA, attente impulsion sur RB0


GOTO debut


;*********** Fin du programme ***********
end
0
phenojeff Messages postés 87 Date d'inscription jeudi 10 octobre 2002 Statut Membre Dernière intervention 4 avril 2008
30 mai 2005 à 17:48
re
dans ton interuption ca te prendrait un anti - rebon tout ca que tu fait tu attend que la pin revienne a sa position 0 et la tu continu le temps de pressé un bouton le pic lui va avoir fait 15 fois le tour bien plus rapide que le doigt.

a++
0
julien__68 Messages postés 5 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 7 juin 2005
31 mai 2005 à 14:55
Ca marche toujours pas, il ne m allume pas la led,

et j voulai savoir, c'est quoi les bits _OPTION ?
0
nounou2006merci Messages postés 2 Date d'inscription mercredi 27 décembre 2000 Statut Membre Dernière intervention 20 mai 2010
20 mai 2010 à 15:49
bonjours a tous,
j'utilise un pic16F877 gestion de carrefour, je débute dans la programmation,
je voulai réaliser une interruption sur rb0
//#include


void main()
{

// setup_adc_ports(NO_ANALOGS);
//setup_adc(ADC_OFF);
//setup_psp(PSP_DISABLED);
//setup_spi(FALSE);
//setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
//setup_timer_1(T1_DISABLED);
//setup_timer_2(T2_DISABLED,0,1);

TRISB= 0xFF;
TRISd =0x00;
PORTD= 0x00;

do
{

if (RB0 ==1)
{
PORTD = 0b10010;
delay_ms(1000);
PORTD = 0;
delay_ms(1000);
}

else
{
PORTD = 0b100001; //2eme feu vert
delay_ms(5000);
PORTD = 0b000001; //cleugnote vert
delay_ms(500);
PORTD = 0b100001; //cleugnote vert
delay_ms(500);
PORTD = 0b000001; //cleugnote vert
delay_ms(500);
PORTD = 0b100001; //cleugnote vert
delay_ms(500);
PORTD = 0b000001; //cleugnote vert
delay_ms(500);
PORTD = 0b100001; //cleugnote vert
delay_ms(500);
PORTD = 0b010001; //orange
delay_ms(1000);
PORTD = 0b001011; //rouge
delay_ms(1000);
PORTD =0b001100;//1er feu vert
delay_ms(5000);
PORTD =0b001000; //cleugnote vert
delay_ms(500);
PORTD =0b001100; //cleugnote vert
delay_ms(500);
PORTD=0b001000; //cleugnote vert
delay_ms(500);
PORTD =0b001100; //cleugnote vert
delay_ms(500);
PORTD =0b001000; //cleugnote vert
delay_ms(500);
PORTD =0b001100; //feu vert
delay_ms(1000);
PORTD =0b001010; //orange
delay_ms(1000);
PORTD =0b011001; //rouge
delay_ms(1000);
}
}
while(1);
}
0
Rejoignez-nous