Bygga en Turbo ljud effekt krets för bilen icke turbo (5 / 6 steg)
Steg 5: Koden i CCS C.
#fuses INTRC_IO, WDT, NOPROTECT, NOBROWNOUT, NOLVP, NOMCLR, NOPUT
#use delay(clock=4000000)
#use rs232 (baud = 9600, xmit = PIN_A3, GI = PIN_A4)
#define use_portb_lcd TRUE
#include < lcd.c > / / LCD rutin
definiera
//==========================================================================
#define m1 pin_a1 //playback/record (låg = post, hög = uppspelning)
#define m2 pin_a0 //end av meddelandet (puls låg i slutet av varje meddelande)
#define m3 pin_a7 //power ner (hög att placera dela i standby-läge)
#define m4 pin_a6 //chip aktiverar (lågt att aktivera enheten)
#define m5 pin_b7 //bit-8 av adress pin
#define m6 pin_b6 //bit-9 av adress pin
#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 upptagen! 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
funktionen prototypen (varje funktion måste ha en funktion prototyp)
//==========================================================================
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);
tag (upptagen); Vänta
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);
tag (upptagen); Vänta
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);
tag (upptagen); Vänta
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);
tag (upptagen); Vänta
anfi_off;
chip_off;
delay_ms(100);
}
/ * Annullera posten (int16 adress) //this funktion är att börja spela in drift vid angiven adress
{//the-adressintervall är från 0 till 600 som representerar 0 till 60 sekund
unsigned char härda;
output_low(PD); Aktivera ISD
delay_ms(150); kort fördröjning
output_low(PR); Välj inspelningsläge (0 = rec, 1 = spela)
output_d(Address); Ange adress värdet för bit0 till stycke 7
Temp = adress >> 8;
om ((temp&0x01) == 0) output_low(a8);
annat output_high(a8); Ange adress bit 8
om ((temp&0x02) == 0) output_low(a9);
annat output_high(a9); Ange adress bit 9
delay_ms(10); kort fördröjning
output_low(CE); börja spela in
While(!input(tusrec));
}
void play (int16 adress) //this funktion är att starta uppspelning drift vid angiven adress
{//the-adressintervall är från 0 till 600 som representerar 0 till 60 sekund
unsigned char härda;
output_low(PD); Aktivera ISD
anfiac;
delay_ms(100); kort fördröjning
output_high(PR); Välj uppspelningsläge (0 = rec, 1 = spela)
output_d(Address); Ange adress värdet för bit0 till stycke 7
Temp = (adress >> 8);
om ((temp&0x01) == 0) output_low(a8);
annat output_high(a8); Ange adress bit 8
om ((temp&0x02) == 0) output_low(a9);
annat output_high(a9); Ange adress bit 9
delay_ms(10); kort fördröjning
output_low(CE); börja spela
While(input(eom));
anfikapa;
}
void stop (void) //this funktion är att stoppa ISD2560 operationen
{
output_high(CE); stoppa användningen
delay_ms(10); kort fördröjning
output_high(PD); Inaktivera ISD 2560
delay_ms(100); kort fördröjning
}
*/
Main fungera (huvudsakliga funktion av programmet)
//==========================================================================
void main(void)
{
setup_comparator (NC_NC_NC_NC);
setup_wdt(WDT_2304MS);
anfi_off;
chip_off;
While(true) {
restart_wdt();
om (gazpedal) {
turbin1();
turbin2();
turbin3();
turbin4();
}
}
}