Paso 5: El código en CCS C.
#fuses INTRC_IO, WDT, NOPROTECT, NOBROWNOUT, NOLVP, NOMCLR, NOPUT
#use delay(clock=4000000)
#use rs232 (baud = 9600, xmit = PIN_A3, rcv = PIN_A4)
#define use_portb_lcd TRUE
#include < lcd.c > / / rutina de LCD
definir
//==========================================================================
#define m1 pin_a1 //playback/record (bajo = registro; alto = reproducción)
#define m2 pin_a0 //end de mensaje (baja al final de cada mensaje de pulso)
#define m3 pin_a7 //power abajo (divisoria alta para colocar en modo de espera)
#define m4 pin_a6 //chip permitir (bajo para activar el dispositivo)
#define m5 pin_b7 //bit-8 del perno de dirección
#define pin_b6 m6 //bit-9 del perno de dirección
#define m7 pin_b5
#define m8 pin_b4
#define chip_on output_low (pin_a2)
#define chip_off output_high (pin_a2)
#define rec_on output_low (pin_a3)
#define rec_off output_high (pin_a3)
#define ocupado! input(pin_a5)
#define gazpedal! input(pin_b0)
#define anfi_on output_high(pin_a4)
#define anfi_off output_low(pin_a4)
#define delsur 500
prototipo de función (cada función debe tener un prototipo de función)
//==========================================================================
void turbin1() {}
rec_off;
delay_ms(50);
anfi_on;
delay_ms(150);
chip_on;
delay_ms(50);
output_low(M1);
delay_ms(100);
output_high(M1);
tiempo ocupado (busy); esperar
anfi_off;
chip_off;
delay_ms(100);
}
void turbin2() {}
rec_off;
delay_ms(50);
anfi_on;
delay_ms(150);
chip_on;
delay_ms(50);
output_low(m2);
delay_ms(100);
output_high(m2);
tiempo ocupado (busy); esperar
anfi_off;
chip_off;
delay_ms(100);
}
void turbin3() {}
rec_off;
delay_ms(50);
anfi_on;
delay_ms(150);
chip_on;
delay_ms(50);
output_low(m3);
delay_ms(100);
output_high(m3);
tiempo ocupado (busy); esperar
anfi_off;
chip_off;
delay_ms(100);
}
void turbin4() {}
rec_off;
delay_ms(50);
anfi_on;
delay_ms(150);
chip_on;
delay_ms(50);
output_low(M4);
delay_ms(100);
output_high(M4);
tiempo ocupado (busy); esperar
anfi_off;
chip_off;
delay_ms(100);
}
/ * void registro (dirección int16) //this función es iniciar la operación de registro en la dirección dada
{//the dirección rango es de 0 a 600 que representa de 0 a 60 segundos
temp de unsigned char;
output_low(PD); activar ISD
delay_ms(150); corto retardo
output_low(PR); Seleccione modo de grabación (0 = rec, 1 = juego)
output_d(Address); establecer el valor de la dirección de bit0 al bit 7
Temp = Dirección >> 8;
Si ((temp&0x01) == 0) output_low(a8);
output_high(a8) otra cosa; establecer el bit de dirección 8
Si ((temp&0x02) == 0) output_low(a9);
output_high(a9) otra cosa; establecer el bit de dirección 9
delay_ms(10); corto retardo
output_low(CE); Iniciar registro
while(!INPUT(tusrec));
}
juego vacío (int16 dirección) //this función es iniciar la operación de reproducción en la dirección dada
{//the dirección rango es de 0 a 600 que representa de 0 a 60 segundos
temp de unsigned char;
output_low(PD); activar ISD
anfiac;
delay_ms(100); corto retardo
output_high(PR); Seleccione el modo de reproducción (0 = rec, 1 = juego)
output_d(Address); establecer el valor de la dirección de bit0 al bit 7
Temp = (dirección >> 8);
Si ((temp&0x01) == 0) output_low(a8);
output_high(a8) otra cosa; establecer el bit de dirección 8
Si ((temp&0x02) == 0) output_low(a9);
output_high(a9) otra cosa; establecer el bit de dirección 9
delay_ms(10); corto retardo
output_low(CE); empezar la reproducción
while(INPUT(EOM));
anfikapa;
}
función nula (void) //this es para detener el funcionamiento ISD2560
{
output_high(CE); parar la operación de
delay_ms(10); corto retardo
output_high(PD); desactivar ISD 2560
delay_ms(100); corto retardo
}
*/
principal función (función principal del programa)
//==========================================================================
void main
{
setup_comparator (NC_NC_NC_NC);
setup_wdt(WDT_2304MS);
anfi_off;
chip_off;
mientras {}
restart_WDT();
Si (gazpedal) {}
turbin1();
turbin2();
turbin3();
turbin4();
}
}
}