hola gente, recurro a su sabiduría...
lo que intento hacer es un contador que registre en un determinado tiempo cuantas veces se hubo un 1 el cada pin del portb
#include <16F873.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES PUT //Power Up Timer
#FUSES PROTECT //Code protected from reads
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
// 9600 baudios,8 bits sin paridad
#use fast_io(B)
#byte portb = 0x06
void main()
{
int entrada[8];
int reg_v;
int reg0;
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
set_tris_b (0xff);
// TODO: USER CODE!!
reg0 = portb;
for(;;)
{
if (reg0!=reg_v)
{
if (bit_test (reg0,0)&& bit_test (!reg_v,0)) entrada[0]++;
if (bit_test (reg0,1)&& bit_test (!reg_v,1)) entrada[1]++;
if (bit_test (reg0,2)&& bit_test (!reg_v,2)) entrada[2]++;
if (bit_test (reg0,3)&& bit_test (!reg_v,3)) entrada[3]++;
if (bit_test (reg0,4)&& bit_test (!reg_v,4)) entrada[4]++;
if (bit_test (reg0,5)&& bit_test (!reg_v,5)) entrada[5]++;
if (bit_test (reg0,6)&& bit_test (!reg_v,6)) entrada[6]++;
if (bit_test (reg0,7)&& bit_test (!reg_v,7)) entrada[7]++;
reg_v=reg0;
}
reg0=reg0++;
}
}
hay otra forma de hacerlo?? la parte del tiempo no la hice..
no se si esta está bien...
saludos
Osvaldo