Problem s pic program [vyřešeno].

G

Guma

Guest
Postavil jsem se tohoto programu, c, je to pod vedením pingpong, na pic 16f877a, ale program doesnt práce 100%, LED diody pohybovat na jedné straně a dont návratu, a já nevím proč.
Může mi někdo pomoct??

program je:# Include <htc.h>

int direction = 0;

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

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

while (1)
(

)
)neplatné přerušení my_isr (void)
(

if (směr == 0)
(
T0IF = 0;
PORTD = PORTD * 10;
if (RD0 == 1)
(
direction = 1;
)
)
jiný
(
T0IF = 0;
PORTD = PORTD/10;
if (RD7 == 1)
(
direction = 0;
)
)
)
Naposledy upravil Eraser dne 31 července 2008 21:19; edited 1 krát v celkové

 
mohou u nás schematickém?<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Úsměv" border="0" />
 
xxtigerxx napsal:

mohou u nás schematickém?<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Úsměv" border="0" />
 
Nechápu, který bit vzor je určena nebo jak PORTD = PORTD * 10, respektive PORTD = PORTD/10 může generovat užitečné vzor.

 
Snažil jsem se dát portd = portd>> 1 a portd = portd <<1, a výsledek jeho stejný.

 
Ahoj!
Testoval jsem tento kód do Proteus.Funguje to dobře.Takže test tento na ur hardware.
Doufám, že to bude úspěšné.
Jde.

# Include <htc.h>

__CONFIG (XT & WDTDIS & PWRTDIS & BORDIS & LVPEN & WRTEN & DEBUGDIS & DUNPROT & Odemknout);

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

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

while (1)
(

)
)neplatné přerušení my_isr (void)
(

if (směr == 0)
(
T0IF = 0;
PORTD = PORTD>> 1;
if (RD0 == 1)
(
direction = 1;
)
)
jiný
(
T0IF = 0;
PORTD = PORTD <<1;
if (RD7 == 1)
(
direction = 0;
)
)
)

 
Ohh

PORTD = PORTD <<1;??

není to tak

použít proměnnou pro posun v PORT

Například:

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

 

Welcome to EDABoard.com

Sponsor

Back
Top