Professional Documents
Culture Documents
#use standard_io(B)
void main()
set_tris_A(255);
set_tris_C(255);
set_tris_D(255);
Patilla RB3 del pic como data al pin 1 data in del 74hc164
Patilla RB4 del pic como clock al pin 8 clk del 74hc164
Patilla RB2 del pic (con resistencia 10k) al pin 9 (clr) del 74hc164
Programa en c
#include <16F628.h>
#use delay(clock=4000000)
#use fast_io(B)
void main()
delay_ms(5000); // Dejamos un retardo antes del inicio del programa para evitar
fallo con el programador
set_tris_b(0x00); //activamos puerta b como salida
while (true)
{
output_bit(PIN_B2,0); //clear
delay_us(1);
output_bit(PIN_B2,1);
output_bit(PIN_B4,0); // clock low
for (n=0;n<7;n++)
{
output_bit(PIN_B3,i[n]); //data
output_bit(PIN_B4,1); // clock high
delay_us(1); //
output_bit(PIN_B4,0); // clock low
}
Lo que se pretende como se podrá observar es que se iluminen los leds 1, 3,4 y 5. Si le
quito el clear en cada while hace exactamnte lo mismo.
Con todo esto se encienden todos los leds sin más. He conseguido con otras
modificaciones encender los leds con parpadeos muy rápidos pero sin sentido.