Advertisement
Guest User

entrega

a guest
Apr 20th, 2015
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         /*Inciso E*/
  2.         //el bit 0 se fuerza a 0 para activar los pulsadores T0 y T3
  3.         PTCD_PTCD0 = 0;
  4.         PTCD_PTCD1 = 1;
  5.             //si se presiono el pulsador T0
  6.             if (PTCD == 0b1010){
  7.                 //retardo para evitar el rebote del pulsador T0
  8.                 for(temp2=0xFFF;temp2>0;temp2--);
  9.                 ok = 1;
  10.                 //se pone el bit 0 del port B en 1
  11.                 PTBD = 0x1;
  12.                 while (ok == 1){
  13.                     //se verifica que no haya overflow en el port B
  14.                     if ((PTBD < 0b01000000) && (ok == 1)){
  15.                         temp3 = 0xFFFF;
  16.                         //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.
  17.                         while ((temp3 > 0) && (ok == 1)){
  18.                             //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.
  19.                             if (cont < 0xFFF){
  20.                                 cont++;
  21.                             } else {
  22.                                 PTCD_PTCD0 =~PTCD_PTCD0;
  23.                                 PTCD_PTCD1 =~PTCD_PTCD1;
  24.                                 cont = 0;
  25.                             }
  26.                             //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.
  27.                             if (PTCD == 0b0110){
  28.                                 ok = 2;
  29.                             }
  30.                             else{
  31.                                 if (PTCD == 0b1001){
  32.                                     ok = 3;
  33.                                 }else{
  34.                                     if (PTCD == 0b0101){
  35.                                         ok = 4;
  36.                                     }
  37.                                 }
  38.                             }
  39.                             temp3--;
  40.                         }
  41.                         //se hace el desplazamiento del bit. la secuencia se ejecuta hasta que sea presionado algún otro pulsador.
  42.                         PTBD = PTBD*0b100;
  43.                     } else {
  44.                         //se controla que cuando el bit 6 esté encendido no se genere overflow, reiniciando los bits del port
  45.                         if (ok == 1){
  46.                             PTBD = 0b01000000;
  47.                             temp3 = 0xFFFF;
  48.                             //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   
  49.                             while ((temp3 > 0) && (ok == 1)){
  50.                                 if (cont < 0xFFF){
  51.                                     cont++;
  52.                                 } else {
  53.                                     PTCD_PTCD0 =~PTCD_PTCD0;
  54.                                     PTCD_PTCD1 =~PTCD_PTCD1;
  55.                                     cont = 0;
  56.                                 }
  57.                                 if (PTCD == 0b0110){
  58.                                     ok = 2;
  59.                                 }
  60.                                 else{
  61.                                     if (PTCD == 0b1001){
  62.                                         ok = 3;
  63.                                     }else{
  64.                                         if (PTCD == 0b0101){
  65.                                             ok = 4;
  66.                                         }
  67.                                     }
  68.                                 }
  69.                                 temp3--;
  70.                             }
  71.                             //reinicia los bits del port
  72.                             PTBD = 0x1;
  73.                         }
  74.                     }
  75.                 }
  76.             }
  77.             if ((PTCD == 0b0110)){
  78.                 //retardo para evitar el rebote del pulsador T3
  79.                 for(temp2=0xFFF;temp2>0;temp2--){}
  80.                 ok = 2;
  81.                 //se pone el bit 1 del port B en 1
  82.                 PTBD = 0x2;
  83.                 while (ok == 2){
  84.                     //se verifica que no haya overflow en el port B
  85.                     if ((PTBD < 0b10000000) && (ok == 2)){
  86.                         temp3 = 0xFFFF;
  87.                         //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.
  88.                         while((temp3 > 0) && (ok == 2)){
  89.                         //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.
  90.                             if (cont < 0xFFF){
  91.                                 cont++;
  92.                             } else {
  93.                                 PTCD_PTCD0 =~PTCD_PTCD0;
  94.                                 PTCD_PTCD1 =~PTCD_PTCD1;
  95.                                 cont = 0;
  96.                             }
  97.                             //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.
  98.                             if (PTCD == 0b1010){
  99.                                 ok = 1;
  100.                             }
  101.                             else{
  102.                                 if (PTCD == 0b1001){
  103.                                     ok = 3;
  104.                                 }else{
  105.                                     if (PTCD == 0b0101){
  106.                                         ok = 4;
  107.                                     }
  108.                                 }
  109.                             }
  110.                             temp3--;
  111.                         }
  112.                         //se hace el desplazamiento del bit. la secuencia se ejecuta hasta que sea presionado algún otro pulsador.
  113.                         PTBD = PTBD*0b100;
  114.                     } else {                       
  115.                         //se controla que cuando el bit 7 esté encendido no se genere overflow, reiniciando los bits del port
  116.                         if (ok == 2){
  117.                             PTBD = 0b10000000;
  118.                             temp3 = 0xFFFF;
  119.                             //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
  120.                             while((temp3 > 0) && (ok == 2)){
  121.                                 if (cont < 0xFFF){
  122.                                     cont++;
  123.                                 } else {
  124.                                     PTCD_PTCD0 =~PTCD_PTCD0;
  125.                                     PTCD_PTCD1 =~PTCD_PTCD1;
  126.                                     cont = 0;
  127.                                 }
  128.                                 if (PTCD == 0b1010){
  129.                                     ok = 1;
  130.                                 }
  131.                                 else{
  132.                                     if (PTCD == 0b1001){
  133.                                         ok = 3;
  134.                                     }else{
  135.                                         if (PTCD == 0b0101){
  136.                                             ok = 4;
  137.                                         }
  138.                                     }
  139.                                 }
  140.                                 temp3--;
  141.                             }
  142.                             //reinicia los bits del port
  143.                             PTBD = 0x2;
  144.                         }
  145.                     }
  146.                 }
  147.             }
  148.         //el bit 1 se fuerza a 0 para activar los pulsadores T2 y T1
  149.         PTCD_PTCD0 = 1;
  150.         PTCD_PTCD1 = 0;
  151.             //si se presiono el pulsador T2
  152.             if (PTCD == 0b1001){
  153.                 //retardo para evitar el rebote del pulsador T2
  154.                 for(temp2=0xFFF;temp2>0;temp2--){}
  155.                 ok = 3;
  156.                 //se pone el bit 6 del port B en 1
  157.                 PTBD = 0b01000000;
  158.                 while (ok == 3){
  159.                     //se verifica que no haya overflow en el port B
  160.                     if ((PTBD >0b00000001) && (ok == 3)){
  161.                         temp3 = 0xFFFF;
  162.                         //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.
  163.                         while((temp3 > 0) && (ok == 3)){
  164.                             //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.
  165.                             if (cont < 0xFFF){
  166.                                 cont++;
  167.                             } else {
  168.                                 PTCD_PTCD0 =~PTCD_PTCD0;
  169.                                 PTCD_PTCD1 =~PTCD_PTCD1;
  170.                                 cont = 0;
  171.                             }
  172.                             if (PTCD == 0b0110){
  173.                                 ok = 2;
  174.                             }
  175.                             else{
  176.                                 if (PTCD == 0b1010){
  177.                                     ok = 1;
  178.                                 }else{
  179.                                     if (PTCD == 0b0101){
  180.                                         ok = 4;
  181.                                     }
  182.                                 }
  183.                             }
  184.                             temp3--;
  185.                         }
  186.                         //se hace el desplazamiento del bit. la secuencia se ejecuta hasta que sea presionado algún otro pulsador.
  187.                         PTBD = PTBD/0b100;
  188.                     } else {
  189.                         //se controla que cuando el bit 0 esté encendido no se genere overflow, reiniciando los bits del port b
  190.                         if (ok == 3){
  191.                             PTBD = 0b00000001;
  192.                             temp3 = 0xFFFF;
  193.                             //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
  194.                             while((temp3 > 0) && (ok == 3)){
  195.                                 if (cont < 0xFFF){
  196.                                     cont++;
  197.                                 } else {
  198.                                     PTCD_PTCD0 =~PTCD_PTCD0;
  199.                                     PTCD_PTCD1 =~PTCD_PTCD1;
  200.                                     cont = 0;
  201.                                 }
  202.                                 if (PTCD == 0b0110){
  203.                                     ok = 2;
  204.                                 }
  205.                                 else{
  206.                                     if (PTCD == 0b1010){
  207.                                         ok = 1;
  208.                                     }else{
  209.                                         if (PTCD == 0b0101){
  210.                                             ok = 4;
  211.                                         }
  212.                                     }
  213.                                 }
  214.                                 temp3--;
  215.                             }
  216.                             //reinicia los bits del port
  217.                             PTBD = 0b01000000;
  218.                         }
  219.                     }
  220.                 }
  221.             }
  222.             //si se presiono el pulsador T1
  223.             if ((PTCD == 0b0101)){
  224.                 //retardo para evitar el rebote del pulsador T1
  225.                 for(temp2=0xFFF;temp2>0;temp2--){}
  226.                 ok = 4;
  227.                 //se pone el bit 7 del port B en 1
  228.                 PTBD = 0b10000000;
  229.                 while (ok == 4){
  230.                     //se verifica que no haya overflow en el port B
  231.                     if ((PTBD > 0b00000010) && (ok == 4)){
  232.                         temp3 = 0xFFFF;
  233.                         //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.
  234.                         while((temp3 > 0) && (ok == 4)){
  235.                             if (cont < 0xFFF){
  236.                                 cont++;
  237.                             } else {
  238.                                 PTCD_PTCD0 =~PTCD_PTCD0;
  239.                                 PTCD_PTCD1 =~PTCD_PTCD1;
  240.                                 cont = 0;
  241.                             }
  242.                             if (PTCD == 0b0110){
  243.                                 ok = 2;
  244.                             }
  245.                             else{
  246.                                 if (PTCD == 0b1010){
  247.                                     ok = 1;
  248.                                 }else{
  249.                                     if (PTCD == 0b1001){
  250.                                         ok = 3;
  251.                                     }
  252.                                 }
  253.                             }
  254.                             temp3--;
  255.                         }
  256.                         //se hace el desplazamiento del bit. la secuencia se ejecuta hasta que sea presionado algún otro pulsador.
  257.                         PTBD = PTBD/0b100;
  258.                     } else {
  259.                         //se controla que cuando el bit 0 esté encendido no se genere overflow, reiniciando los bits del port b
  260.                         if (ok == 4){
  261.                            
  262.                             PTBD = 0b00000010;
  263.                             temp3 = 0xFFFF;
  264.                             //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
  265.                             while((temp3 > 0) && (ok == 4)){
  266.                                 if (cont < 0xFFF){
  267.                                     cont++;
  268.                                 } else {
  269.                                     PTCD_PTCD0 =~PTCD_PTCD0;
  270.                                     PTCD_PTCD1 =~PTCD_PTCD1;
  271.                                     cont = 0;
  272.                                 }
  273.                                 if (PTCD == 0b0110){
  274.                                     ok = 2;
  275.                                 }
  276.                                 else{
  277.                                     if (PTCD == 0b1010){
  278.                                         ok = 1;
  279.                                     }else{
  280.                                         if (PTCD == 0b1001){
  281.                                             ok = 3;
  282.                                         }
  283.                                     }
  284.                                 }
  285.                                 temp3--;
  286.                             }
  287.                             //reinicia los bits del port
  288.                             PTBD = 0b10000000;
  289.                         }
  290.                     }
  291.                 }
  292.             }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement