Yosef Guevara Salamanca
/
TETS_PC
bien spi no se queda pegado
Diff: tetris_pc.cpp
- Revision:
- 12:50e2c8c6bf8c
- Parent:
- 11:2dc0f84c600a
- Child:
- 13:d7549cfe854d
diff -r 2dc0f84c600a -r 50e2c8c6bf8c tetris_pc.cpp --- a/tetris_pc.cpp Thu Sep 13 08:34:58 2018 +0000 +++ b/tetris_pc.cpp Thu Sep 13 12:55:48 2018 +0000 @@ -30,52 +30,28 @@ // Toma el vecor reorganizado , lo imprime y lo almacena void captura_matriz(uint16_t* imprimir){ int i=0; // inicia el contador i en 0 - - while(i <8){ //se encarga de desplazar los bits dentro del vector - - sendSPI(1, memoria[0]|(imprimir[0]>>i)); - sendSPI(2, memoria[1]|(imprimir[1]>>i)); - sendSPI(3, memoria[2]|(imprimir[2]>>i)); - sendSPI(4, memoria[3]|(imprimir[3]>>i)); - sendSPI(5, memoria[4]|(imprimir[4]>>i)); - sendSPI(6, memoria[5]|(imprimir[5]>>i)); - sendSPI(7, memoria[6]|(imprimir[6]>>i)); - sendSPI(8, memoria[7]|(imprimir[7]>>i)); - - + int enable=1; + while(i <8 && enable){ //se encarga de desplazar los bits dentro del vector + int j=1; // inicia el contador j en 1 + + while(j<=8){ //se encarga de seleccionar que posicion del vector imprimira - if(i==7 || (memoria[i] &(imprimir[i]>>i+1)!=0)){ - - memoria[0] = memoria[0]|(imprimir[0]>>i); - memoria[1] = memoria[1]|(imprimir[1]>>i); - memoria[2] = memoria[2]|(imprimir[2]>>i); - memoria[3] = memoria[3]|(imprimir[3]>>i); - memoria[4] = memoria[4]|(imprimir[4]>>i); - memoria[5] = memoria[5]|(imprimir[5]>>i); - memoria[6] = memoria[6]|(imprimir[6]>>i); - memoria[7] = memoria[7]|(imprimir[7]>>i); - break; - - - } + sendSPI(j, memoria[j-1]|(imprimir[j-1]>>i)); //Imprime el resultado de aplicar OR a la memoria y al desplamamiento de imprimir + - - - - wait(1.0); + if(i==7 || (memoria[j-1]&(imprimir[j-1]>>i+1))!=0){ //Detiene el desplazamiento cuando los bits tocan fondo, + + memoria[j-1]= memoria[j-1]|(imprimir[j-1]>>i); //Almacena el nuevo valor de la operacion OR en la memoria + enable=0; + } + j++; + } + wait(0.5); // espera para tomar el otro valor de lectura i++; } - imprimir[0]=0x00; - imprimir[1]=0x00; - imprimir[2]=0x00; - imprimir[3]=0x00; - imprimir[4]=0x00; - imprimir[5]=0x00; - imprimir[6]=0x00; - imprimir[7]=0x00; + } - - + void desplazar(uint16_t* datos, char des){ // tomar la figura y la desplaza segun la posicion ingresada inicialmente uint16_t desplazamiento[8]={0}; // Inicia un vector auxiliar con solo Ceros @@ -165,19 +141,26 @@ } void captura_datos(){ - + pc.baud(38400); //Inicializa la velocidad de comunicacion - + char inicio=0; char pos= 0; char figura= 0; char giro= 0; - + char final=0; + do{ + debuging("\n Ingrese el posicion. "); + inicio=pc.getc(); debuging("\n Ingrese el posicion. "); pos=pc.getc(); debuging("\n Seleccione la Figura. "); figura=pc.getc(); debuging("\n Seleccione la rotacion. "); - giro=pc.getc(); + giro=pc.getc(); + debuging("\n Ingrese el posicion. "); + final=pc.getc(); + }while(inicio!= '<' || final != '>'); + read(pos,figura,giro);