Tout d'abord, bonjour à tous
Je suis complètement noob en programmation assembler et j'ai essayer ,au bout de quelques lecture de différents Tuto, de réaliser mon programme :
Code :
list p=16F877
#include
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_ENABLE_ON & _DEBUG_OFF
; Pas de code protege, pas de watch hdog timer, delai de demarrage, horloge HS.
ORG 0x000
GOTO main
ORG 0x004
RETFIE
main CLRF PORTA ; Initialise le port A
CLRF PORTB ; Initialise le port B
CLRF PORTC ; Initialise le port C
CLRF PORTD ; Initialise le port D
CLRF PORTE ; Initialise le port E
BSF STATUS, RP0 ; Bank 1 selectonnee
MOVLW B'111111' ; Port RA5-RA0 en entrée
MOVWF TRISA ;
MOVLW B'11111111' ; Port RB7-RB0 en entrée
MOVWF TRISB ;
MOVLW B'00000000' ; Port RC7-RC0 en sortie
MOVWF TRISC ;
MOVLW B'11111000' ; Port RD7-RD3 en entrée (RD4:entrée présence carte)/ Port RD2-RD0 en sortie (bit 0: led rouge/ bit1: led verte/ bit2: sortie présence carte)
MOVWF TRISD ;
MOVLW B'111' ; Port RE2-RE0 en entrée
MOVWF TRISE ;
BCF STATUS, RP0 ; Bank 0 selectonnee
led_verte bsf PORTD, 3 ; allumage des 2 leds pour montrer que le circuit est bien alimenté
led_rouge bsf PORTD, 2
bsf PORTD, 0 ; PortD RD0 a "1" => présence connecteur
ATTENTE btfss PORTD, 1
goto ATTENTE
led_verte bcf PORTD, 3 ; leds eteintes
led_rouge bcf PORTD, 2
bsf PORTC, 0 ; PortC RC0 a "1"
btfss PORTB, 0
goto led_rouge
bsf PORTC, 1 ; PortC RC1 a "1"
btfss PORTB, 1
goto led_rouge
bsf PORTC, 2 ; PortC RC2 a "1"
btfss PORTB, 2
goto led_rouge
bsf PORTC, 3 ; PortC RC3 a "1"
btfss PORTB, 3
goto led_rouge
bsf PORTC, 4 ; PortC RC4 a "1"
btfss PORTB, 4
goto led_rouge
bsf PORTC, 5 ; PortC RC5 a "1"
btfss PORTB, 5
goto led_rouge
bsf PORTC, 6 ; PortC RC6 a "1"
btfss PORTB, 6
goto led_rouge
bsf PORTC, 7 ; PortC RC7 a "1"
btfss PORTB, 7
goto led_rouge
led_verte bsf PORTD, 3; led verte allumée
fin_verte goto fin_verte
led_rouge bsf PORTD, 2; led rouge allumée
fin_rouge goto fin_rouge
END ; directive de fin de programme
Mon portB est utilisé en entrée, le portC en sortie.
Le bit 2 et 3 du portD sont utilisés pour faire un 9bit qui établira si la carte est bien alimentée partout en allumant les 2 leds ( rouges et vertes ).
Il y a une valeur '1' sur les ports RC0 a RC7 qui passent les differents contacts (Cn0 à Cn7) pour retourner sur les ports RB0 a RB7, si RB recoit bien le '1' la led verte s'allume pour indiquer que le contact est opérationnel, sinon une led rouge s'allumera.
Mon soucis est que lorsque pour RC0/RB0 on obtient l'allumage de led rouge/verte, comment faire pour le faire passer au contact suivent, c'est a dire RC1/RB1 ?
En espèrant avoir été assez clair, ce qui n'est pas vraiment évident ^^
Cordialement ,