probleme de programmer une interreption interne en pic16f876

< Sujet précédent  Sujet suivant >
Index du Forum -> Forum des Projets fin d'études, mini-projets et des réalisations electroniques -> Projets fin d'études
AuteurMessage
Tunisia.png sahar12
Newbie



Messages : 1
Inscrit(e) le: 24/02/2012
Posté le 28/04/2012 15:10  
probleme de programmer une interreption interne en pic16f876
[colorcolorj ai une problème de programmer une interruption interne qui calcule le temps d exécution du programme, indépendant de l autre instruction.
par exp , après un certain temps écoule (5 min) le moteur retourne a ça position initial.

j ai fait ce programme en mikropascal ,mais linterreption ca marche pas :/


program temps_avec_le_caule_d_interrept;



var pause : integer ;
var counter : word;
procedure Interrupt();

begin
Inc(counter); // Increment value of counter on every interrupt
PIR1.TMR1IF := 0; // clear TMR1IF
TMR1L := 0x00;
if (counter = 300) then // if counter is 76
begin
portb.0:=1;
end
end;

begin

T1CON := 1; // Timer1 settings
PIR1.TMR1IF := 0; // clear TMR1IF
TMR1H := 0x80; // Initialize Timer1 register
TMR1L := 0x00;
PIE1.TMR1IE := 1; // enable Timer1 interrupt
counter := 0; // initialize counter
INTCON := 0xC0; // Set GIE, PEIE
pause :=0;
trisb:=$F0;
trisc:=$FF;
trisa:=$FF;
portb:=0;

while TRUE do
begin
// if (counter = 3000) then // if counter is 76
begin
//pause:= pause + 1 ;
portb.2:=1;delay_ms(200);
//counter := 0; // rese
t c
ounter
end;[/color]

Revenir en haut | Permalien
Tunisia.png salem
Member



Messages : 102
Inscrit(e) le: 09/01/2008
Posté le 01/05/2012 01:13  
RE : probleme de programmer une interreption interne en pic16f876
program temps_avec_le_caule_d_interrept;



var pause : integer ;
var counter : word;
procedure Interrupt();

begin

counter := counter+1; // Increment value of counter on every interrupt
clearbit(pir1,TMR1IF); //clear

if (counter = 300) then // if counter is 76
begin
portb.0:=1;
end;
end;

begin

T1CON := 1; // Timer1 settings
clearbit(pir1,TMR1IF); // clear TMR1IF
PIE1 := 1; //*******enable interrupt
counter := 0; // initialize counter
INTCON := 0xC0; // Set GIE, PEIE
pause :=0;
trisb:=$F0;
trisc:=$FF;
trisa:=$FF;
portb:=0;

while TRUE do
begin
// if (counter = 3000) then // if counter is 76
//begin
//pause:= pause + 1 ;
portb.2:=1;//delay_ms(200);


//counter := 0; // reset counter
end;
end.



ce programme fonctionne et RB0 et mise en 1 apres 300 interruption de timer1 mais il faut un peut de temps


ce temps et relative a la frequance de votre projet

Revenir en haut | Permalien

Haut de page

© 2019 Technologue pro, cours électricité électronique informatique · © 2007 - 2019 Technologue pro - Ressources pédagogiques pour l'enseignement technologique en Tunisie
Usage dans un cadre strictement académique

Technologue: cours en ligne gratuit en électricité, électronique, informatique industrielle et mécanique pour l'enseignement technologique en Tunisie et offre des cours en ligne en génie électrique, informatique, mécanique, une base de données de TP, projets fin d'études et un annuaire de ressources pédagogiques
Licence - Sitemap - Qui somme nous ? - confidentialité- Tunisie Index
J'accepte
Ce site web utilise des cookies. Nous utilisons des cookies pour vous offrir la meilleure expérience sur notre site Web. Plus d'infos