bojour tlm,
voila comme je suis débutant en pic, je suis le cours de bigonof, j'ai réalisé mon premier prgm led_cli qui fait clignoter une led, voila le programme en asm, que j'ai déja simuler sur mplab et ça marche,mais apres avoir réaliser le circuit ci joint rien ne marche pas de signale sur RA2, qu'es ce que je doit faire , les tensions sont normale sur les pins mais....???
peut etre parceque g utiliser un 16f84A?? et pas un 16f84?????
;***************************** ****************************** ***********
; Ce fichier est la base de départ pour une programmation avec *
; le PIC 16F84. Il contient les informations de base pour *
; démarrer. *
; *
; Si les interruptions ne sont pas utilisées, supprimez les lignes *
; entre ORG 0x004 et l'étiquette init. De plus, les variables *
; w_temp et status_temp peuvent être supprimées. *
; *
;***************************** ****************************** ***********
; *
; NOM: Led_cli *
; Date: 29/12/2009 *
; Version: 1.0 *
; Circuit: platine d'essai
; Auteur: abdou
; *
;***************************** ****************************** ***********
; *
; Fichier requis: P16F84.inc *
; *
; *
; *
;***************************** ****************************** ***********
; *
; Notes: ce programme permet de faire clignoter une led sur le *
; port A2 de la pic à une fréquence de 1Hz *
; *
; *
; *
;***************************** ****************************** ***********
LIST p=16F84A ; Définition de processeur
#include <p16F84A.inc> ; Définitions des constantes
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
; '__CONFIG' précise les paramètres encodés dans le processeur au moment de
; la programmation du processeur. Les définitions sont dans le fichier include.
; Voici les valeurs et leurs définitions :
; _CP_ON Code protection ON : impossible de relire
; _CP_OFF Code protection OFF
; _PWRTE_ON Timer reset sur power on en service
; _PWRTE_OFF Timer reset hors-service
; _WDT_ON Watch-dog en service
; _WDT_OFF Watch-dog hors service
; _LP_OSC Oscillateur quartz basse vitesse
; _XT_OSC Oscillateur quartz moyenne vitesse
; _HS_OSC Oscillateur quartz grande vitesse
; _RC_OSC Oscillateur à réseau RC
;***************************** ****************************** **********
; ASSIGNATIONS *
;***************************** ****************************** **********
OPTIONVAL EQU H'0008' ; Valeur registre option
; Résistance pull-up ON
; Pas de préscaler
;***************************** ****************************** **********
; DEFINE *
;***************************** ****************************** **********
; exemples
; ---------
#DEFINE LED PORTA,2 ; LED de sortie sur RA2
#DEFINE BOUTON PORTB,2 ; bouton poussoir sur RB2
;***************************** ****************************** **********
; MACRO *
;***************************** ****************************** **********
LEDON macro
bsf LED
endm
LEDOFF macro
bcf LED
endm
;
;***************************** ****************************** **********
; DECLARATIONS DE VARIABLES *
;***************************** ****************************** **********
CBLOCK 0x00C ; début de la zone variables
cmpt1 : 1 ; compteur de boucle 1
cmpt2 : 1 ; compteur de boucle 2
cmpt3 : 1 ; compteur de boucle 3
ENDC ; Fin de la zone
;***************************** ****************************** ***********
; DEMARRAGE SUR RESET *
;***************************** ****************************** ***********
org 0x000 ; Adresse de départ après reset
goto init ; Adresse 0: initialiser
;***************************** ****************************** **********
; INITIALISATIONS *
;***************************** ****************************** **********
init
clrf PORTA ; Sorties portA à 0
clrf PORTB ; sorties portB à 0
bsf STATUS,RP0 ; sélectionner banque 1
clrf EEADR ; permet de diminuer la consommation
movlw OPTIONVAL ; charger masque
movwf OPTION_REG ; initialiser registre option
; Effacer RAM
; ------------
movlw 0x0c ; initialisation pointeur
movwf FSR ; pointeur d'adressage indirec
init1
clrf INDF ; effacer ram
incf FSR,f ; pointer sur suivant
btfss FSR,6 ; tester si fin zone atteinte (>=40)
goto init1 ; non, boucler
btfss FSR,4 ; tester si fin zone atteinte (>=50)
goto init1 ; non, boucler
;Initialisations spécifiques
bcf LED ;LED en sortie (banque1)normalement
;on devait mettre bcf TRISA,2 mais
;comme on est à banque1 c idem
bcf STATUS,RP0 ;passer en banque0
goto start
;***************************** ****************************** **********
; SOUS ROUTINE DE TEMPORISATION *
;***************************** ****************************** **********
;
; Cette sous-routine introduit un retard de 500,000 µs
; Elle ne reçoit aucun paramètre et n'en retourne aucun
tempo
movlw 2 ; pour 2 boucles
movwf cmpt3 ; initialiser compteur3
boucle3
clrf cmpt2 ; effacer compteur2
boucle2
clrf cmpt1 ; effacer compteur1
boucle1
nop ; perdre 1 cycle*256*256*2
decfsz cmpt1,f ; décrémente compteur1
goto boucle1 ; si pas 0 boucler
decfsz cmpt2,f ; si 0 décrémente compteur2
goto boucle2 ; si cmpt2 pas 0 recommencer boucle1
decfsz cmpt3,f ; si cmpt2 0 décrémente compteur3
goto boucle3 ; si cmpt3 pas 0 recommencer la boucle2
return ; retour de la sous-routine
;***************************** ****************************** **********
; PROGRAMME PRINCIPAL *
;***************************** ****************************** **********
start
LEDON ;allumer la led
call tempo ;appeler la tempo de 0.5s
LEDOFF ;éteindre la led
call tempo ;appeler la tempo de 0.5s
goto start ; boucler
END ; directive fin de programme
pour le schéma j'ai pas pu l'envoyer mais c simple:
PIN RA2------>R=330 Ohm------>LED------>0V
PIN MCLR-----> 5v
PIN Vss--------> 0v
PIN OSC IN ------->premiere patte quartz----->C=27pF----->0v
PIN OSC OUT ------->deusieme patte quartz----->C=27pF----->0v
PIN Vdd---------------> 5v
merci
-----