T
tyassin
Guest
Oi
Estou fazendo alguns exercícios simples e muito novo para MCU.Porém tenho um problema com um simples código C (ver abaixo).
O código é supossed à luz quatro LEDs na PICkit contar 1,2,4,8.Isso deve acender os LEDs na seqüência, um por um.
No entanto isto só funciona quando eu tenho um "atraso" igual a 5 ou menos.Se eu tiver um "atraso" de 500, em seguida, dizer apenas o primeiro LED (RC0) está aceso.As outras saídas são iguais a zer "msecbase" função deve fazer 1ms atras PIC é 16F690.
Código:# include <pic.h>
__config (INTIO & WDTDIS & MCLRDIS & Unprotect);unsigned short delay = 7;
void pause (unsigned short msvalue);
void msecbase (void);main ()
(
ANSEL = 0;
CM1CON0 = 0;
CM2CON0 = 0;
PORTC = 0x00;
TRISC = 0x00;
while (1 == 1)
(
int x;
for (x = 1 x <9; x = x * 2)
(
PORTC = x;
pausa (delay);
)
)
)void pause (unsigned short msvalue)
(
unsigned short y;
for (y = 0; y <= msvalue; y )
(
msecbase ();
)
)void msecbase (void)
(
OPÇÃO = 0b00000001;
TMR0 = 0xD;
while (! T0IF);
T0IF = 0;
)
Estou fazendo alguns exercícios simples e muito novo para MCU.Porém tenho um problema com um simples código C (ver abaixo).
O código é supossed à luz quatro LEDs na PICkit contar 1,2,4,8.Isso deve acender os LEDs na seqüência, um por um.
No entanto isto só funciona quando eu tenho um "atraso" igual a 5 ou menos.Se eu tiver um "atraso" de 500, em seguida, dizer apenas o primeiro LED (RC0) está aceso.As outras saídas são iguais a zer "msecbase" função deve fazer 1ms atras PIC é 16F690.
Código:# include <pic.h>
__config (INTIO & WDTDIS & MCLRDIS & Unprotect);unsigned short delay = 7;
void pause (unsigned short msvalue);
void msecbase (void);main ()
(
ANSEL = 0;
CM1CON0 = 0;
CM2CON0 = 0;
PORTC = 0x00;
TRISC = 0x00;
while (1 == 1)
(
int x;
for (x = 1 x <9; x = x * 2)
(
PORTC = x;
pausa (delay);
)
)
)void pause (unsigned short msvalue)
(
unsigned short y;
for (y = 0; y <= msvalue; y )
(
msecbase ();
)
)void msecbase (void)
(
OPÇÃO = 0b00000001;
TMR0 = 0xD;
while (! T0IF);
T0IF = 0;
)