begin process at 2012 05 25 05:26:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Les PIC

 > 

Besoin d'aide pour corriger des exos pour débuter sur pic16F630


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

Besoin d'aide pour corriger des exos pour débuter sur pic16F630

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ée 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 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


Nos sponsors


Sondage...

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 : 0,936 sec (4)

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