Rechercher : dans
Par :

Programmation UART pic16f84 assembleur

Dernière réponse le 3 fév 2009 à 19:14:18 kixxxx, le 6 déc 2008 à 14:17:45 
 Signaler ce message aux modérateurs

Bonjour,

j'ai créer ce programme en m'inspirant d'autre programme, le but étant de lire les 8 bits des portB0-7 et de les envoyer par le portA1 suivant le protocole 9600bds, pas de bit de parité 1 bit d'arret .
soit 1 bit tous les 104µs.
j'utilise un quartz 4Mhz soit 1cycle/1µs.
j'envoi un signal sur le portA,0 pour demander le traitement.

je vous présente mon prog, il ya surement un erreur.( je sais beaucoup de nop mais bon...)

************************************************
; 9600 bauds/s 8 bits de données Pas de bit de parité
; 1 bit de STOP Pas de contrôle de flux

List p=16F84A ; processeur utilisé
#include <p16F84A.inc>

__config _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
;bits de configuration :
;code protect OFF
;watchdog timer OFF
;power up timer ON
;oscillateur HS (quartz 4 MHz)

;xxxxxx
; macro
;xxxxxx

bank1 macro ; passage en banque 1
bsf STATUS,RP0
endm

bank0 macro ; passage en banque 0
bcf STATUS,RP0
endm

;xxxxxxxxxxxxxxxxxxxxxxxxx
; déclaration de variables
;xxxxxxxxxxxxxxxxxxxxxxxxx

CBLOCK 0x000C ; début de la zone des registres d'usage général du 16F84A

compteur_tempo104 : 1

ENDC

;xxxxxxxxxxxxxxxxxxxx
; démarrage sur reset
;xxxxxxxxxxxxxxxxxxxx

org 0x0000
goto initialisation

;xxxxxxxxxxxxxxx
; initialisation
;xxxxxxxxxxxxxxx

initialisation

bank0
clrf PORTA ; mise à 0 des sorties du port A
clrf PORTB ; mise à 0 des sorties du port B

bank1
movlw B'00000001'
movwf TRISA
; bit 0 du port A (RA0) = 1 : configuration en entrée (RX)
; bits 1 à 4 du port A (RA1 à RA4) = 1 : configuration en sortie

movlw B'11111111'
movwf TRISB
; bit 0 du port B (RB0) = 0 : configuration en entrée
; bit 1 du port B (RB1) = 0 : configuration en entrée
; bit 2 du port B (RB2) = 0 : configuration en entrée
; bit 3 du port B (RB3) = 0 : configuration en entrée
; bit 4 du port B (RB4) = 0 : configuration en entrée
; bit 5 du port B (RB5) = 0 : configuration en entrée
; bit 6 du port B (RB6) = 0 : configuration en entrée
; bit 7 du port B (RB7) = 0 : configuration en entrée

bank0
movlw B'00011110'
movwf PORTA

movlw D'17'
movwf compteur_tempo104
goto debut_programme

;xxxxxxxxxxxxxxxxxxxxx
; programme principal
;xxxxxxxxxxxxxxxxxxxxx

debut_programme

; on attend un front montant sur A0
btfss PORTA , 0
goto debut_programme ; RX = 1

bcf PORTA,1
call tempo104
nop
nop
nop
nop
nop
nop
nop
nop
btfsc PORTB,0
bsf PORTA,1
call tempo104
nop
nop
nop
nop
nop
nop
btfsc PORTB,1
bsf PORTA,1
btfss PORTB,1
bcf PORTA,1
call tempo104
nop
nop
nop
nop
nop
nop
btfsc PORTB,2
bsf PORTA,1
btfss PORTB,2
bcf PORTA,1
call tempo104
nop
nop
nop
nop
nop
nop
btfsc PORTB,3
bsf PORTA,1
btfss PORTB,3
bcf PORTA,1
call tempo104
nop
nop
nop
nop
nop
nop
btfsc PORTB,4
bsf PORTA,1
btfss PORTB,4
bcf PORTA,1
call tempo104
nop
nop
nop
nop
nop
nop
btfsc PORTB,5
bsf PORTA,1
btfss PORTB,5
bcf PORTA,1
call tempo104
nop
nop
nop
nop
nop
nop
btfsc PORTB,6
bsf PORTA,1
btfss PORTB,6
bcf PORTA,1
call tempo104
nop
nop
nop
nop
nop
nop
btfsc PORTB,7
bsf PORTA,1
btfss PORTB,7
bcf PORTA,1
call tempo104
nop
nop
nop
nop
nop
nop
nop
nop
nop
bsf PORTA,1
call tempo104
nop
nop
nop
nop
nop
nop
nop
nop
nop

goto debut_programme

; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
; routine de temporisation de 104 µs (104 cycles avec un quartz 4 MHz)
tempo104

decf compteur_tempo104 , f
movf compteur_tempo104 , f
btfss STATUS , Z
goto tempo104 ; compteur_tempo104 <> 0
movlw D'17'
movwf compteur_tempo104
nop
nop
nop
nop
return

END


kix

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « programmation UART pic16f84 assembleur » dans :
Compiler un programme assembleur avec Nasm VoirAvec Linux Etape 1. Créer un fichier source Etape 2. Assembler le fichier source Etape 3. Création de l'executable Etape 4. Execution du programme Avec windows Etape 1. Installer les logiciels nécessaires Etape 2. Créer un fichier...
Liens utiles assembleur x86 VoirVoici quelques liens utiles pour l'assembleur x86. Le but étant de compiler des documents pertinents autant pour ceux qui débutent que pour ceux qui sont à l'aise dans ce domaine. Tutoriels Références complètes Assembleur sous...
Télécharger MediaJoin VoirMediaJoin est un programme qui vous permet d'assembler facilement tous les formats populaires audio et vidéo en un seul fichier fusionné audio ou vidéo. Les formats supportés incluent MP3, WMA, WAV, OGG, AVI, MPEG-1, MPEG-2 et WMV. En option, il...
Ecrire un programme en assembleur VoirLa compilation du programme Le programme doit être saisi dans un fichier texte non formaté (c'est-à-dire sans caractères en gras, souligné, avec des polices de caractères de différentes tailles, ...) appelé fichier source. En effet,...
Introduction à l'assembleur VoirLes prérequis nécessaires Le langage assembleur est très proche du langage machine (c'est-à-dire le langage qu'utilise l'ordinateur : des informations en binaire, soit des 0 et des 1). Il dépend donc fortement du type de processeur. Ainsi il...
Les procédures en assembleur VoirLa notion de procédure En langage assembleur, on appelle procédure un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la procédure. Cette notion de sous-programme est généralement appelée fonction dans d'autres...

1

 Nim65s, le 3 fév 2009 à 19:14:18

Bonsoir
Je sais pas si ton problème persiste, mais j'ai déjà fait ce programme pour mon PPE l'an dernier ; en regardant vite fait, je pense que la seule différence est le bit de stop : je crois qu'il dure un bit et demi chez moi... Enfin, ca te servira peut être :)

Les sources se trouvent là : http://vectoriailes.free.fr/FTP/Bonus%20=)/PS-v2/

Répondre à Nim65s
Collection CommentÇaMarche.net