begin process at 2012 05 25 03:43:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Divers

 > 

Débutant(e)

 > 

enregistrement de trame de telecommande dans une PIC


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

enregistrement de trame de telecommande dans une PIC

jeudi 5 mai 2011 à 22:14:04 | enregistrement de trame de telecommande dans une PIC

jayahti




bonsoir à tous!
avec une pic 16F84A je voudrai commander un relai par télécommande.
Pour être plus claire,le pic doit en premier lieu enregistrer la trame d'une bouton de la télécommande dans son EEPROM. En suite quand il recevrai la même trame, il actionne le relai.
J'ai déjà commencé avec la réception de trame mais le problème c'est sur la sauvegarde et la récupération de la trame sur l'EEPROM.
Est ce que quelqu'un pourrai m'aider a résoudre ce problème.
Je vous remercie déjà pour votre aide.
lundi 14 mai 2012 à 21:51:19 | Re : enregistrement de trame de telecommande dans une PIC

rawigoto

; Récepteur 3 voies - Télécommande HF
; Doumai.Terret@Wanadoo.fr
; Merci de laisser mon adresse si vous modifiez le programme
; Résonnateur = 4Mhz
;
LIST P=16F628, F=INHX8M, r=dec
include "P16F628.inc"
;
__CONFIG _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _XT_OSC
;
; Do not show warnings
ERRORLEVEL -224
;
; Déclaration des variables
;
cblock 0x20
TRAME0,TRAME1,TRAME2 ; 4 bits de la trame reçue, en cours, 1ère mémo, 2ème mémo
I,J,K ; pour le comptage
ST3 ; pour le comptage entre deux trames
endc
;
; Define
;
#define CAV1 PORTB,0 ; Cavalier Mode impulsionnel / bistable
#define REL1 PORTB,5 ; Relais K3
#define REL2 PORTB,6 ; Relais K2
#define REL3 PORTB,7 ; Relais K1
#define LED1 PORTA,1 ; Témoin de réception
#define REC PORTA,2 ; Entrée numérique en provenance du récepteur

;
org 0
goto Start
;
org 10

Start bcf STATUS,RP0 ; Bank 0
movlw 0x07 ; Désactivation du mode comparateur et
movwf CMCON ; passe en mode Entrées / Sorties
;
bsf STATUS,RP0 ; Bank 1
movlw B'00000001' ;
movwf TRISB ; RB0 Cavalier, RB5 à RB7 relais
movlw B'00000100' ;
movwf TRISA ; RA1 LED, RA2 réception HF
bcf STATUS,RP0 ; Bank 0
;
clrf PORTB ; Tous les relais non alimentés
clrf PORTA ; LED éteinte
;
Debut bcf LED1 ; Eteint la LED de réception
;
; Lecture du cavalier
; Si on est en mode impulsionnel, on coupe l'alim des relais
;
btfss CAV1 ; Test l'état du cavalier
clrf PORTB ; Coupe l'alim relais
;
; Détection d'un état 0 de 1,5 ms sur REC pour la lecture de la première trame
; On test 255 fois si le signal reçu est à 0
; Si c'est le cas, on se situe entre deux trames
;
movlw 0xFF
movwf ST3 ; ST3=255
InterT0 btfss REC ; Test de l'état logique du signal HF reçu
goto InterT1 ; Le signal est à 0
goto Debut ; Le signal est à 1, on attend une inter trame
InterT1 decfsz ST3,F ; Décrémente ST3
goto InterT0 ; On continu à tester REC
;
; On est dans une inter-trame
; Lecture et sauvegarde des 4 bits ( les 3 poussoirs + 1 bit à 0 )
;
call Trame ; Lecture des 4 bits
movf TRAME0,W
movwf TRAME1 ; Sauvegarde des 4 bits qui viennent d'être lus dans TRAME1
;
; Détection d'un état 0 de 1,5 ms sur REC pour la lecture de la deuxième trame
;

Det1 movlw 0xFF
movwf ST3
InterT2 btfss REC
goto InterT3
goto Debut
InterT3 decfsz ST3,F
goto InterT2
;
; On est dans une inter-trame
; Lecture et sauvegarde des 4 bits
;
call Trame ; Lecture des 4 bits
movf TRAME0,W
movwf TRAME2 ; Sauvegarde des 4 bits qui viennent d'être lus dans TRAME2
;
; Comparaison des deux trames recues par HF. Les 2 trames doivent être identiques
;
movf TRAME1,W ; W=TRAME1
subwf TRAME2,W ; W=TRAME2-TRAME1
btfsc STATUS,Z ; Test si le résultat est nul
goto Comp0 ; Les deux trames sont identiques
goto Debut ; Les deux trames sont différentes
Comp0
;
; Détection d'un état 0 de 1,5 ms sur REC pour la lecture de la troisième trame
;

Det2 movlw 0xFF
movwf ST3
InterT4 btfss REC
goto InterT5
goto Debut
InterT5 decfsz ST3,F
goto InterT4
;
; On est dans une inter-trame
; Lecture et sauvegarde des 4 bits
;
call Trame ; Lecture des 4 bits
movf TRAME0,W
movwf TRAME2 ; Sauvegarde des 4 bits qui viennent d'être lus dans TRAME2
;
; Comparaison des deux trames recues par HF. Les 2 trames doivent être identiques
;
movf TRAME1,W ; W=TRAME1
subwf TRAME2,W ; W=TRAME2-TRAME1
btfsc STATUS,Z ; Test si le résultat est nul
goto Comp1 ; Les deux trames sont identiques
goto Debut ; Les deux trames sont différentes
Comp1
;
; Mode impulsionnel : Cavalier en place
; Les deux trames sont identiques
; Mise à l'état 1 de l'une des 3 sorties
;
btfsc CAV1 ; Test l'état du cavalier
goto Bist ; On saute au mode bistable
; On est en mode impulsionnel
bsf LED1 ; Allume la LED de réception
movf TRAME2,W ; W=TRAME2
;
movlw 0x40 ; Relais K1 à la réception
subwf TRAME2,W ; K1 ?
btfsc STATUS,Z ; Si pas K1, on va traiter K2
bsf REL1 ; K1 alimenté
;
movlw 0x20 ; Relais K2 à la réception
subwf TRAME2,W
btfsc STATUS,Z
bsf REL2
;
movlw 0x10
subwf TRAME2,W ; Relais K3 à la réception
btfsc STATUS,Z
bsf REL3
;
goto Att ; Attente 2 secondes évite les rebonds
;
; Mode bistable : pas de cavalier
; Les deux trames sont identiques
; Changement de l'état de l'une des 3 sorties
;
Bist bsf LED1 ; Allume la LED de réception
movf TRAME2,W ; W=TRAME2
;
Rel1 movlw 0x40 ; Relais K1 à la réception
subwf TRAME2,W ; K1 ?
btfss STATUS,Z ; Skip si K1
goto Rel2 ; Ce n'est pas K1, on va traiter K2
movlw 0x20 ; Masque pour K1
xorwf PORTB,F ; Change l'état du relais K1
;
Rel2 movlw 0x20 ; Relais K2 à la réception
subwf TRAME2,W
btfss STATUS,Z
goto Rel3
movlw 0x40
xorwf PORTB,F ; Change l'état du relais K2
;
Rel3 movlw 0x10 ; Relais K3 à la réception
subwf TRAME2,W
btfss STATUS,Z
goto Att ; A
movlw 0x80
xorwf PORTB,F ; Change l'état du relais K3
;
; On attend 2 secondes en mode bistable pour que le poussoir soit relâché
; On attend 2 secondes en mode impulsionnel pour éviter les rebonds du BP
; Trois boucles imbriquées
;
Att movlw 10
movwf K
T0 movlw 255
movwf J
T1 movlw 255
movwf I
T2 decfsz I,F
goto T2
decfsz J,F
goto T1
decfsz K,F
goto T0
;
goto Det1 ; On part relire une trame
;
; On sort d'une inter-trame
; Extraction des 4 bits d'une trame
;
Trame clrf TRAME0 ; TRAME0=0 La trame courante est stockée dans TRAME0
movlw 4 ; Pour lecture des 4 bits
movwf K ; K=4
Ext1 btfsc REC ; On est encore dans l'inter trame
goto Ext2 ; Front montant
goto Ext1 ; On attend le premier front montant
Ext2 btfss REC ; on est sur un état haut, on attend le front descendant
goto Ext3 ; Front descendant
goto Ext2 ; On attend le front descendant
;
Ext3 movlw 120 ; Attente d' 1,5 bit (environ 375 µs)
movwf I ; pour se retrouver au milieu du bit à lire
Temp15 decfsz I,F
goto Temp15
;
movf PORTA,W ; W=PORTA
movwf I ; I=PORTA
rrf I,F ; Trois rotations pour retrouver RA2 (bit à lire) sur Carry
rrf I,F ;
rrf I,F ; REC dans le bit de Carry
rrf TRAME0,F ; sauvegarde du bit qui vient d'être lu dans TRAME0,7
;
movlw 70 ; Attente d'une durée approximative d'un bit
movwf I ; pour se retrouver juste avant le prochain front descendant.
Temp10 decfsz I,F ; 212 µs
goto Temp10
;
decfsz K,F ; On décrémente K
goto Ext2 ; On passe à la lecture du bit suivant
; ; La lecture des 4 bits est terminée
; swapf TRAME0,F ; Le code sur les 4 bits sur le quartet de poids faible
;
movlw 160 ; Les 4 bits ont été lus, on passe le bit Stop et
movwf I ; on saute dans l'inter-trame
Temp16 decfsz I,F ; 482 µs
goto Temp16
;
Return
;
; Tempo de 127 µs
;
Temp300
movlw 41
movwf I
Temp300a
decfsz I,F ; 127 µs ()
goto Temp300a
Return
;
end








Cette discussion est classée dans : enregistrement, trame, pic, telecommande, sad2


Répondre à ce message

Sujets en rapport avec ce message

CONSTRUIRE UNE TRAME à PARTIR D'UN PIC [ par firdaoussa ] Bonjour, je suis sur un projet qui consiste à realiser un transfert de données a partir d'une carte.le premeir travail c'est construire une trame com Lecture d'une carte à puce Gold (pic16f84) par pic16f876 [ par yeuh ] salut assembleurs ! Dans le cadre d'un projet de fin d'etude ( realisation d'un système de pointage a base de pic 1f876 et une carte a puce qui conti pic16F877 [ par sben21 ] bonsoir à tous!!!!!! je suis débutant dans le domaine de programmation de pic et je dois réaliser un code qui lit une variable à partir de pic 16F877 CAN du pic 16F876 et module UART [ par sniple ] salut a tous, j'ai un petit problème d'utilisation du CAN du pic 16F876A. en effet,j'ai réalisé mon programme en configurant les registres adcon0 et a calculatrice pic 16f877a [ par assaiil86 ] bonjour on me demande de réaliser une calculatrice à l'aide d'un microcontrôleur PIC 16F877A. 1-conception de la carte qui sert de simulateur 2-prog microcontroleur [ par fleur7couleur ] "on doit réaliser un système d'alarme à base de PIC 16f877 et envoi d'un SMS via un GSM" on a répartie notre projet en deux parties et on a pu réalise compteur par pic 16f84 [ par matrix6131 ] je suis debutant à la prog assembleur je suis besoins de votre aide au niveau de l'utilisation du TIMER0 DU pic16f84 en mode compteur (RA4).JE VOUS RE génération de temporisation a base d'un pic 16F84 [ par rosalinda44 ] salut tous, j'espère que vous m'aidez pour trover le code assembleur: suite à un montage d'initiation à base de PIC 16F84 qui permet de réaliser un co Gestion de l'heure avec PIC [ par bast05 ] Bonjour, Est que quelqu'un peut me dire si un PIC peut facilement gérer ( puis afficher ) la date et heure ou est ce qu'il faut obligatoirement ajoute moteur pas a pas avec pic 16F84 [ par ninnoucha ] svp je debute avec les microcontroleurs et je veux commander un moteur pas a pas unipolaire avec des boutons poussoirs en mode demi pas avec un pic 16


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,108 sec (3)

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