U
umery2k75
Guest
Jag är nöjd med koden, den kod som fungerar bra och jag vet det enkla logiska fungerande avbryter och hur man ställer in värden för att få önskad respons, men den sak som stör mig är att, varför Timer 1 startar den verksamhet mycket sent?Jag har tittat på det här i
sin databladet också, men jag kunde inte hitta någonting.Om du folk vet om detta, så säg mig, men jag kan inte hoppas att det här problemet kan besvaras.Jag tror på det här sättet, eftersom jag kunde inte hitta någonting om PIC16F877A datasheet som en faktor som har sin effekt på Timer1 drift.Jag har två koder en som gjordes runt Timer0 8-bitars och andra byggdes runt Timer1 16-bitars.
TIMER 0 (8-bit)
==========
Kod:
# include <16F877A.H>
# include <string.h>
# använda dröjsmål (clock = 03579545)
# säkringar NODEBUG, XT, NOWDT, PUT, NOPROTECT, NOLVP
# använda RS232 (baud = 2400, xmit = PIN_C6, ONU = PIN_C7)
# define INTS_PER_SECOND 6
int8 int_counts;
int8 ledstate = 0;
int8 Hun_Milli_Seconds_Count = 0;# int_rtcc
void clock_isr ()
(
if (- int_counts == 0)
(
Hun_Milli_Seconds_Count;
int_counts = INTS_PER_SECOND;
)
)void Main ()
(
set_tris_b (0x00);
output_low (PIN_B0);
setup_counters (RTCC_INTERNAL, RTCC_DIV_64);
enable_interrupts (INT_RTCC);
enable_interrupts (GLOBAL);
samtidigt (1)
(
if (Hun_Milli_Seconds_Count == 0) / / utgör ca.
en sek
(
output_high (PIN_B0);
)if (Hun_Milli_Seconds_Count == 1) / / utgör ca.
en sek
(
output_low (PIN_B0);
)if (Hun_Milli_Seconds_Count == 2) / / utgör ca.
en sekHun_Milli_Seconds_Count = 0;
))
sin databladet också, men jag kunde inte hitta någonting.Om du folk vet om detta, så säg mig, men jag kan inte hoppas att det här problemet kan besvaras.Jag tror på det här sättet, eftersom jag kunde inte hitta någonting om PIC16F877A datasheet som en faktor som har sin effekt på Timer1 drift.Jag har två koder en som gjordes runt Timer0 8-bitars och andra byggdes runt Timer1 16-bitars.
TIMER 0 (8-bit)
==========
Kod:
# include <16F877A.H>
# include <string.h>
# använda dröjsmål (clock = 03579545)
# säkringar NODEBUG, XT, NOWDT, PUT, NOPROTECT, NOLVP
# använda RS232 (baud = 2400, xmit = PIN_C6, ONU = PIN_C7)
# define INTS_PER_SECOND 6
int8 int_counts;
int8 ledstate = 0;
int8 Hun_Milli_Seconds_Count = 0;# int_rtcc
void clock_isr ()
(
if (- int_counts == 0)
(
Hun_Milli_Seconds_Count;
int_counts = INTS_PER_SECOND;
)
)void Main ()
(
set_tris_b (0x00);
output_low (PIN_B0);
setup_counters (RTCC_INTERNAL, RTCC_DIV_64);
enable_interrupts (INT_RTCC);
enable_interrupts (GLOBAL);
samtidigt (1)
(
if (Hun_Milli_Seconds_Count == 0) / / utgör ca.
en sek
(
output_high (PIN_B0);
)if (Hun_Milli_Seconds_Count == 1) / / utgör ca.
en sek
(
output_low (PIN_B0);
)if (Hun_Milli_Seconds_Count == 2) / / utgör ca.
en sekHun_Milli_Seconds_Count = 0;
))