T
tyassin
Guest
Hoi
Ik doe een paar eenvoudige oefeningen en erg nieuw voor MCU.Maar ik heb een probleem met een zeer eenvoudige C-code (zie hieronder).
De code is supossed aan het licht vier LED's op de PICkit te tellen 1,2,4,8.Dit moet het licht van de LED's in serie, een voor een.
Maar dit werkt alleen wanneer ik een "vertraging" die gelijk is aan 5 of minder.Als ik een "vertraging" van zeg 500 dan alleen de eerste LED (RC0) wordt ontstoken.De andere uitgangen zijn nul.De "msecbase"-functie moet 1ms vertraging.De PIC is 16F690.
Code:# include <pic.h>
__config (INTIO & WDTDIS & MCLRDIS & opheffen);unsigned korte vertraging = 7;
void pause (unsigned korte msvalue);
void msecbase (void);main ()
(
Ansel = 0;
CM1CON0 = 0;
CM2CON0 = 0;
PORTC = 0x00;
TRISC = 0x00;
while (1 == 1)
(
int x;
voor (x = 1; x <9; x = x * 2)
(
PORTC = x;
pauzeren (vertraging);
)
)
)void pause (unsigned korte msvalue)
(
unsigned korte y;
for (y = 0; y <= msvalue; y )
(
msecbase ();
)
)void msecbase (void)
(
OPTION = 0b00000001;
TMR0 = 0xD;
while (! T0IF);
T0IF = 0;
)
Ik doe een paar eenvoudige oefeningen en erg nieuw voor MCU.Maar ik heb een probleem met een zeer eenvoudige C-code (zie hieronder).
De code is supossed aan het licht vier LED's op de PICkit te tellen 1,2,4,8.Dit moet het licht van de LED's in serie, een voor een.
Maar dit werkt alleen wanneer ik een "vertraging" die gelijk is aan 5 of minder.Als ik een "vertraging" van zeg 500 dan alleen de eerste LED (RC0) wordt ontstoken.De andere uitgangen zijn nul.De "msecbase"-functie moet 1ms vertraging.De PIC is 16F690.
Code:# include <pic.h>
__config (INTIO & WDTDIS & MCLRDIS & opheffen);unsigned korte vertraging = 7;
void pause (unsigned korte msvalue);
void msecbase (void);main ()
(
Ansel = 0;
CM1CON0 = 0;
CM2CON0 = 0;
PORTC = 0x00;
TRISC = 0x00;
while (1 == 1)
(
int x;
voor (x = 1; x <9; x = x * 2)
(
PORTC = x;
pauzeren (vertraging);
)
)
)void pause (unsigned korte msvalue)
(
unsigned korte y;
for (y = 0; y <= msvalue; y )
(
msecbase ();
)
)void msecbase (void)
(
OPTION = 0b00000001;
TMR0 = 0xD;
while (! T0IF);
T0IF = 0;
)