Bonsoir,
une fois de plus je m'en remet à votre savoir:
j'ai un petit soucis de configuration pour le PORTA,6 et le PORTB,4.
Le A,6 ne passe pas à l'état haut et le B,4 est apparement en flottant (ou Z) alors qu'ils sont tout les 2 mis en OUTPUT. Voici le programme:
De plus, comme vous pourrez le voir par le schéma (en mode simulation) les afficheurs ne répondent pas comme ils doivent. je pense que j'ai du me tromper quelque part.
Et le schéma:LIST p=16f628a ; Définition de processeur
#include <p16f628a.inc> ; fichier include
__config (_INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _CP_OFF)
errorlevel -302
; Configuration variables
; =======================
CBLOCK 0x20 ; début de la zone variables
status_temp : 1
w_temp : 1
led : 1
AFFL1 : 1
AFFL2 : 1
AFFL3 : 1
AFFL4 : 1
ENDC
; PROG PRINCIPAL 0
; =======================
org 0x00
goto init
; CONTROLE INTERRUPTION
; =======================
org 0x004 ;INTERRUPTION TIMER 0
movwf w_temp ; sauver registre W
swapf STATUS,w ; swap status avec résultat dans w
movwf status_temp ; sauver status swappé
BTFSC led,1
goto aff1
BTFSC led,2
goto aff2
BTFSC led,3
goto aff3
BTFSC led,4
goto aff4
aff1
BSF PORTB,0
BCF PORTB,4
movf AFFL1 , W
movwf PORTA
movlw b'00000100' movwf led
goto restorereg
aff2
BCF PORTB,0
BSF PORTB,1
movf AFFL2 , W
movwf PORTA
movlw b'00001000'
movwf led
goto restorereg
aff3
BCF PORTB,1
BSF PORTB,2
movf AFFL3 , W
movwf PORTA
movlw b'00010000'
movwf led
goto restorereg
aff4
BCF PORTB,2
BSF PORTB,4
movf AFFL4 , W
movwf PORTA
movlw b'00000010'
movwf led
restorereg ;restaurer registres
bcf INTCON,T0IF ; on efface le flag 'TMR0 Overflow Interrupt'
swapf status_temp,w ; swap ancien status, résultat dans w
movwf STATUS ; restaurer status
swapf w_temp,f ; Inversion L et H de l'ancien W sans modifier Z
swapf w_temp,w ; Réinversion de L et H dans W,W restauré sans modifier status
retfie ; return from interrupt
init ; Configuration materiel
; ======================
BSF STATUS,RP0 ;BANK1
MOVLW B'00100000'
MOVWF TRISA
MOVLW B'11100000'
MOVWF TRISB
movlw b'00000000' ;pull-up interne
movwf OPTION_REG
BCF STATUS,RP0
movlw 0x07 ;Turn comparators off 0x07
movwf CMCON
; movlw b'00000011' ;Oscillateur interne 37kHz
; movwf PCON
BCF STATUS,RP0 ;BANK0
movlw b'10100000' ;Interruption=ON sur TMR0
movwf INTCON
movlw b'00000010' ;valeur pd variable led
movwf led
MOVLW B'00000110'
MOVWF AFFL1 ;Digit 2
MOVLW B'00000011'
MOVWF AFFL2 ;Digit 3
MOVLW B'10001111'
MOVWF AFFL3 ;Digit 4
MOVLW B'11011111'
MOVWF AFFL4 ;Digit 1
prog
goto prog ;on attend interrup/tmr0
end
-----