Bonjour,
Intéréssé par cette famille 631/690 et avant d'y adapter mes programmes rélisés sur 16f84, j'ai fait ce petit programme suivant:
#include <p16f631.inc>
__config _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF &_IESO_OFF & _FCMEN_OFF
;REGISTRES
W_temp equ 0x70 ; sauvegarde
status_temp equ 0x71
ORG 0x00
goto MAIN
;INTERRUPTIONS
ORG 0x04
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 STATUS, RP0 ; bank 0
bsf INTCON, INTE
bsf INTCON, GIE
w_0:
nop
goto w_0
face_mode:
btfsc PORTC, 0 ; RC0 = 0? saut
goto w_1
btfss PORTC, 0 ; RC0 = 1? saut
goto w_2
return
end_mode:
return
w_1:
bcf PORTC, 0 ; RC0 à 0
goto end_mode
w_2:
bsf PORTC, 0 ; RC0 à 1
goto end_mode
end
W0 est une boucle qui attend un pulse descendent sur RA2 qui génère une interruption, pendant laquelle une led sur RC est à 1 ou 0 en toggle.
Il fonctionne mais je n'arrive pas a faire fonctionner le pull up ( res de rappel )
Ronny
-----