Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Besoin d'aide pour corriger des exos pour débuter sur pic16F630 [ Archives / Les PIC ] (MTHOMAS)

vendredi 24 décembre 2004 à 01:01:35 | Besoin d'aide pour corriger des exos pour débuter sur pic16F630

MTHOMAS

J'ai fait les exos suivants pour m'entrainer à un exam. Je n'ai pas de corrigé, et je ne peux pas verifier sur le pic16F630.
Si quelqu'un peut me conseiller, je le remercie d'avance.

1) Enoncé: "Complementer à 1 le contenu des registres localisés entre les adresses $50 et $5F":

FSR EQU $00

MOVLW $50 ; W=$50
MOVWF FSR ; FSR contient l'adresse $50
MOVLW $15; w=$15
MOVWF $20; F à l'adresse $20 contient la valeur 15.
BOUCLE COMF INDF,0; complementer le contenu du registre
; qui se trouve à l'adresse contenu
; dans FSR, et le mettre dans W

INCF FSR,1 ; FSR=FSR+1
DECFZ $20,1; F=F-1
GOTO BOUCLE


2) Enoncé: "En supposant que la frequence de l'horloge du microprocesseur est de 1mhz, écrire un programme qui complemente le bit 0 du port C toutes les 500 usec".


BOUCLE2 MOVLW $500; W=$500
MOVWF COUNT; W dans count
BOUCLE DECFZ COUNT,1; COUNT=COUNT-1
BTFSC COUNT; COUNT à 0 ?
GOTO BOUCLE
COMF PORTC,0; complementer le bit 0 du portC
GOTO BOUCLE2

3)Enoncé: "Calculer et mettre dans W le nombre de bits à 1 du registre pointé par FSR".


CARRY EQU STATUS,C
FSR EQU $00

MOVLW $20; W=20
MOVWF FSR; FSR contient l'adresse $20
MOVLW $08; W=8
MOVWF $25; W dans F à l'adresse $25
; F=8
CLRW ; W=0
BTFSS INDF,CARRY; CARRY A 1 A L'ADRESSE POINTEE
; PAR FSR ?
CALL S1
CALL S2

S1 RLF INDF; rotation à gauche de la valeur contenue à
; l'adresse pointée par FSR
DECFZ $25,1; F=F-1
BTFSS INDF,CARRY; CARRY A 1?
GOTO S1 ; carry à 0, donc tourner et tester à nouveau.
CALL S2 ; carry à 1, donc tourner et ajouter 1 dans W

S2 RLF INDF; rotation à gauche
DECFZ $25,1; F=F-1
INCF 1,0 ; W=W+1
CALL S1






vendredi 24 décembre 2004 à 01:07:53 | Re : Besoin d'aide pour corriger des exos pour débuter sur pic16F630

MTHOMAS

!!!! les retraits n'ont pas été pris en compte lorsque j'ai posé mes questions. Il y a des boucles et des sous prog plus ou moins bien placés. Désolée pour le manque de clarté.

vendredi 24 décembre 2004 à 03:39:38 | Re : Besoin d'aide pour corriger des exos pour débuter sur pic16F630

phenojeff

allo tu peu quand meme faire le test dans MPLAB
je te corige le premier je tes rajouter ce quil te faut pour faire le test dans mplab mais il te manque quelque configuration encore
jai pas tros compris pourquoi tu marque $ pour une adresse
LIST p=16F630 ; Définition de processeur
#include <p16F630.inc> ; fichier include

POSITION EQU 0x20

ORG 0x000
GOTO Main


BOUCLE
MOVLW 0x50 ; W=h50
MOVWF FSR ; FSR contient l'adresse h50
MOVLW .15; W=15
MOVWF POSITION; F à l'adresse 0x20 contient la valeur 15.
BOUCLE1
COMF INDF,W; complementer le contenu du registre
; qui se trouve à l'adresse contenu
; dans FSR, et le mettre sur W

INCF FSR,F ; FSR=FSR+1
DECFSZ POSITION,F; F=F-1
GOTO BOUCLE1

Main
call BOUCLE
goto Main
END


dans le prochain tu marque BOUCLE2 MOVLW $500; W=$500
tu ne peu aller plus haut que 255 ou FF

BOUCLE2
MOVLW $500; W=$500 <- Erreur TOP .255
MOVWF COUNT; W dans count
BOUCLE
erreur->DECFZ COUNT,1; COUNT=COUNT-1 DECFSZ COUNT,F
BTFSC COUNT; Si COUNT == 0 ?
GOTO BOUCLE ; non
COMF PORTC,0; oui complementer le bit 0 du portC
GOTO BOUCLE2

CARRY EQU STATUS,C <- Erreur
ce que tu veux est avoire le mot CARRY pour le bit C de STATUS
#DEFINE CARRY STATUS,0 un peu mieux
FSR EQU $00 <- place le FSR a 0 CLRF FSR dans ton asm
MOVLW 0x20; W=h20
MOVWF FSR; FSR contient l'adresse $20
MOVLW .08; W=8
MOVWF 0x25; W dans F à l'adresse $25
; F=8
CLRW ; W=0

ceci je comprend pas mais ca ne peu etre bon
BTFSS INDF,CARRY; CARRY A 1 A L'ADRESSE POINTEE
pourquoi le Cary du STATUS serait a 1 a ladresse pointé du FSR
comprend pas
; PAR FSR ?
CALL S1
CALL S2

S1
RLF INDF,F; rotation à gauche de la valeur contenue à
; l'adresse pointée par FSR
DECFSZ 0x25,F; F=F-1

BTFSS INDF,CARRY; CARRY A 1? pour maitre le CARRY a 1
BSF CARRY ; du bit STATUS

GOTO S1 ; carry à 0, donc tourner et tester à nouveau.
CALL S2 ; carry à 1, donc tourner et ajouter 1 dans W

S2
RLF INDF,F; rotation à gauche savé dans le registre
DECFSZ 0x25,F; F=F-1
INCF W,W ; W=W+1 <- erreur ici ont ne peu le faire

ADDLW .1 ; +1 le registre W

CALL S1
a++ jespere je suis pas tros dure :)

vendredi 24 décembre 2004 à 15:43:31 | Re : Besoin d'aide pour corriger des exos pour débuter sur pic16F630

MTHOMAS

:-) non, ca va. Je vais imprimer ceci et regarder avec attention.
On verra si j'ai compris.

Merci

vendredi 24 décembre 2004 à 16:29:08 | Re : Besoin d'aide pour corriger des exos pour débuter sur pic16F630

phenojeff

re bonjour
tu peu regardé le cour 1 de bigonoff a cette adresse
http://www.abcelectronique.com/bigonoff/

a++



Cette discussion est classé dans : count, adresse, movlw, fsr, carry


Répondre à ce message

Sujets en rapport avec ce message

adresse de base d'un segment [ par gblade ] voila si qqun pouvait me dire comment on fait pour définit l'adresse de base d'un segment. j'ai vu dans certaines docs ils mettent une equate au début Problème d'adresse effective [ par Ihlianov ] Hi,J'ai un problème avec NASM, qui me rend cinglé.Je code un .Com (16 bits) et il me revoit une erreur sur l'instruction suivante : mov ax, [d Debugger! [ par keos31 ] est-ce que quelqun sait se servir de td32.exe le debugger livre avec c++?je voudrais savoir comment: -on regarde le contenu d'une certaine adresse SVP les amis - Comment convertire une adresse IP (100.100.100.100) en Hex(7) sour Win2000 [ par 31057700 ] SVP les amis - Comment convertire une adresse IP (100.100.100.100) en valeur Hex(7) sous Win2000 afin que la valeur soit intégré dans la base de regi modifier un byte d'adresse segment:offset [ par TheWhiteShadow ] ca fait pas longtemps que j'ai commencé l'asm... et j'aimerai savoir comment on fait pour modifier un octet en mémoire sans pas par DSj'ai une adresse Adresse mémoire d'une chaine [ par moffer ] Bonjour,Je veux pointer sur le premier caractère de ma chaine. Lorsque je compile le code suivant :SEGMENT DATAchaine db 'Hello$'SEGMENT TEX retour d'interruption [ par S2R ] Bonjour,Je n'arrive pas à récupérer l'adresse d'appel d'une int.J'aurais besoin de pouvoir changer l'adresse de retour d'une int (que j'ai reprogrammé Adresse de la varaiable PATH [ par cobbelguard ] CobbleguardBonjour, je debute en asm et je recherche des infos sur le moyen de recuperer et afficher la variable PATH, quel que soit le mode d'afficha Questions de debutant sur INDR, FSR, le complement ... [ par MTHOMAS ] Slt,J'apprend le langage assembleur sur pic 16F630.Dans un programme j'ai trouvé l'instruction : ADDWF INDR,0Que signifie INDR ?Comment fonctionne l PIC 16F84 & LCD piti probleme :) [ par diwee ] bonjour, j'ai essayé de programmer un pic 16f84 en mode 4-bit pour qu'il affiche un message s sur l'ecran mais en vain. Quand je branche il y a une li


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.