bonjour
J'ai comme projet une matrice LED 5x5 commander par pc via DB9
donc pour cela j'ai lus le datasheet du 877A et j'ai essayé de suivre les instruction pour recevoir une donnée "RC7->RX".
Mais le bout de code que j'ai écris comporte une erreur mais je ne sais pas ou
avant de venir demander de l aide j'ai essayé plusieurs fois a lire et relire mon code . Si quelqu'un peut il m aider .
Merci d'avance .
-----------------------------
List p=16F877
#include <p16F877.inc>
#include <Matrice_seq.inc>
__CONFIG _CP_OFF & _CPD_OFF &_DEBUG_OFF & _LVP_OFF & _WRT_ENABLE_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
;************************ reset ****************************** *****
org 0x000
goto init
;*********************** EEPROM ****************************** *****
org 0x2100
DE 'P','r','o','g'
org 0x2108
DE 'M','A','T','R','I','X'
org 0x2110
DE 'L','E','D',' ','5','x','5'
;********************** DECLARATION DES VARIABLE ******************
CBLOCK 0x0C
w_temp:1
s_temp:1
donne:1
ENDC
;********************** Macro ****************************** *******
bank0 macro
bcf STATUS,RP0
bcf STATUS,RP1
endm
bank1 macro
bsf STATUS,RP0
bcf STATUS,RP1
endm
bank2 macro
bcf STATUS,RP0
bsf STATUS,RP1
endm
bank3 macro
bsf STATUS,RP0
bsf STATUS,RP1
endm
;*************************** Interruption ******************************
org 0x0004
movwf w_temp
swapf STATUS,w
movwf s_temp
bank1
btfss PIE1,RCIE
goto restauration
bank0
btfsc PIR1,RCIF
goto reception
reception
bank0
movf RCREG,w
movwf donne
movlw d'0'
subwf donne,w
btfsc STATUS,Z
goto PA
movlw d'1'
subwf donne,w
btfsc STATUS,Z
goto PB
PA
bsf PORTA,0 ; petit test LED RA0 pour voir si sa marche
goto fin
PB
bsf PORTB,5 ; petit test LED RB5 pour voir si sa marche aussi
goto fin
fin
bank0
btfss RCSTA , OERR
goto restauration
; si il y a erreur :
bcf RCSTA , CREN ; effacer l erreur si il y a lieu
bsf RCSTA , CREN ; relancer la réception
goto restauration
restauration
swapf s_temp,w
movwf STATUS
swapf w_temp,f
swapf w_temp,w
retfie
;*************************** initialisation ****************************
init
clrf PORTA
clrf PORTB
clrf PORTC
clrf PORTD
bank1
movlw b'00000110'
movwf ADCON1
movlw b'00000000'
movwf TRISA
movlw b'00000000'
movwf TRISB
movlw b'11000000'
movwf TRISC
movlw b'00000000'
movwf TRISD
movlw D'25'
movwf SPBRG
movlw b'00000100'
movwf TXSTA
movlw b'11000000'
movwf INTCON
movlw b'00100000'
movwf PIE1
bank0
movlw b'10010000'
movwf RCSTA
clrf donne
goto start
;************************** PROGRAMME ****************************** ****
start:
; On attend l interruption
end
-----