si il y a quelqu'un qui peut me donner l'exemlpe d'un programme qui fait allumer une led ou bien la clignoter avec le pic 16F876
-----
si il y a quelqu'un qui peut me donner l'exemlpe d'un programme qui fait allumer une led ou bien la clignoter avec le pic 16F876
re ;O]
un exemple très très court (donc facilement transposable) et commenté,
qui fait clignoter une led sur PortA en utilisant l'interruption du Timer1,
dans le post n° #18 de ce fil :
http://forums.futura-sciences.com/el...pic16f690.html
vede
;O]
ps :
sinon tape "cours BigOnOff" dans google...
c'est un des premiers exemple des cours..
Une seule réponse : Bigonoff, à lire et à comprendre !
le probléme c que moi je veuxun programme écrit en langage machine ctd assembleurre ;O]
un exemple très très court (donc facilement transposable) et commenté,
qui fait clignoter une led sur PortA en utilisant l'interruption du Timer1,
dans le post n° #18 de ce fil :
http://forums.futura-sciences.com/el...pic16f690.html
vede
;O]
ps :
sinon tape "cours BigOnOff" dans google...
c'est un des premiers exemple des cours..
re ;O]
http://www.abcelectronique.com/bigonoff/index.php
et ya ça aussi (entres autres, cici google)
http://pagesperso-orange.fr/fabrice....ic_accueil.htm
vede
;O]
ps : après te fais pas de souci, car tous les cours pour la gamme 16Fxxx
(84,88,877...) sont compatibles avec le 876... car ils se programment
tous exactement de la même façon...
ps :
et des traductions partielles de datasheets de 16Fxxx :
http://daniel.menesplier.free.fr/Doc/PIC16F88.pdf
http://z.oumnad.123.fr/Microcontrole...F876-77-V1.pdf
http://z.oumnad.123.fr/Microcontroleurs/PIC16F84.pdf
Prog qui fait clignoter tous les ports du pic16F876 période de 400ms.
pas d'int bien que la procédure de gestion d'int soit présente.
bits de config 0x3F3A HS, pas de WD, pas de LP, pas de CP
par exemple si je veux simuler le programme que tu m'aa donner sur isis je dois mettre des leds dans toutes les prorts ou koi?
ok merci j'ai bien compris votre programme mais une derniére questionne pour n'importe quel programme quel sont les instructions qui doivent étre cités toujours??????
Pour le PIC16F876
Une structure minimale
Code:ORG 0h goto _START_PIC nop nop nop RETFIE _START_PIC ; ; ; programme principal ; ; ; goto _START_PIC end
UNE autre avec l'intrerrupt
Code:w_temp EQU 071H ; svg registre W status_temp EQU 072H ; svg status swappé FSR_temp EQU 073H ; svg FSR PCLATH_temp EQU 074H ; svg PCLATH ORG 0h goto _START_PIC nop nop nop movwf w_temp ; sauver registre W swapf STATUS,w ; swap status avec résultat dans w movwf status_temp ; sauver status swappé movf FSR , w ; charger FSR movwf FSR_temp ; sauvegarder FSR movf PCLATH, w ; charger PCLATH movwf PCLATH_temp ; sauvegarder PCLATH clrf PCLATH ; passer en Page 0 GOTO _INT_PIC _START_PIC ; ; ; programme principal ; ; ; goto _START_PIC _INT_PIC ; ; ; programme interruption ; ; ; restorereg movf PCLATH_temp, w ; charger PCLATH sauvé movwf PCLATH ; restaurer PCLATH movf FSR_temp , w ; charger FSR sauvé movwf FSR ; restaurer FSR swapf status_temp,w ; swap ancien status, résultat dans w movwf STATUS ; restaurer status swapf w_temp,f ; Inversion L et H de l'ancien W ; sans modifier Z swapf w_temp,w ; Réinversion de L et H dans W ; W restauré sans modifier status RETFIE end
j'ai pas compris une chose par exemple iciPour le PIC16F876
Une structure minimale
Code:ORG 0h goto _START_PIC nop nop nop RETFIE _START_PIC ; ; ; programme principal ; ; ; goto _START_PIC end
UNE autre avec l'intrerrupt
Code:w_temp EQU 071H ; svg registre W status_temp EQU 072H ; svg status swappé FSR_temp EQU 073H ; svg FSR PCLATH_temp EQU 074H ; svg PCLATH ORG 0h goto _START_PIC nop nop nop movwf w_temp ; sauver registre W swapf STATUS,w ; swap status avec résultat dans w movwf status_temp ; sauver status swappé movf FSR , w ; charger FSR movwf FSR_temp ; sauvegarder FSR movf PCLATH, w ; charger PCLATH movwf PCLATH_temp ; sauvegarder PCLATH clrf PCLATH ; passer en Page 0 GOTO _INT_PIC _START_PIC ; ; ; programme principal ; ; ; goto _START_PIC _INT_PIC ; ; ; programme interruption ; ; ; restorereg movf PCLATH_temp, w ; charger PCLATH sauvé movwf PCLATH ; restaurer PCLATH movf FSR_temp , w ; charger FSR sauvé movwf FSR ; restaurer FSR swapf status_temp,w ; swap ancien status, résultat dans w movwf STATUS ; restaurer status swapf w_temp,f ; Inversion L et H de l'ancien W ; sans modifier Z swapf w_temp,w ; Réinversion de L et H dans W ; W restauré sans modifier status RETFIE end
il y a au début l'instruction goto _start_pic c veut dire le programme principal va étre exécuté mais a la fin du programme principal on trouve l'instruction goto _start_pic ca veut dire le programme va étre exécuté de nouveau mais mon probléme c que j'arrive pas a comprendre comment le programme va retourne icigoto _START_PIC
nop
nop
nop
movwf w_temp ; sauver registre W
swapf STATUS,w ; swap status avec résultat dans w
movwf status_temp ; sauver status swappé
movf FSR , w ; charger FSR
movwf FSR_temp ; sauvegarder FSR
movf PCLATH, w ; charger PCLATH
movwf PCLATH_temp ; sauvegarder PCLATH
clrf PCLATH ; passer en Page 0
GOTO _INT_PIC
_START_PIC
pour compléter le programme afin et exécuter cette instructionnop
nop
nop
movwf w_temp ; sauver registre W
swapf STATUS,w ; swap status avec résultat dans w
movwf status_temp ; sauver status swappé
movf FSR , w ; charger FSR
movwf FSR_temp ; sauvegarder FSR
movf PCLATH, w ; charger PCLATH
movwf PCLATH_temp ; sauvegarder PCLATH
clrf PCLATH ; passer en Page 0
GOTO _INT_PIC
[/QUOTE]GOTO _INT_PIC[/QUOTE]
C'est l'équivalent du while(1) { .... } du Cil y a au début l'instruction goto _start_pic c veut dire le programme principal va étre exécuté mais a la fin du programme principal on trouve l'instruction goto _start_pic ca veut dire le programme va étre exécuté de nouveau mais mon probléme c que j'arrive pas a comprendre comment le programme va retourne ici
le end de l'assembleur ne termine pas l'éxécution mais détermine la fin physique du prog
l'interruption arrive à l'adresse 0x04 on fait la sauvegarde des registres et on saute au programme qui exécute l'interruption.
Bonjour
j'utilise un pic18f24j50
je veux tester une carte avec le mplab et avec le compilateur c18 pour allumer des led, la carte réalisé contient des leds et ...
j'ai tester ce programme mais il y'a une erreur
je veux enfaite chaque fois que j'appui sur un bouton poussoir j'allume une led
#include <p18f24j50.h>
#include "typedefs.h"
void main(void)
{
TRISB=0b00000000; // Configuration du portA en sortie
TRISA=0b11111111; //Port C en entree
ADCON1=0;
//code
while(1)
{
if(RA4==1)
{
RB0=1;
}
else
RB0=0;
}
return 0
}
l'erreur est ;
unable to locate 'typedefs.h'
unable to locate 'io_cfg.h'
bonjour,
dzl en fait il faut pas prendre en consideration les commentaire, j'utilise port A en entrée et port B en sortie
et j'ai inclu
#include "io_cfg.h"
merci
adresse 0 au reset et adresse 04 de l'interrupt
avec 4 octets on ne peut que faire un goto vers le prog principale
en 04 on sauvegarde les registres et on va vers l'int.
on pourrait ausi la mettre à la suite sans faire de goto _int_pic