skapunky

Piano electronico

Feb 28th, 2012
2,674
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pic 16 3.10 KB | None | 0 0
  1. // :::::::::::: Piano ELECTRóNICO ::::::::::::::::::::::::::::::::::
  2. // ::::::::: diseño y programación por Albert López. ::::::::::::::
  3. // ::::::::: http://utronic.blogspot.com/ :::::::::::::::::::::::::
  4.  
  5. #include "C:\...\Piano electrónico\codigo fuente\piano electrónico.h" //Indicar ruta correcta para compilar
  6. #include <TONES.c>  //incluímos la libreria para generar los sonidos.
  7.  
  8. int S_corchea=125,corchea=250,fusa=62;
  9. long negra=500,blanca=1000,redonda=2000;
  10.  
  11.  
  12. void h_alegria(){ //melodia himno alegría como ejemplo.
  13. generate_tone(B_NOTE[0], blanca);
  14. generate_tone(C_NOTE[1], negra);
  15. generate_tone(D_NOTE[1], negra);
  16. generate_tone(D_NOTE[1], negra);
  17. generate_tone(C_NOTE[1], negra);
  18. generate_tone(B_NOTE[0], negra);
  19. generate_tone(A_NOTE[0], negra);
  20. generate_tone(G_NOTE[0], negra);
  21. generate_tone(G_NOTE[0], negra);
  22. generate_tone(A_NOTE[0], negra);
  23. generate_tone(B_NOTE[0], negra);
  24. generate_tone(B_NOTE[0], blanca);
  25. generate_tone(A_NOTE[0],negra);
  26. generate_tone(A_NOTE[0],negra);
  27. delay_ms(1000);
  28. generate_tone(A_NOTE[0], blanca);
  29. generate_tone(B_NOTE[0], negra);
  30. generate_tone(G_NOTE[0], negra);
  31. generate_tone(A_NOTE[0], negra);
  32. generate_tone(B_NOTE[0], corchea);
  33. generate_tone(C_NOTE[1], corchea);
  34. generate_tone(B_NOTE[0], negra);
  35. generate_tone(G_NOTE[0],negra);
  36. generate_tone(A_NOTE[0], negra);
  37. generate_tone(B_NOTE[0], corchea);
  38. generate_tone(C_NOTE[1], corchea);
  39. generate_tone(B_NOTE[0], negra);
  40. generate_tone(G_NOTE[0], negra);
  41. generate_tone(G_NOTE[0], negra);
  42. generate_tone(A_NOTE[0], negra);
  43. generate_tone(D_NOTE[0], blanca);
  44. delay_ms(2000);
  45. }
  46.  
  47. void main()
  48. {
  49.  
  50.    setup_adc_ports(NO_ANALOGS|VSS_VDD);
  51.    setup_adc(ADC_CLOCK_DIV_2|ADC_TAD_MUL_0);
  52.    setup_psp(PSP_DISABLED);
  53.    setup_spi(SPI_SS_DISABLED);
  54.    setup_wdt(WDT_OFF);
  55.    setup_timer_0(RTCC_INTERNAL);
  56.    setup_timer_1(T1_DISABLED);
  57.    setup_timer_2(T2_DISABLED,0,1);
  58.    setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
  59.    setup_comparator(NC_NC_NC_NC);
  60.    setup_vref(FALSE);
  61. //Setup_Oscillator parameter not selected from Intr Oscillator Config tab
  62.  
  63.    // TODO: USER CODE!!
  64.  
  65. //::::::::::::::::::: Condiciones Iniciales :::::::::::::::::::::::::::::::
  66.    set_tris_A(0xC0); //Puerto A como salida "0" Pin 13/14 entradas Xtal
  67.    set_tris_C(0x00); //Puerto c como salida
  68.    set_tris_B(0x00); //Puerto B como salida "0"
  69.    set_tris_D(0xFF); //Puerto d como entrada "1"
  70.    set_tris_E(0xC);  //Puerto E como entrada
  71.    
  72.    output_C (0x00);
  73.    output_D (0x00);
  74.    output_A (0xC0);
  75.    output_E (0xC);
  76.    output_B (0x00);
  77. //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  78.  
  79. while(1){
  80.  
  81. while (INPUT_STATE(PIN_D0) ==1){generate_tone(C_NOTE[1], negra);}
  82. while (INPUT_STATE(PIN_D1) ==1){generate_tone(D_NOTE[1], negra);}
  83. while (INPUT_STATE(PIN_D2) ==1){generate_tone(E_NOTE[1], negra);}
  84. while (INPUT_STATE(PIN_D3) ==1){generate_tone(F_NOTE[1], negra);}
  85. while (INPUT_STATE(PIN_D4) ==1){generate_tone(G_NOTE[1], negra);}
  86. while (INPUT_STATE(PIN_D5) ==1){generate_tone(A_NOTE[1], negra);}
  87. while (INPUT_STATE(PIN_D6) ==1){generate_tone(B_NOTE[1], negra);}
  88. while (INPUT_STATE(PIN_D7) ==1){ h_alegria();}
  89. }
  90.  
  91. }
Add Comment
Please, Sign In to add comment