elsena
Messages postés3Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention17 novembre 2009
-
16 nov. 2009 à 13:50
elsena
Messages postés3Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention17 novembre 2009
-
17 nov. 2009 à 16:17
Bonjour,
J'ai fait un petit programme afin de me familariser avec la série 16f631/390, avant de réinscrire mes programmes dans ces nouveaux pics.
Celui ci a été fait pour le 16f631 et fonctionne sauf le PULL UP. J'ai beau essayer, je ne voies pas où j'ai fauté.
movwf W_temp
swapf STATUS, w
movwf status_temp
movf PORTA, w
call face_mode
bcf INTCON, INTF
bcf INTCON, RABIF
swapf status_temp, w
movwf STATUS
swapf W_temp, f
swapf W_temp, w
retfie
MAIN:
; initialisation
bcf STATUS, RP0
clrf PORTA
clrf PORTB
clrf PORTC
bsf STATUS, RP0 ; bank 1
movlw 0xFF
movwf TRISA ; RA = in
bsf TRISB, 0 ; RB0 = in, ne sert pas
bcf TRISC, 0 ; RC = out
bcf OPTION_REG, INTEDG ; int sur flanc desc
bsf IOCA, 2 ; int sur RA2
bcf OPTION_REG, 7
movlw 0x04
movwf WPUA ; res rappel sur RA2
movlw 0x00
movwf VRCON ; désactiver référence de tension
bcf CM1CON0, 7 ; désactiver les comparateurs
bcf CM2CON0, 7 ; idem
bcf OPTION_REG, 7
bcf STATUS, RP0 ; bank 0
elsena
Messages postés3Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention17 novembre 2009 16 nov. 2009 à 13:55
Excuses,
j'ai oublié de vous signaler:
W0 est une boucle qui attends une info descendente sur RA2. A ce moment, cicle interruption qui allume ou éteind la led sur RC0, puis retour à W0 jusqu'à info suivante sur RA2