P
pete
Guest
Hoi,
Hier is een programma om 500usec maatregel twee sets van pulsen, elk gescheiden door.
Voor elke set van impulsen, het begint met een header 2.4ms puls breedte gevolgd door ofwel 0.6ms te vertegenwoordigen "0" of 1.2ms te vertegenwoordigen "1".Interval van een puls wordt 500usec.
Wanneer de juiste combinatie is ontvangen, zal de PIC brandt een LED.Input doorgaans hoog met geen signaal.Twee sets van pulsen nodig zijn om de overbrenging te controleren van de juistheid van de bron.Mijn probleem is, zijn niet actief, dat wil zeggen overeenkomend zou LED brandt niet.Elk probleem met dit programma en uw opmerkingen wordt zeer gewaardeerd.Dank je.
# Include <16f628a.h>
# Zekeringen NOMCLR, INTRC, NOWDT, NOLVP, NOBROWNOUT, PUT, NOPROTECT
# Gebruik vertraging (klok = 4000000)
# Byte CMCON = 0x1F
# Byte VRCON = 0x9F
# Define CMCON 7
# Define VRCON 0
# Byte PORTB = 0x06
# Byte porta = 0x05int loop = 0, abyte [4] = (1,1,1,1), abyte1 [4] = (0,0,0,0), status [4] = (0,0,0,0);
lang c;
void hier (lang);
void decoderen (void);
getpulsewidth void (void);
nietig te analyseren (void);
delay_ms (10); / / te stabiliseren op power-up
# INT_EXT
getpulsewidth void (void)
(
setup_timer_1 (T1_DISABLED);
set_timer1 (0);
while (! ingang (PIN_B0));
setup_timer_1 (T1_INTERNAL | T1_DIV_BY_1);
while (ingang (PIN_B0));
setup_timer_1 (T1_DISABLED);
c = get_timer1 ();
)
main ()
(
while (true)
(
set_tris_a (0b11110000);
port_b_pullups (TRUE);
set_tris_b (0b11111101);
setup_timer_1 (T1_INTERNAL | T1_DIV_BY_1);
ext_int_edge (H_TO_L);
enable_interrupts (INT_EXT);
enable_interrupts (GLOBAL);
hier (c);
decode ();
te analyseren ();
)
)
void hier (lang c)
(
if (c <200 | | c == 0)
(
bit_clear (porta, 0);
bit_clear (porta, 1);
bit_clear (porta, 2);
)
)
void decoderen (void)
(
int i;
for (i = 0; i <= 3; i )
(
getpulsewidth ();
status = c;
)
for (i = 0; i <= 3; i )
(
if (status <100)
abyte = 0;
anders
abyte = 1;
)
lus lus = 1;
)
te analyseren ()
(
if (lus> 1)
(
if ((abyte [0] == abyte1 [0 ])&&( abyte [1] == abyte1 [1 ])&&( abyte [2] == abyte1 [2]) & &
(Abyte [3] == abyte1 [3]))
(
if (! abyte [0] & & abyte [1] & & abyte [2] & & abyte [3])
output_high (PIN_A0);
else if (abyte [0] & &! abyte [1] & &! abyte [2] & &! abyte [3])
output_low (PIN_A0);
else if (abyte [0] & &! abyte [1] & & abyte [2] & & abyte [3])
output_high (PIN_A1);
else if (! abyte [0] & & abyte [1] & &! abyte [2] & &! abyte [3])
output_low (PIN_A1);
else if (abyte [0] & & abyte [1] & &! abyte [2] & & abyte [3])
output_high (PIN_A2);
else if (! abyte [0] & &! abyte [1] & & abyte [2] & &! abyte [3])
output_low (PIN_A2);
)
)
anders
(
int i;
for (i = 0; i <= 3; i )
abyte1 = abyte ;
decode ();
)
)
Hier is een programma om 500usec maatregel twee sets van pulsen, elk gescheiden door.
Voor elke set van impulsen, het begint met een header 2.4ms puls breedte gevolgd door ofwel 0.6ms te vertegenwoordigen "0" of 1.2ms te vertegenwoordigen "1".Interval van een puls wordt 500usec.
Wanneer de juiste combinatie is ontvangen, zal de PIC brandt een LED.Input doorgaans hoog met geen signaal.Twee sets van pulsen nodig zijn om de overbrenging te controleren van de juistheid van de bron.Mijn probleem is, zijn niet actief, dat wil zeggen overeenkomend zou LED brandt niet.Elk probleem met dit programma en uw opmerkingen wordt zeer gewaardeerd.Dank je.
# Include <16f628a.h>
# Zekeringen NOMCLR, INTRC, NOWDT, NOLVP, NOBROWNOUT, PUT, NOPROTECT
# Gebruik vertraging (klok = 4000000)
# Byte CMCON = 0x1F
# Byte VRCON = 0x9F
# Define CMCON 7
# Define VRCON 0
# Byte PORTB = 0x06
# Byte porta = 0x05int loop = 0, abyte [4] = (1,1,1,1), abyte1 [4] = (0,0,0,0), status [4] = (0,0,0,0);
lang c;
void hier (lang);
void decoderen (void);
getpulsewidth void (void);
nietig te analyseren (void);
delay_ms (10); / / te stabiliseren op power-up
# INT_EXT
getpulsewidth void (void)
(
setup_timer_1 (T1_DISABLED);
set_timer1 (0);
while (! ingang (PIN_B0));
setup_timer_1 (T1_INTERNAL | T1_DIV_BY_1);
while (ingang (PIN_B0));
setup_timer_1 (T1_DISABLED);
c = get_timer1 ();
)
main ()
(
while (true)
(
set_tris_a (0b11110000);
port_b_pullups (TRUE);
set_tris_b (0b11111101);
setup_timer_1 (T1_INTERNAL | T1_DIV_BY_1);
ext_int_edge (H_TO_L);
enable_interrupts (INT_EXT);
enable_interrupts (GLOBAL);
hier (c);
decode ();
te analyseren ();
)
)
void hier (lang c)
(
if (c <200 | | c == 0)
(
bit_clear (porta, 0);
bit_clear (porta, 1);
bit_clear (porta, 2);
)
)
void decoderen (void)
(
int i;
for (i = 0; i <= 3; i )
(
getpulsewidth ();
status = c;
)
for (i = 0; i <= 3; i )
(
if (status <100)
abyte = 0;
anders
abyte = 1;
)
lus lus = 1;
)
te analyseren ()
(
if (lus> 1)
(
if ((abyte [0] == abyte1 [0 ])&&( abyte [1] == abyte1 [1 ])&&( abyte [2] == abyte1 [2]) & &
(Abyte [3] == abyte1 [3]))
(
if (! abyte [0] & & abyte [1] & & abyte [2] & & abyte [3])
output_high (PIN_A0);
else if (abyte [0] & &! abyte [1] & &! abyte [2] & &! abyte [3])
output_low (PIN_A0);
else if (abyte [0] & &! abyte [1] & & abyte [2] & & abyte [3])
output_high (PIN_A1);
else if (! abyte [0] & & abyte [1] & &! abyte [2] & &! abyte [3])
output_low (PIN_A1);
else if (abyte [0] & & abyte [1] & &! abyte [2] & & abyte [3])
output_high (PIN_A2);
else if (! abyte [0] & &! abyte [1] & & abyte [2] & &! abyte [3])
output_low (PIN_A2);
)
)
anders
(
int i;
for (i = 0; i <= 3; i )
abyte1 = abyte ;
decode ();
)
)