M
M3GAPL3X
Guest
Hi guys,
Aš stengiuosi atlikti paprastas Timer0 programa jei lemputės šviesos išjungimas ir ne po 1 sekundę.Aš naudojant 8 bitų laikmatį, 31 kHz, vidaus LPINSRC laikrodis su 1:30 iki scaler.LED's nėra sveriame išjungimo ir kaip ir kaip ne kartą.Jie tiesiog vyksta nuo išvykti beveik instanteously.
Štai mano kodas:
Kodas:/ / LED bus mirksìti ir ne kas 1 sekundė be pertraukinėja# include <p18f14k50.h>/ / pragma kodai
# pragma config FOSC = IRC / / kad Vidaus generatorius/ / funkcija prototipams
void init (void);void main ()
(
TRISC = 0x00; / / nustatyti PORTC tiek rezultatų
LATC = 0x00;init ();o (1)
(/ / jei overflow vėliava yra nustatyta timer0, nutvieksti lemputės, anuliuoti overflow vėliava bit ir atkurti TMR0L baitų į 0x05
jei (INTCONbits.TMR0IF == 1)
(
LATC = 0xFF;
/ / INTCONbits.TMR0IF = 0;
TMR0L = 0x05;
))
)/ / Funkcija initalize generatorius registrai
void init (tuščia)
(
OSCCONbits.SCS1 = 1;
/ / kad 31 kHz kHz laikrodis
OSCCONbits.IRCF2 = 0;
OSCCONbits.IRCF1 = 0;
OSCCONbits.IRCF0 = 0;OSCCONbits.OSTS = 0; / / prietaisas veikia iš vidaus generatorius
OSCTUNEbits.INTSRC = 0 / / 31 kHz, prietaisas yra gaunami tiesiogiai iš LFINTOSC/ / Configure Timer0
T0CONbits.T08BIT = 1; / / Timer0 sukonfigūruotas kaip 8 bitų registrą/ / Vidaus Instrukcija ciklo Clocka
T0CONbits.T0CS = 0;T0CONbits.PSA = 0;
/ / Configure prescale vertė 1:32
T0CONbits.T0PS2 = 0;
T0CONbits.T0PS1 = 1;
T0CONbits.T0PS0 = 0;/ / load TMR0L, kurių vertė 05
TMR0L = 0x05;
INTCONbits.TMR0IF = 0;/ / įjungti TMR0 po įjungimo visų susijusių registrų
T0CONbits.TMR0ON = 1;
)
/**************** PASTABOS *************
Su 31 kHz, laikrodis, dažnis 31 kHz / 4 = apie 8 kHz.
8 kHz atitinka
į ,125 ms į komandą, kad 8000 per sekundę.
Su 32 bitų anksto Skaliarinė,
instrukcijas už ss 4.
Todėl apie 250 impulsų per sekundę.
8 bitų laikmatį, gali turėti
didžiausia vertė 256, todėl apkrova TMR0L su 0x05.
* /
Aš stengiuosi atlikti paprastas Timer0 programa jei lemputės šviesos išjungimas ir ne po 1 sekundę.Aš naudojant 8 bitų laikmatį, 31 kHz, vidaus LPINSRC laikrodis su 1:30 iki scaler.LED's nėra sveriame išjungimo ir kaip ir kaip ne kartą.Jie tiesiog vyksta nuo išvykti beveik instanteously.
Štai mano kodas:
Kodas:/ / LED bus mirksìti ir ne kas 1 sekundė be pertraukinėja# include <p18f14k50.h>/ / pragma kodai
# pragma config FOSC = IRC / / kad Vidaus generatorius/ / funkcija prototipams
void init (void);void main ()
(
TRISC = 0x00; / / nustatyti PORTC tiek rezultatų
LATC = 0x00;init ();o (1)
(/ / jei overflow vėliava yra nustatyta timer0, nutvieksti lemputės, anuliuoti overflow vėliava bit ir atkurti TMR0L baitų į 0x05
jei (INTCONbits.TMR0IF == 1)
(
LATC = 0xFF;
/ / INTCONbits.TMR0IF = 0;
TMR0L = 0x05;
))
)/ / Funkcija initalize generatorius registrai
void init (tuščia)
(
OSCCONbits.SCS1 = 1;
/ / kad 31 kHz kHz laikrodis
OSCCONbits.IRCF2 = 0;
OSCCONbits.IRCF1 = 0;
OSCCONbits.IRCF0 = 0;OSCCONbits.OSTS = 0; / / prietaisas veikia iš vidaus generatorius
OSCTUNEbits.INTSRC = 0 / / 31 kHz, prietaisas yra gaunami tiesiogiai iš LFINTOSC/ / Configure Timer0
T0CONbits.T08BIT = 1; / / Timer0 sukonfigūruotas kaip 8 bitų registrą/ / Vidaus Instrukcija ciklo Clocka
T0CONbits.T0CS = 0;T0CONbits.PSA = 0;
/ / Configure prescale vertė 1:32
T0CONbits.T0PS2 = 0;
T0CONbits.T0PS1 = 1;
T0CONbits.T0PS0 = 0;/ / load TMR0L, kurių vertė 05
TMR0L = 0x05;
INTCONbits.TMR0IF = 0;/ / įjungti TMR0 po įjungimo visų susijusių registrų
T0CONbits.TMR0ON = 1;
)
/**************** PASTABOS *************
Su 31 kHz, laikrodis, dažnis 31 kHz / 4 = apie 8 kHz.
8 kHz atitinka
į ,125 ms į komandą, kad 8000 per sekundę.
Su 32 bitų anksto Skaliarinė,
instrukcijas už ss 4.
Todėl apie 250 impulsų per sekundę.
8 bitų laikmatį, gali turėti
didžiausia vertė 256, todėl apkrova TMR0L su 0x05.
* /