bonjour
pic 16F84A + 24C16
voila j'ai cette routine qui marche tres bien mais je veux la modifier pour passer sur le portb,03 (RB3) mais comme je debute et que j'ai pas tres bien compris tous les mecanismes de cette routine surtout les : XORWF PORTB , W
XORWF PORTB , f
est ce qu'il ne faut pas aussi modifier le " RLF EEDATA , f"
si vous pouviez me la modifier sur cet exemple avec un petit commentaire, ca serait sympa
ps: j'ai bien essayer des modifs mais ca a pas marcher, donc merci
---------------------------------------------------------------------
envoi en PORTB , 07
---------------------------------------------------------------------
Label_0015
MOVWF EEDATA ; sauve w dans EEDATA
COMF EEDATA , f ; complement file
MOVLW 0x80 ; page 1 , adressage indirect (variable 0x80)
MOVWF 0x1C ; parite 1C= data Crc
MOVLW 0x08 ; charge 08 (8 bits)
MOVWF 0x0C ; dans compteur (variable C)
BCF PORTB , 07 ; met à zero le bit 7 du port B = mise en sortie
BSF STATUS , RP0 ; bank 1 (BSF)
MOVLW 0x4F ; 4F= 0100 1111 pin 7,5,4 à 0 = sortie
; (pins 5 et 4 eeprom 24c16)
MOVWF TRISB ; data direction port B
BCF STATUS , RP0 ; bank 0 (BCF)
MOVLW 0xA8
CALL Label_0004 ; timer 0
---------------------------------------------------------------------------
; envoi une bit et boucle 8 fois (8 bits = 1 byte)
Label_0006
MOVF EEDATA , W ; eeprom data
ANDLW 0x80 ; page 1 , adressage indirect (variable 0x80)
XORWF 0x1C , f ; calcul la parite 1C= data Crc
XORWF PORTB , W ; change la ligne I/0 en fonction du bit 7 de EEdata
XORWF PORTB , f
MOVLW 0xA8
CALL Label_0005 ; add new valeur au timer
RLF EEDATA , f ; eeprom data
DECFSZ 0x0C , f ; decremente le compteur de bits
; (variable C), saut si = zero
GOTO Label_0006 ; boucle
MOVF 0x1C , W
XORWF PORTB , W
XORWF PORTB , f
MOVLW 0xA8
CALL Label_0005 ; add new valeur au timer
BSF STATUS , RP0 ; bank 1 (BSF)
MOVLW 0xCF ; CF = 11001111 remet pin 7 à 1 = entree
MOVWF TRISB ; data direction port B
BCF STATUS , RP0 ; bank 0 (BCF)
MOVLW 0x02
ADDWF 0x0F , f
CALL Label_0007 ; decremente le timer
RETURN