begin process at 2012 05 25 12:32:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Processeurs

 > 

Autre

 > 

programmation UART pour pic 16f84A probleme aidez moi


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

programmation UART pour pic 16f84A probleme aidez moi

samedi 6 décembre 2008 à 11:27:30 | programmation UART pour pic 16f84A probleme aidez moi

looloo78

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

samedi 10 janvier 2009 à 22:02:14 | Re : programmation UART pour pic 16f84A probleme aidez moi

bofur

pourquoi mettre des NOP alors qu'il y a déja une tempo?


G.I.G.O.
dimanche 11 janvier 2009 à 10:25:21 | Re : programmation UART pour pic 16f84A probleme aidez moi

looloo78

c'est pour pouvoir avec exactement 104µs pour chaque bit.
9600bauds.
voila, effectivement j'aurais pu faire unhe tempo pile poil mais c'est pas facile ( pour moi) alors j'ai fais une tempo grossiere et je l'ajuste avec des nops

a+

kix


Cette discussion est classée dans : bit, nop, portb, porta, tempo104


Répondre à ce message

Sujets en rapport avec ce message

condition if en asm [ par Lastar ] Salut à tous, étant débutant en asm, je voudrai savoir comment on met en place une condition if. J'ai essayé de mon coté mais sa marche pas!! Ce que j help me [ par theyoupione ] j'ai écri un ptit prog dont voici un extrait permettant d'envoyer un octet vers liaison série mais j'ai un pb lors de la compilation avec mplabl'erreu projet de fin d'année [ par jorus1212 ] Je suis en projet et je doit developpé un programme qui absorbe les données d'un pc par liaison rs232 de façon asynchronne et les stocke dans le buffe Shellcode >> asm [ par Stormy ] Salut à tous,Comment puis-je obtenir un désassemblage en formule ASM à partir d'un shellcode rédigé en hexadécimal. Ce shellcode est contenu dans un b pic16f84 serin [ par h82kev ] bjr à tousvoilà mon problèmej'utilise un pic16f84 pour un banc de test pour modemlorsque j'appui sur un bouton poussoir (pin 7), je veux envoyer un ca bits de registres [ par vecchio56 ] Salut,Je cherche le moyen le plus rapide de-connaitre le bit numero n d'un registre-mettre à b le bit numero n d'un registre(Ou si c'est possible mett lcd 2x8 en mode 4 bit [ par tsii22 ] Bonjour ,je cherche comment programmer en assembleur avec un pic16f57, un lcd DMC-50448N-E-AE, qui est un lcd 2x8 en mode 4bit. Je veux afficher des c 16F84 asm aide pour modifier une routine de RB7 à RB3 [ par pasrico ] bonjour     pic 16F84A + 24C16    voila j'ai cette routine qui marche tres bien mais je veux la modifier pour passer sur le portb,03  (RB3) mais comme commande PIC 68HC11E2 [ par salim_samir ] salut à touscomment je peut tester un bit de port c de pic 68HC11E2 et commander un clignotement de 4 lampe (si le bit x de port c est vrais fait un c


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales