Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Autres EDI > MPLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/11/2010, 10h48   #1
jéjéleboss
Invité de passage
 
jerome forcioli
Inscription : mai 2010
Messages : 60
Détails du profil
Informations personnelles :
Nom : jerome forcioli

Informations forums :
Inscription : mai 2010
Messages : 60
Points : 4
Points : 4
Par défaut [PIC 16F84] Faire clignoter une led lorsqu'on appuie sur un bouton poussoir

Bonjour

Je travaille sous MPLAB et j'ai réalisé un programme qui permet de faire clignoter une led lorsque j'appuie sur un bouton poussoir.

Voici mon programme

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

;--------------------------Exemple d'application avec un PIC : un clignotant--------------------------------------------------------
;Titre:Clignotant
;Date:03 novembre 2010
;Auteur:Jérôme Forcioli
;PIC utilisé:PIC 16F84
;On réalise un clignotant sur la broche RB0 d'un PIC 16F84
;Le quartz est de 4MHz.On effectue une tempo environ égale à 0,2s.
;Un bouton marche  sur le port A permet de lancer un clignotant.
;--------------------------Directivité d'assemblage pour MPLAB-----------------------------------------------------------------------
list p=16f84A
#include p16f84A.inc
_config H'3FF9'
;-------------------------Définition des constantes----------------------------------------------------------------------------------
#define inter0 0          ;bouton marche         
;-------------------------Définition des registres temporaires------------------------------------------------------------------------
retard1 EQU 0*0C          ;le registre temporaire retard1
                          ;se trouve à l'adresse 0C

retard2 EQU 0*0F          ;le registre temporaire retard2
                          ;se trouve à l'adresse 0F

memo    EQU 0*12          ;le registre temporaire memo
                          ; se trouve à l'adresse 12                      
;-------------------------initialisation des PORTS A et B------------------------------------------------------------------------------
ORG 0
BSF STATUS,5              ;On met à 1 le 5ème bit du registre status pour accéder à la 2ème page 
                          ;mémoire(pour TRISA et TRISB)

MOVLW 0*00                ;On met 00 l'adresse dans le registre w
MOVWF TRISB               ;On met le registre w dans TRISB


MOVLW 0*1F                ;On met 1F l'adresse dans le registre w
MOVWF TRISA               ;On met w dans le registre TRISA

BCF STATUS,5              ;On met  à 0 le 5ème bit du registre status pour accéder à la 1er page 
                          ;mémoire 
;-------------------------Raz de la led et de registre memo---------------------------------------------------------------------------
MOVLW 0*00
MOVWF PORTB
MOVWF memo
;-------------------------Programme Principal---------------------------------------------------------------------------------------
debut

BTFSS PORTA,inter0
GOTO debut
MOVLW 0*FF
MOVWF retard1
MOVWF retard2
COMF memo,F

MOVF memo,W;
MOVWF PORTB
CALL tempo
GOTO debut
;------------------------Programme de temporisation-----------------------------------------------------------------------------------
tempo

DECFSZ retard1,F
GOTO tempo
MOVLW 0*FF
MOVWF retard1
DECFSZ retard2,F

GOTO tempo

RETURN

END
Le problème est que lorsque je compile celui ci me met le message d'erreur suivant:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

Make: The target "C:\Program Files\Microchip\clignotant.o" is out of date.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F84A "clignotant.asm" /l"clignotant.lst" /e"clignotant.err"
Warning[205] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 10 : Found directive in column 1. (list)
Error[122]   C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 12 : Illegal opcode (H)
Warning[205] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 25 : Found directive in column 1. (ORG)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 26 : Found opcode in column 1. (BSF)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 29 : Found opcode in column 1. (MOVLW)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 30 : Found opcode in column 1. (MOVWF)
Message[302] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 30 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 33 : Found opcode in column 1. (MOVLW)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 34 : Found opcode in column 1. (MOVWF)
Message[302] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 34 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 36 : Found opcode in column 1. (BCF)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 39 : Found opcode in column 1. (MOVLW)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 40 : Found opcode in column 1. (MOVWF)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 41 : Found opcode in column 1. (MOVWF)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 45 : Found opcode in column 1. (BTFSS)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 46 : Found opcode in column 1. (GOTO)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 47 : Found opcode in column 1. (MOVLW)
Error[113]   C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 47 : Symbol not previously defined (FF)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 48 : Found opcode in column 1. (MOVWF)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 49 : Found opcode in column 1. (MOVWF)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 50 : Found opcode in column 1. (COMF)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 52 : Found opcode in column 1. (MOVF)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 53 : Found opcode in column 1. (MOVWF)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 54 : Found opcode in column 1. (CALL)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 55 : Found opcode in column 1. (GOTO)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 59 : Found opcode in column 1. (DECFSZ)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 60 : Found opcode in column 1. (GOTO)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 61 : Found opcode in column 1. (MOVLW)
Error[113]   C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 61 : Symbol not previously defined (FF)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 62 : Found opcode in column 1. (MOVWF)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 63 : Found opcode in column 1. (DECFSZ)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 65 : Found opcode in column 1. (GOTO)
Warning[203] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 67 : Found opcode in column 1. (RETURN)
Warning[205] C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 69 : Found directive in column 1. (END)
Halting build on first failure as requested.
BUILD FAILED: Fri Nov 05 10:43:33 2010
Je comprend pas bien ce qu'il veut me dire est ce quelqu'un peut m'aider??
jéjéleboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2010, 08h12   #2
jéjéleboss
Invité de passage
 
jerome forcioli
Inscription : mai 2010
Messages : 60
Détails du profil
Informations personnelles :
Nom : jerome forcioli

Informations forums :
Inscription : mai 2010
Messages : 60
Points : 4
Points : 4
Bonjour,

je comprend pas bien mes erreurs dans mon programme. J'en ai trois au total

La 1er erreur est la suivante:

la deuxième se trouve dans le programme principal:

Code :
1
2
3
4
5

MOVLW 0*FF               ;On met FF dans le registre w
MOVWF retard1
......
La troisième erreur est la suivante:

Code :
1
2
3
4

MOVLW 0*FF
MOVWF retard2
Ce qui pour les deux dernières erreurs il connait pas il le considère comme un nombre hexadécimal.

Les messages d'erreur pour les deux dernières erreurs sont les suivants:

Code :
1
2
3

Error[113]   C:\USERS\ZODA\DOCUMENTS\CLIGNOTANT.ASM 50 : Symbol not previously defined (FF)
Est ce quelqu'un pourrait m'aider?
jéjéleboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2010, 11h46   #3
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 639
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 4 639
Points : 11 097
Points : 11 097
Apparemment, « FF » est reconnu par le compilo comme un symbole (inconnu) et non comme une constante numérique. Essaie de mettre un « h » à la fin, ou de la faire précéder d'un zéro.
Obsidian est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 16h27   #4
pont-
Invité régulier
 
Inscription : mai 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 7
Points : 9
Points : 9
Bonjour jejeleboss,

Je ne voudrais pas te faire de la peine, mais c'est impossible de t'aider, toutes tes lignes ont des problèmes, tu compliques tout, je te donne un exemple; tu mets 2 lignes pour mettre à zéro un tris au lieu de:
Il n'y a pas les numéros de lignes en côté gauche, je ne vois pas où tu entres ton bouton poussoir, il faudrait une routine de test d'une entrée, tu te lances dans du trop compliqué, abandonne le poussoir, fais juste un clignotant sans tempo sur RB0, cela marche très bien:
Code :
1
2
3
4
Cli
     BSF         PORTB,0           ; allume la led sur RB0   pendant 1µS
     BCF         PORTB,0           ; éteint la led pendant 1µS 
     GOTO      Cli                    ; retour qui dure 2µS, la led est éteinte
Donc tu verras ta led allumée 1µS et éteinte 3µS, si tu veux que ce soit équilibré, tu rajoutes deux NOP après la ligne du BCF.
Tu regardes cela avec ton oscillo, aux bornes de la résistance de 390 ohms de ta led. Pour le moment, tu n'es pas prêt pour écrire une tempo qui tienne la route.
Je te conseillerais d'examiner des programmes simples.
Cordialement
pont
pont- est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h01.


 
 
 
 
Partenaires

Hébergement Web