Communication rs232 et pic 16F84A

Signaler
Messages postés
3
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
19 mars 2012
-
MEZZIMARIEM
Messages postés
7
Date d'inscription
mercredi 28 mars 2012
Statut
Membre
Dernière intervention
21 avril 2012
-
s'il vous plait j'ai besoin de votre aide concernant la communication rs232 et la pic 16F84A comme vous savez cette pic n'admet pas un UART donc j'ai pas pu programmer une interface RS232 aidez moi SVP.

9 réponses

Messages postés
5
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
19 mars 2012

Bonjour,
en quoi tu veux programmer? (MPLAB...)
Il te faut émission et réception?
Et a quelle vitesse?

A+
Messages postés
3
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
19 mars 2012

Merci monsieur; oui je veux programmer sur Mplab et je voudrais faire une recaption des donnés emises par une carter electronique pour l'afficher sur un PC via une interface RS232 mais commej'ai dit le probléme que la pic 16f84A n'admet pas un Uart donc il faut le programmer virtuellement.
Messages postés
5
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
19 mars 2012

Ok, je vais te préparer encore une routine de transmission pour envoyer le données au PC.

A+
Messages postés
5
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
19 mars 2012

Et voilà:

list p=16f84

;**************************************************************
;* Envoyer données par RS-232 au Pin RB2
;* output: RA1
;* XTAL : 4 MHz
;*
;*
;**************************************************************
; Includefile

#include

; Configuration
; 4 MHz: Power on Timer, pas de Watchdog, XT-Oscillator

__CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC

;**************************************************************
;Variablennamen vergeben

Temp Equ 0x20
cycl_1 Equ 0x21
cycl_2 Equ 0x22
Byte equ 0x23
out EQU 2

;**************************************************************

Init
bsf STATUS, RP0
movlw B'00111011'
movwf TRISA
bcf STATUS, RP0
clrf PORTA

;Envoyer 'A' en boucle
Loop
movlw 'A'
call Send_RS
goto Loop

;***************************************************************
;envoyer un Bytes, qui se trouve dans W

Send_RS
movwf Byte
movlw 8
movwf cycl_1
bcf PORTA, out
call Warte_s
bsf PORTA, out
call Warte_s

Send_1 rrf Byte, f
btfsc STATUS, C
bcf PORTA, out
btfss STATUS, C
bsf PORTA, out
call Warte_s
decfsz cycl_1, f
goto Send_1
bcf PORTA, out
call Warte_s
return

;**********************************************************
;
;
; emission 4 MHz 10 MHz
; 2400 Bps = 69d 173d
; 9600 Bps = 16d 43d

Warte_s movlw D'15' ; 9600 Bps / 4 MHz
movwf cycl_2
Warte1
nop
nop
nop
decfsz cycl_2, 1
goto Warte1
return

end



Bonne chance

A+
Messages postés
3
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
19 mars 2012

Merci baucoups Monsieur c'est trés gentil de votre part. Mais monsieur comment je peut adapter mes donnés à envoyer à ce programme ,aidez moi svp pour mieux comprendre.
A+
Messages postés
5
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
19 mars 2012

Envoie moi déjà la routine que tu as pour lire les données. Alors je te prépare une routine adéquate.
A+
Messages postés
1
Date d'inscription
jeudi 29 mars 2012
Statut
Membre
Dernière intervention
30 mars 2012

Bonjour, je cherche comment communiquer entre un pc et une machine a travers RS232 en mikroPascal Pic16f877.
Merci
Messages postés
7
Date d'inscription
mercredi 28 mars 2012
Statut
Membre
Dernière intervention
21 avril 2012

bonjour,
il faut faire une convertition entre rs485 et rs232
Messages postés
5
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
19 mars 2012

Rebonjour,
voilà déjà un listing pour la réception:

list p=16f84
;**************************************************************
; Réception via RS-232
; input : RA3 (sans booster 232,seulement resistance 22kR en serie)
;
; XTAL : 4 MHz
;
; Le Byte recu sera transmis au port B
;
;**************************************************************
; Includefile pour le 16F84

#include

; Configuration du PIC
;max 4 MHz: Power on Timer, sans Watchdog, XT-Oscillator

__CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC

;**************************************************************
;Variables


cycl_1 Equ 0x20 ; compteur
cycl_2 Equ 0x21 ; compteur
rs232in Equ 0x22
Byte Equ 0x23
Temp Equ 0x24
in Equ 3 ;RS-232 in on Port RA3

;**************************************************************
; le Programme
; Port B en mode sortie

Init
bsf STATUS, RP0 ; Bank 1
movlw B'00000000' ; PortB output
movwf TRISB
bcf STATUS, RP0 ; Bank 0
clrf PORTA ;
clrf PORTB ; étindre les LEDs du port B

;Réception et transmettre au PORTB
Loop
call ser_RX ; réception RS232
movfw rs232in ;
movwf PORTB ; envoyer au PORTB LEDs)
goto Loop

;**********************************************************
;lire un Byte et envoyer vers 'byte', 'rs232in' et w

ser_RX clrf Byte ;! reset Byte
movlw 8
movwf cycl_1 ; 8 fois
btfss PORTA, in ; attendre le Startbit
goto ser_RX
call Pause ; delay 1/2 Bit
btfss PORTA, in
goto ser_RX

RX_2 call Wait ; delay 1 Bit
btfsc PORTA, in ;
bcf STATUS, C ; high -> 0
btfss PORTA, in ;
bsf STATUS, C ; low -> 1
;
rrf Byte, f ;
decfsz cycl_1, f ;
goto RX_2 ; 8 fois

call Wait ; delay 1 bit
btfsc PORTA, in ; Stop-Bit 1
goto ser_RX ; si pas de StopBit 1

movf Byte, w
movwf rs232in
return

;**********************************************************
;1 bit delay
;
;
; empfang 4 MHz 10 MHz
; 2400 Bps = 69d 173d
; 4800 Bps = 34d 86d
; 9600 Bps = 16d 43d

Wait movlw D'16' ; 9600 Bps / 4 MHz
movwf cycl_2
Wait1 ;
nop
nop
nop
decfsz cycl_2, 1
goto Wait1
return

;**********************************************************
;delay 1/2 bit
;
;
; 4 MHz 10 MHz
; 2400 Bps 416T 63d 157d
; 4800 Bps = 31d 78d
; 9600 Bps = 15d 39d
;
Pause movlw D'15' ; 9600 Bps / 4 MHz
movwf Temp
Pause2 ;
decfsz Temp, f
goto Pause2
return

;**********************************************************

end