Problème avec le programme PIC [RESOLU].

E

Eraser

Guest
J'ai construit ce programme, en C, il s'agit d'un ping-pong a abouti, le pic 16F877A, mais le travail doesnt programme 100%, le passage des LEDs pour une part, et dont le retour, et je ne sais pas pourquoi.
Can anyone help me???

le programme est le suivant:# include <htc.h>

int direction = 0;

__CONFIG (XT & WDTDIS & PWRTDIS & BORDIS & LVPEN & WRTEN & DEBUGDIS & DUNPROT & DÉVERROUILLER);void inittimer0 (void)
(
T0CS = 0;
T0SE = 0;
PSA = 0;
PS2 = 1;
PS1 = 1;
PS0 = 1;
TMR0 = 0;
)

void initporto (void)
(
TRISD = 0;
PORTD = 0;
RD7 = 1;
)void interrupcoes (void)
(
T0IF = 0;
T0IE = 1;
GIE = 1;
)void main (void)
(
inittimer0 ();
initporto ();
interrupcoes ();

while (1)
(

)
)my_isr void interrupt (void)
(

if (direction == 0)
(
T0IF = 0;
PORTD = PORTD * 10;
if (RD0 == 1)
(
direction = 1;
)
)
autre
(
T0IF = 0;
PORTD = PORTD/10;
if (RD7 == 1)
(
direction = 0;
)
)
)
Dernière édition par Eraser le 31 Juil 2008 20:19, édité 1 fois au total

 
u peut nous donner le schéma?<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />
 
xxtigerxx a écrit:

u peut nous donner le schéma?<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />
 
Je ne vois pas quel modèle binaire est destiné ou comment PORTD = PORTD * 10 respectivement PORTD = PORTD/10 peuvent générer un modèle utile.

 
J'ai essayé de mettre PORTD PORTD =>> = 1 et PORTD PORTD <<1, et le résultat c'est la même chose.

 
Salut!
J'ai testé ce code dans Proteus.It works fine.Donc tester ce matériel sur UR.
J'espère que ce sera un succès.
Observe.

# include <htc.h>

__CONFIG (XT & WDTDIS & PWRTDIS & BORDIS & LVPEN & WRTEN & DEBUGDIS & DUNPROT & DÉVERROUILLER);

int direction = 0;
void inittimer0 (void)
(
T0CS = 0;
T0SE = 0;
PSA = 0;
PS2 = 1;
PS1 = 1;
PS0 = 1;
TMR0 = 0;
)

void initporto (void)
(
TRISD = 0;
PORTD = 0;
RD7 = 1;
)void interrupcoes (void)
(
T0IF = 0;
T0IE = 1;
GIE = 1;
)void main (void)
(
inittimer0 ();
initporto ();
interrupcoes ();

while (1)
(

)
)my_isr void interrupt (void)
(

if (direction == 0)
(
T0IF = 0;
PORTD PORTD =>> 1;
if (RD0 == 1)
(
direction = 1;
)
)
autre
(
T0IF = 0;
PORTD = PORTD <<1;
if (RD7 == 1)
(
direction = 0;
)
)
)

 
ohh

PORTD = PORTD <<1;???

ne faites pas de cette façon

utiliser une variable pour passer à PORT

Par exemple:

unsigned char c = 80;PORTD = c>> i;Pallav Aggarwal
Simpaltechnologies, Inde

 
namqn a écrit:Eraser a écrit:

Le programme fonctionne déjà.
Merci.
 

Welcome to EDABoard.com

Sponsor

Back
Top