PIC 16F877A et UART [Résolu]
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

PIC 16F877A et UART [Résolu]



  1. #1
    asirem

    PIC 16F877A et UART [Résolu]


    ------

    Bonjour
    je programme avec mplab et en assembleur pour communiquer avec un pic 16f877a
    la reception ce fait sans pb mais l emission j ai des soucis avec si qlq1 peu m aider la dessus

    je recois le carcatére null

    Merci



    Code:
    
    
    	list P=16F877A	; processeur utilisé 
    	#include<P16F877A.inc>
    
    	__config    _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC & _LVP_OFF &  _BOREN_ON 
    		;bits de configuration :
    		;code protect OFF
    		;watchdog timer OFF
    		;power up timer ON (72 ms : cela permet d'initialiser l'afficheur LCD)	
    		;oscillateur HS 			(quartz 20 MHz)
    		;low voltage program OFF
    		;data EE read protect OFF
    		;brown out detect ON
    		;master clear enable ON 
    
    ;xxxxxx
    ; Macro
    ;xxxxxx
    
    bank1	macro		; passage en banque 1
    		bsf STATUS,RP0 
    		bcf STATUS,RP1
    		endm
    
    bank0	macro		; passage en banque 0
    		bcf STATUS,RP0
    		bcf STATUS,RP1
    		endm
    
    ;xxxxxxxxxxxxxxxxxxxxxxxxxx
    ; Déclaration des variables
    ;xxxxxxxxxxxxxxxxxxxxxxxxxx
    
    	CBLOCK 0x070		; début de la zone des registres d'usage général du 16F628A
    						; (banque quelconque : 0,1,2 ou 3)
    						; 0x070 - 0x07F : 16 variables
    
    	STATUS_TEMP : 1 	; sauvegarde du registre STATUS (routine d'interruption)
    	W_TEMP : 1 			; sauvegarde du registre W		(routine d'interruption)
        REGISTRE_R :1
        octet_tx:1
    	compt:1
        compt1:1
    	ENDC  
    
    ;xxxxxxxxxxxxxxxxxxxx
    ; Démarrage sur reset
    ;xxxxxxxxxxxxxxxxxxxx
    
    	org 0x0000
    	goto initialisation
    
    ; xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ; Routine d'interruption 
    ; 2 sources d'interruption :
    ; - réception (UART)
    ; - émission (UART)
    ; xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
    	org 0x0004	 			; vecteur d'interruption
    
    	movwf W_TEMP 
    	swapf STATUS,W
    	movwf STATUS_TEMP		; sauvegarde du registre W puis du registre STATUS
        
        bank1
        btfss PIE1, RCIE
        goto int1				
        bank0
        btfsc PIR1, RCIF
        goto reception 
    int1
    	bank1
        btfss PIE1, TXIE
        goto int2
        bank0
        btfsc PIR1, TXIF
        goto emission
    int2 goto int1
    	goto restauration
    	
    	; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    	; Traitement de l'interruption de reception de l'USART
    	; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
    reception
    
     bank0
    
    movf RCREG , W
    
    movwf REGISTRE_R ; les 8 bits de données sont transférés dans un registre d'usage général
    
    bcf STATUS , RP0 ; passage en banque 0
    
    btfss RCSTA , OERR ; test d'une erreur d'overrun
    
    goto int1
    
    ; traitement de l'erreur d'overrun
    
    bcf RCSTA , CREN ; on efface le bit OERR
    
    bsf RCSTA , CREN ; on relance la réception
    
    goto int1
    
    
    	; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    	; Traitement de l'interruption d'émission de l'USART
    	; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    emission
    		
    
    	movf octet_tx ,0 ; les 8 bits de données à transmettre sont placés dans W
    	bank0
    	movwf TXREG ; transmission
    				; N.B. le flag TXIF est remis à 0 par une écriture dans le registre TXREG
        movf TXREG,1
    ;		bank1	
    ;WtHere  btfss  TXSTA,TRMT       ; (1) transmission is complete if hi
    ;        goto WtHere
    ;bank0
    	bcf PIE1 , TXIE ; interdiction de l'interruption d'émission de l'USART	
    
    	goto  restauration
     
    restauration
    
    	swapf STATUS_TEMP,W		; restauration des registres STATUS puis W
    	movwf STATUS	
    	swapf W_TEMP,f
    	swapf W_TEMP,W
    
    	retfie		
    
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ; Routine kika
    ; 
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
    kika 
    	bank0
        bsf   PORTD,0
        bcf   PORTD,1
        movwf  compt1
    	clrw  
    	addlw 0x31
    	movwf octet_tx
        movf   compt1,0
    bank1
    	bSf PIE1 , TXIE ; AUTORISER de l'interruption d'émission de l'USART	
    ;    goto emission
     
    return
    
    
    kika1 
    	bank0
        bsf   PORTD,1
        bcf   PORTD,0
        movwf  compt1
    	clrw  
    	addlw 0x32
    	movwf octet_tx
        movf   compt1,0
    bank1
    	bSf PIE1 , TXIE ; AUTORISER de l'interruption d'émission de l'USART	
    return
    
    
    
    ;xxxxxxxxxxxxxxx
    ; Initialisation
    ;xxxxxxxxxxxxxxx
    
    initialisation   
    
    
    	movlw B'00000111' 
    	movwf CMCON			; inactivation des comparateurs analogiques
    	
    	bank1
    	movlw B'11110000'
    	movwf TRISC
    	movlw B'00000000'
    	movwf TRISD
        movlw D'8'
        movwf SPBRG 
    	movlw B'00100000'	
    	movwf TXSTA
    	; bit 7 (CSRC) = 0 (non utilisé : 0 par exemple)
    	; bit 6 (TX9) = 0 : 8 bits de transmission
    	; bit 5 (TXEN) = 1 : autorise la réception
    	; bit 4 (SYNC) = 0 : mode asynchrone
    	; bit 3 = 0 (non implémenté)
    	; bit 2 (BRGH) = 1 : mode asynchrone haute vitesse
    	; bit 1 (TRMT) = 0 (en lecture seule)
    	; bit 0 (TX9D) = 0 (non utilisé : 0 par exemple)
    
    	bank0		
    	movlw B'10010000'	 
    	movwf RCSTA	
    	; bit 7 (SPEN) = 1 : utilisation du port série	
    	; bit 6 (RX9) = 0 : 8 bits de réception
    	; bit 5 (SREN) = 0 (non utilisé : 0 par exemple)	
    	; bit 4 (CREN) = 1 : autorise la réception
    	; bit 3 (ADEN) = 0 (non utilisé : 0 par exemple)
    	; bit 2 (FERR) = 0 (en lecture seule)
    	; bit 1 (OERR) = 0 (en lecture seule)
    	; bit 0 (RX9D) = 0 (non utilisé : 0 par exemple)
     
    	clrf PORTC  	; mise à 0 des sorties du port A
    	clrf PORTD 		; mise à 0 des sorties du port B
     
    	
        bank1
        bsf INTCON, GIE ; autorisation globale des interruptions 
    	bsf INTCON , PEIE ; autorisation des interruptions des périphériques
        bsf PIE1 , RCIE ; autorisation de l'interruption de réception de l'USART
    	bcf PIE1 , TXIE ; interdiction de l'interruption d'émission de l'USART	
    
    	bank0
        CLRF  REGISTRE_R
    
    	goto debut_programme   
    
    ;xxxxxxxxxxxxxxxxxxxxx
    ; Programme principal
    ;xxxxxxxxxxxxxxxxxxxxx 
    
    debut_programme 
    
    ; c la partie reception ca marche tres bien 
    ;	movf REGISTRE_R,1
    ;    btfsc STATUS,Z	
    ;	goto debut_programme ; on attend une interruption (USART)
    ;    movwf   compt1
    ;	movf   REGISTRE_R,0
    ;    sublw  0x61
    ;	btfsc   STATUS,Z
    ;    call  kika 
    ;	movf   REGISTRE_R,0;
    ;	sublw  0x63
    ;	btfsc   STATUS,Z
    ;    call  kika1 
    ;	movf   compt1,0
        
    ;goto  debut_programme 
    ;	END
    
    ;  emission
    
    
    	btfsc  PORTC,5
        goto  debut_programme 
        movwf   compt1
        clrw 
    	addlw  0x31
    	movwf octet_tx 
        movf compt1,0
        movwf   compt1
    bank1
    	bsf PIE1 , TXIE ; autorisé   de l'interruption d'émission de l'USART		
    bank0
        clrw 
    	addlw  0x32
    	movwf octet_tx 
        movf compt1,0
    bank1
    	bsf PIE1 , TXIE ; autorisé   l'interruption d'émission de l'USART		
    bank0
    	goto debut_programme 
    	end

    -----

  2. #2
    asirem

    Re : PIC 16F877A et UART

    Probleme resolus BIT STOP

    ps je sais pas comment marqué le topic comme résolus
    merci pour votre aide

Discussions similaires

  1. A/n pic 16f877a
    Par narakphysics dans le forum Électronique
    Réponses: 11
    Dernier message: 11/09/2012, 09h39
  2. PWM pic 16F877A
    Par invite735f61e0 dans le forum Électronique
    Réponses: 5
    Dernier message: 07/04/2009, 21h21
  3. pic 16F877A
    Par invite636b8579 dans le forum Électronique
    Réponses: 22
    Dernier message: 01/04/2009, 15h00
  4. CAN pic 16f877A
    Par invite85bfc8b3 dans le forum Électronique
    Réponses: 1
    Dernier message: 11/08/2008, 13h39
  5. PIC 16F877A sur 3V ?
    Par invite2dc206d9 dans le forum Électronique
    Réponses: 17
    Dernier message: 17/02/2008, 20h49
Découvrez nos comparatifs produits sur l'informatique et les technologies.