Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Inciso E*/
- //el bit 0 se fuerza a 0 para activar los pulsadores T0 y T3
- PTCD_PTCD0 = 0;
- PTCD_PTCD1 = 1;
- //si se presiono el pulsador T0
- if (PTCD == 0b1010){
- //retardo para evitar el rebote del pulsador T0
- for(temp2=0xFFF;temp2>0;temp2--);
- ok = 1;
- //se pone el bit 0 del port B en 1
- PTBD = 0x1;
- while (ok == 1){
- //se verifica que no haya overflow en el port B
- if ((PTBD < 0b01000000) && (ok == 1)){
- temp3 = 0xFFFF;
- //se genera un retardo para que puedan ser apreciados el encendido y apagado de los leds, controlando a su vez que no se haya presionado ningún otro pulsador mientras se ejecuta la secuencia dada.
- while ((temp3 > 0) && (ok == 1)){
- //usamos un contador inicializado en cero, el cual despues de cierto tiempo conmuta las salidas del portc para que puedan ser consultados los diferentes pulsadores y reinicia el contador.
- if (cont < 0xFFF){
- cont++;
- } else {
- PTCD_PTCD0 =~PTCD_PTCD0;
- PTCD_PTCD1 =~PTCD_PTCD1;
- cont = 0;
- }
- //consulta si se presionó algún otro pulsador. en caso de que se haya presionado, sale de la iteracion y se comienza a ejecutar la secuencia correspondiente al pulsador presionado.
- if (PTCD == 0b0110){
- ok = 2;
- }
- else{
- if (PTCD == 0b1001){
- ok = 3;
- }else{
- if (PTCD == 0b0101){
- ok = 4;
- }
- }
- }
- temp3--;
- }
- //se hace el desplazamiento del bit. la secuencia se ejecuta hasta que sea presionado algún otro pulsador.
- PTBD = PTBD*0b100;
- } else {
- //se controla que cuando el bit 6 esté encendido no se genere overflow, reiniciando los bits del port
- if (ok == 1){
- PTBD = 0b01000000;
- temp3 = 0xFFFF;
- //se vuelve a generar el retardo para visualizar la secuencia. controla que no se haya presionado otro pulsador y vuelve a hacer la conmutacion de los bits de salida del port c
- while ((temp3 > 0) && (ok == 1)){
- if (cont < 0xFFF){
- cont++;
- } else {
- PTCD_PTCD0 =~PTCD_PTCD0;
- PTCD_PTCD1 =~PTCD_PTCD1;
- cont = 0;
- }
- if (PTCD == 0b0110){
- ok = 2;
- }
- else{
- if (PTCD == 0b1001){
- ok = 3;
- }else{
- if (PTCD == 0b0101){
- ok = 4;
- }
- }
- }
- temp3--;
- }
- //reinicia los bits del port
- PTBD = 0x1;
- }
- }
- }
- }
- if ((PTCD == 0b0110)){
- //retardo para evitar el rebote del pulsador T3
- for(temp2=0xFFF;temp2>0;temp2--){}
- ok = 2;
- //se pone el bit 1 del port B en 1
- PTBD = 0x2;
- while (ok == 2){
- //se verifica que no haya overflow en el port B
- if ((PTBD < 0b10000000) && (ok == 2)){
- temp3 = 0xFFFF;
- //se genera un retardo para que puedan ser apreciados el encendido y apagado de los leds, controlando a su vez que no se haya presionado ningún otro pulsador mientras se ejecuta la secuencia dada.
- while((temp3 > 0) && (ok == 2)){
- //usamos un contador inicializado en cero, el cual despues de cierto tiempo conmuta las salidas del portc para que puedan ser consultados los diferentes pulsadores y reinicia el contador.
- if (cont < 0xFFF){
- cont++;
- } else {
- PTCD_PTCD0 =~PTCD_PTCD0;
- PTCD_PTCD1 =~PTCD_PTCD1;
- cont = 0;
- }
- //consulta si se presionó algún otro pulsador. en caso de que se haya presionado, sale de la iteracion y se comienza a ejecutar la secuencia correspondiente al pulsador presionado.
- if (PTCD == 0b1010){
- ok = 1;
- }
- else{
- if (PTCD == 0b1001){
- ok = 3;
- }else{
- if (PTCD == 0b0101){
- ok = 4;
- }
- }
- }
- temp3--;
- }
- //se hace el desplazamiento del bit. la secuencia se ejecuta hasta que sea presionado algún otro pulsador.
- PTBD = PTBD*0b100;
- } else {
- //se controla que cuando el bit 7 esté encendido no se genere overflow, reiniciando los bits del port
- if (ok == 2){
- PTBD = 0b10000000;
- temp3 = 0xFFFF;
- //se vuelve a generar el retardo para visualizar la secuencia. controla que no se haya presionado otro pulsador y vuelve a hacer la conmutacion de los bits de salida del port c
- while((temp3 > 0) && (ok == 2)){
- if (cont < 0xFFF){
- cont++;
- } else {
- PTCD_PTCD0 =~PTCD_PTCD0;
- PTCD_PTCD1 =~PTCD_PTCD1;
- cont = 0;
- }
- if (PTCD == 0b1010){
- ok = 1;
- }
- else{
- if (PTCD == 0b1001){
- ok = 3;
- }else{
- if (PTCD == 0b0101){
- ok = 4;
- }
- }
- }
- temp3--;
- }
- //reinicia los bits del port
- PTBD = 0x2;
- }
- }
- }
- }
- //el bit 1 se fuerza a 0 para activar los pulsadores T2 y T1
- PTCD_PTCD0 = 1;
- PTCD_PTCD1 = 0;
- //si se presiono el pulsador T2
- if (PTCD == 0b1001){
- //retardo para evitar el rebote del pulsador T2
- for(temp2=0xFFF;temp2>0;temp2--){}
- ok = 3;
- //se pone el bit 6 del port B en 1
- PTBD = 0b01000000;
- while (ok == 3){
- //se verifica que no haya overflow en el port B
- if ((PTBD >0b00000001) && (ok == 3)){
- temp3 = 0xFFFF;
- //se genera un retardo para que puedan ser apreciados el encendido y apagado de los leds, controlando a su vez que no se haya presionado ningún otro pulsador mientras se ejecuta la secuencia dada.
- while((temp3 > 0) && (ok == 3)){
- //usamos un contador inicializado en cero, el cual despues de cierto tiempo conmuta las salidas del portc para que puedan ser consultados los diferentes pulsadores y reinicia el contador.
- if (cont < 0xFFF){
- cont++;
- } else {
- PTCD_PTCD0 =~PTCD_PTCD0;
- PTCD_PTCD1 =~PTCD_PTCD1;
- cont = 0;
- }
- if (PTCD == 0b0110){
- ok = 2;
- }
- else{
- if (PTCD == 0b1010){
- ok = 1;
- }else{
- if (PTCD == 0b0101){
- ok = 4;
- }
- }
- }
- temp3--;
- }
- //se hace el desplazamiento del bit. la secuencia se ejecuta hasta que sea presionado algún otro pulsador.
- PTBD = PTBD/0b100;
- } else {
- //se controla que cuando el bit 0 esté encendido no se genere overflow, reiniciando los bits del port b
- if (ok == 3){
- PTBD = 0b00000001;
- temp3 = 0xFFFF;
- //se vuelve a generar el retardo para visualizar la secuencia. controla que no se haya presionado otro pulsador y vuelve a hacer la conmutacion de los bits de salida del port c
- while((temp3 > 0) && (ok == 3)){
- if (cont < 0xFFF){
- cont++;
- } else {
- PTCD_PTCD0 =~PTCD_PTCD0;
- PTCD_PTCD1 =~PTCD_PTCD1;
- cont = 0;
- }
- if (PTCD == 0b0110){
- ok = 2;
- }
- else{
- if (PTCD == 0b1010){
- ok = 1;
- }else{
- if (PTCD == 0b0101){
- ok = 4;
- }
- }
- }
- temp3--;
- }
- //reinicia los bits del port
- PTBD = 0b01000000;
- }
- }
- }
- }
- //si se presiono el pulsador T1
- if ((PTCD == 0b0101)){
- //retardo para evitar el rebote del pulsador T1
- for(temp2=0xFFF;temp2>0;temp2--){}
- ok = 4;
- //se pone el bit 7 del port B en 1
- PTBD = 0b10000000;
- while (ok == 4){
- //se verifica que no haya overflow en el port B
- if ((PTBD > 0b00000010) && (ok == 4)){
- temp3 = 0xFFFF;
- //se genera un retardo para que puedan ser apreciados el encendido y apagado de los leds, controlando a su vez que no se haya presionado ningún otro pulsador mientras se ejecuta la secuencia dada.
- while((temp3 > 0) && (ok == 4)){
- if (cont < 0xFFF){
- cont++;
- } else {
- PTCD_PTCD0 =~PTCD_PTCD0;
- PTCD_PTCD1 =~PTCD_PTCD1;
- cont = 0;
- }
- if (PTCD == 0b0110){
- ok = 2;
- }
- else{
- if (PTCD == 0b1010){
- ok = 1;
- }else{
- if (PTCD == 0b1001){
- ok = 3;
- }
- }
- }
- temp3--;
- }
- //se hace el desplazamiento del bit. la secuencia se ejecuta hasta que sea presionado algún otro pulsador.
- PTBD = PTBD/0b100;
- } else {
- //se controla que cuando el bit 0 esté encendido no se genere overflow, reiniciando los bits del port b
- if (ok == 4){
- PTBD = 0b00000010;
- temp3 = 0xFFFF;
- //se vuelve a generar el retardo para visualizar la secuencia. controla que no se haya presionado otro pulsador y vuelve a hacer la conmutacion de los bits de salida del port c
- while((temp3 > 0) && (ok == 4)){
- if (cont < 0xFFF){
- cont++;
- } else {
- PTCD_PTCD0 =~PTCD_PTCD0;
- PTCD_PTCD1 =~PTCD_PTCD1;
- cont = 0;
- }
- if (PTCD == 0b0110){
- ok = 2;
- }
- else{
- if (PTCD == 0b1010){
- ok = 1;
- }else{
- if (PTCD == 0b1001){
- ok = 3;
- }
- }
- }
- temp3--;
- }
- //reinicia los bits del port
- PTBD = 0b10000000;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement