Muchisimas gracias pibe. Ahora lo probare.
Pero he probado el mio, y no me funciona, en Issis, el oscilloscopia digital, no me hace nada, he utilizado el mismo esquema que tu, cambiando el micro por supuesto.
alguien me puede ayudar... creo que pibe al final ya se va a cansar... y el no sabe C, alguien que sepa algo de C me puede decir si el codigo es logico... porfavor.
Yo lo dejo aqui por si alguien se lo quiere mirar y opinar. Gracias.
#include <16f870.h>
#device adc=8
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use rs232(baud=1200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#USE FAST_IO (A)
#USE FAST_IO (B)
#USE FAST_IO (C)
//ROGRAMA PER EMULAR PROTOCOL MC145026
/////////////////////////////
////////////////////////////
// Definició de Pins
//////////////////////////
/////////////////////////
// ***** IN-CIRCUIT SERIAL PROGRAMING ***** //
// PGM ==> PIN_B3 (24)
// PGC ==> PIN_B6 (26)
// PGD ==> PIN_B7 (28)
// VDD ==> (20)
// VSS ==> (8,19)
////////////////////
//***VARIABLES***//
//////////////////
int pols = 0.5; //tiempo de un pulso(ms)
int DT = 8; //tiempo que dura un digito (ms) (Data Period)
int1 polsat; //bit de seguridad
///DECLARACIO DE FUNCIONS
void envia_paraula(void); // envia una paraula
void bit_alt (void); // high bit(1)
void bit_baix(void); // low bit(0)
void atent (void); // enviar un espacio para empezar a recibir la
// trama, para "despertar" al micro
#DEFINE envia_codi PIN_C6 //port per enviar el codi
#DEFINE polsador PIN_C3 //para hacer pruebas de envio de datos
void main()
{
set_tris_a (0b00000000);
set_tris_b (0b00000000);
set_tris_c (0b00000000);
setup_psp(PSP_DISABLED);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
disable_interrupts(GLOBAL);
while (true)
{
if (input(polsador&&(polsat==0)));//polsat=0 porque si se pulsa el
{ //boton mientras está dentro del
polsat=1; //bucle, no pase nada.
atent();
envia_paraula();
delay_ms(DT*3);
envia_paraula();
delay_ms(DT*3);
polsat=0;
}
}
}
void atent()
{
output_low(envia_codi);
delay_ms(DT);
}
void envia_paraula()
{
bit_alt(); //Una paraula la formen 9 "digits"
bit_alt(); //els 5 primers son de la direccio
bit_baix(); //i els altres 4 de la dada.
bit_baix(); //Aquests són els cinc
bit_alt(); //digits de la direccio.
bit_alt(); //Aquests són els 4 "digits"
bit_alt(); //que formen la dada.
bit_alt();
bit_baix();
}
void bit_alt()
{
output_low(envia_codi);
delay_ms(pols);
output_high(envia_codi);
delay_ms(pols*7);
output_low(envia_codi);
delay_ms(pols);
output_high(envia_codi);
delay_ms(pols*7);
output_low(envia_codi);
}
void bit_baix()
{
output_low(envia_codi);
delay_ms(pols);
output_high(envia_codi);
delay_ms(pols);
output_low(envia_codi);
delay_ms(pols*7);
output_high(envia_codi);
delay_ms(pols);
output_low(envia_codi);
delay_ms(pols*6);
}