miércoles, 5 de marzo de 2014

PIANO DIGITAL CON AT89LP3240/6440

// INSTITUTO DE INGENIERIA Y TECNOLOGIA (IIT/UACJ) //
// SISTEMAS CON MICROPROCESADOR // IVAN MENDOZA 103405
#include <at89lp6440.h>

void config (void)
{ //--------------- CONFIGURACION DE PUERTOS ----------------------//
//entradas
P1M0=0XFF;    //TECLAS TONOS DO-RE-MI-FA-SOL-LA-SI-SI#
P1M1=0X00;

P3M0=0X0E;    //SELECCION DE OCTAVA 0-1-2-3-4-5
P3M1=0X10;

//salidas
P0M0 =0x00;    //LED TONOS DO-RE-MI-FA-SOL-LA-SI-SI#
P0M1 =0xFF;

P2M0 =0x00;   //LED OCTAVAS 0-1-2-3-4-5
P2M1 =0xFF;
//--------------------------------------------------------------//
// TIMER E INTERRUPCIONES
TMOD=0x10;
P3_7=1;
EA=1;
ET1=1;
TR1=0;
TCONB=0x00;
  CLKREG=0x00;
}
///////////////////// FUNCIONES TONOS /////////////////////////////////
void DO(void){
if(P3_3==0&&P3_2==0&&P3_1==0)
{
RH1=0XA6;
RL1=0X33;
TR1=1;
}
else if(P3_3==0&&P3_2==0&&P3_1==1)
{
P2_7=1;
RH1=0XD3;
RL1=0X19;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==0)
{
P2_6=1;
RH1=0XE2;
RL1=0X11;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==1)
{
P2_5=1;
RH1=0XE9;
RL1=0X8C;
TR1=1;
}
else if (P3_3==1&&P3_2==0&&P3_1==0)
{
P2_4=1;
RH1=0XEE;
RL1=0X6A;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==1)
{
P2_3=1;
RH1=0XF1;
RL1=0X08;
TR1=1;
}
P3_4=0;
TR1=0;
}
void RE(void){
if(P3_3==0&&P3_2==0&&P3_1==0)
 {
RH1=0XB0;
 RL1=0X47;
TR1=1;
    }
else if(P3_3==0&&P3_2==0&&P3_1==1)
{P2_7=1;
RH1=0XD8;
RL1=0X23;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==0)
{P2_6=1;
RH1=0XE5;
RL1=0X6C;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==1)
{P2_5=1;
RH1=0XEC;
RL1=0X11;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==0)
{P2_4=1;
RH1=0XF0;
RL1=0X0E;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==1)
{P2_3=1;
RH1=0XF2;
RL1=0XB6;
TR1=1;
}

P3_4=0;
TR1=0;
}
void MI(void){
if(P3_3==0&&P3_2==0&&P3_1==0)
 {
RH1=0XB8;
 RL1=0XFA;
TR1=1;
    }
else if(P3_3==0&&P3_2==0&&P3_1==1)
{P2_7=1;
RH1=0XDC;
RL1=0X7D;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==0)
{P2_6=1;
RH1=0XE8;
RL1=0X53;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==1)
{P2_5=1;
RH1=0XEE;
RL1=0X3E;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==0)
{P2_4=1;
RH1=0XF1;
RL1=0XCB;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==1)
{P2_3=1;
RH1=0XF4;
RL1=0X29;
TR1=1;
}

P3_4=0;
TR1=0;
   


}
void FA(void){
if(P3_3==0&&P3_2==0&&P3_1==0)
 {
RH1=0XBC;
RL1=0XD8;
TR1=1;
    }
else if(P3_3==0&&P3_2==0&&P3_1==1)
{P2_7=1;
RH1=0XE9;
RL1=0X9C;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==0)
{P2_6=1;
RH1=0XEF;
RL1=0X35;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==1)
{P2_5=1;
RH1=0XF2;
RL1=0X95;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==0)
{P2_4=1;
RH1=0XF4;
RL1=0XCE;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==1)
{P2_3=1;
RH1=0XF6;
RL1=0X08;
TR1=1;
}

P3_4=0;
TR1=0;
   


}
void SOL(void){
if(P3_3==0&&P3_2==0&&P3_1==0)
 {
RH1=0XC4;
RL1=0X35;
TR1=1;
    }
else if(P3_3==0&&P3_2==0&&P3_1==1)
{P2_7=1;
RH1=0XE2;
RL1=0X1A;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==0)
{P2_6=1;
RH1=0XEC;
RL1=0X11;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==1)
{P2_5=1;
RH1=0XF1;
RL1=0X0D;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==0)
{P2_4=1;
RH1=0XF4;
RL1=0XCE;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==1)
{P2_3=1;
RH1=0XF6;
RL1=0X08;
TR1=1;
}

P3_4=0;
TR1=0;
   


}
void LA(void){
if(P3_3==0&&P3_2==0&&P3_1==0)
 {
RH1=0XCA;
RL1=0XBB;
TR1=1;
    }
else if(P3_3==0&&P3_2==0&&P3_1==1)
{P2_7=1;
RH1=0XE5;
RL1=0X5D;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==0)
{P2_6=1;
RH1=0XEE;
RL1=0X3E;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==1)
{P2_5=1;
RH1=0XF2;
RL1=0XAE;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==0)
{P2_4=1;
RH1=0XF5;
RL1=0X58;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==1)
{P2_3=1;
RH1=0XF7;
RL1=0X1E;
TR1=1;
}

P3_4=0;
TR1=0;
   


}
void SI(void){
 if(P3_3==0&&P3_2==0&&P3_1==0)
 {
RH1=0XD0;
RL1=0X8D;
TR1=1;
    }
else if(P3_3==0&&P3_2==0&&P3_1==1)
{P2_7=1;
RH1=0XE8;
RL1=0X46;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==0)
{P2_6=1;
RH1=0XF0;
RL1=0X2E;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==1)
{P2_5=1;
RH1=0XF4;
RL1=0X23;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==0)
{P2_4=1;
RH1=0XF6;
RL1=0X82;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==1)
{P2_3=1;
RH1=0XF8;
RL1=0X17;
TR1=1;
}
P3_4=0;
TR1=0;
   


}
void SII(void){
if(P3_3==0&&P3_2==0&&P3_1==0)
 {
RH1=0XD3;
RL1=0X2F;
TR1=1;
    }
else if(P3_3==0&&P3_2==0&&P3_1==1)
{P2_7=1;
RH1=0XE9;
RL1=0X97;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==0)
{P2_6=1;
RH1=0XF1;
RL1=0X0F;
TR1=1;
}
else if(P3_3==0&&P3_2==1&&P3_1==1)
{P2_5=1;
RH1=0XF4;
RL1=0XCB;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==0)
{P2_4=1;
RH1=0XF7;
RL1=0X09;
TR1=1;
}
else if(P3_3==1&&P3_2==0&&P3_1==1)
{P2_3=1;
RH1=0XF8;
RL1=0X87;
TR1=1;
}

P3_4=0;
TR1=0;
   


}


//////////////////////////////////////////////////////////////////////

// INICIO DE PROGRAMA //
void main (void)
{
  config(); // llamamos a la funcion para cargar configuracion
while(1)
{ P0=0;
P2=0;
// int tono=P1;    //tonos de la octava do-re-mi-fa-sol-la-si-si#
switch(P1)
{
case 1://DO
P0_0=1; DO();
break;

case 2://RE
P0_1=1; RE();
break;

case 4://MI
P0_2=1; MI();
break;

case 8://FA
P0_3=1; FA();
break;

case 16://SOL
P0_4=1; SOL();
break;

case 32://LA
P0_5=1; LA();
break;

case 64://SI
P0_6=1; SI();
break;

case 128://SI#
P0_7=1; SII();
break;

case 0:
P3_4=0;
break;
}
}
}
void int_timer_1(void) interrupt 3
{
P3_4=~P3_4;//conmutacion
}

No hay comentarios: