Communication rs232 et pic 16F84A

mimogauss Messages postés 3 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 19 mars 2012 - 6 mars 2012 à 20:06
MEZZIMARIEM Messages postés 7 Date d'inscription mercredi 28 mars 2012 Statut Membre Dernière intervention 21 avril 2012 - 21 avril 2012 à 11:32
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

joko1967 Messages postés 5 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 19 mars 2012
19 mars 2012 à 10:40
Bonjour,
en quoi tu veux programmer? (MPLAB...)
Il te faut émission et réception?
Et a quelle vitesse?

A+
0
mimogauss Messages postés 3 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 19 mars 2012
19 mars 2012 à 11:31
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.
0
joko1967 Messages postés 5 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 19 mars 2012
19 mars 2012 à 11:53
Ok, je vais te préparer encore une routine de transmission pour envoyer le données au PC.

A+
0
joko1967 Messages postés 5 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 19 mars 2012
19 mars 2012 à 11:59
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mimogauss Messages postés 3 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 19 mars 2012
19 mars 2012 à 14:23
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+
0
joko1967 Messages postés 5 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 19 mars 2012
19 mars 2012 à 15:32
Envoie moi déjà la routine que tu as pour lire les données. Alors je te prépare une routine adéquate.
A+
0
niwar Messages postés 1 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 30 mars 2012
30 mars 2012 à 09:39
Bonjour, je cherche comment communiquer entre un pc et une machine a travers RS232 en mikroPascal Pic16f877.
Merci
0
MEZZIMARIEM Messages postés 7 Date d'inscription mercredi 28 mars 2012 Statut Membre Dernière intervention 21 avril 2012
21 avril 2012 à 11:32
bonjour,
il faut faire une convertition entre rs485 et rs232
0
joko1967 Messages postés 5 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 19 mars 2012
19 mars 2012 à 11:12
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
-1
Rejoignez-nous