Hola, alguien me puede ayudar con el tema, por ahora he hecho un codigo que envie una trama fija de bits, alguien me puede decir si funciona, ya que no consigo utilizarlo en el Proteus.
#device adc=8
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=8000000)
#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 Globals
////////////////////
///////////////////
///DECLARACIO DE FUNCIONS
void envia_paraula(void); // envia una paraula
void bit_alt (void); // high bit(1)
void bit_baix(void); // low bit(0)
#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));
{
envia_paraula();
delay_ms(
;
delay_ms(
;
envia_paraula();
delay_ms(
;
delay_ms(
;
}
}
}
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()
{
delay_ms(0.5);
output_high(envia_codi);
delay_ms(3.5);
output_low(envia_codi);
delay_ms(0.5);
output_high(envia_codi);
delay_ms(3.5);
output_low(envia_codi);
}
void bit_baix()
{
delay_ms(0.5);
output_high(envia_codi);
delay_ms(0.5);
output_low(envia_codi);
delay_ms(3.5);
output_high(envia_codi);
delay_ms(0.5);
output_low(envia_codi);
delay_ms(3.5);
}