Advertisement
Electgpl

PIC - Juego desactivar bomba con timer y corta cable

Jun 19th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.80 KB | None | 0 0
  1. #include<16F883.h>
  2. #use delay(int=4000000)
  3. #fuses NOWDT
  4. //Configuracion sistema operativo
  5. #use rtos(timer=0,minor_cycle=1ms)
  6. //Definicion de variables globales
  7. int num[10]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6};
  8. int secD=3,secU=0,buz=0,flag_2=1;
  9. int1 flag_1=0;
  10. //Funcion de sensado de displays
  11. #task(rate=20ms,max=1ms)
  12. void f_sensado();
  13. //Funcion de cuenta
  14. #task(rate=850ms,max=1ms)
  15. void f_cuenta();
  16. //Funcion de buzzer
  17. #task(rate=100ms,max=1ms)
  18. void f_buzzer();
  19. //Funcion de validacion
  20. #task(rate=20ms,max=1ms)
  21. void f_valida();
  22. //Funcion de convinaciones
  23. #task(rate=20ms,max=1ms)
  24. void f_convina();
  25. //Funcion principal
  26. void main(){
  27.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
  28.    set_tris_a(0b11111100);
  29.    set_tris_b(0b00001000);
  30.    set_tris_c(0b00000000);
  31.    output_low(pin_a0);
  32.    output_low(pin_a1);
  33.    rtos_run();
  34. }
  35. //Funcion de sensado de displays
  36. void f_sensado(){
  37.    //output_b(0b00000001);
  38.    output_low(pin_b1);
  39.    output_high(pin_b0);
  40.    output_c(num[secD]);
  41.    delay_ms(1);
  42.    //output_b(0x00);
  43.    output_low(pin_b0);
  44.    //output_b(0b00000010);
  45.    output_high(pin_b1);
  46.    output_c(num[secU]);
  47.    delay_ms(1);
  48.    //output_b(0x00);  
  49.    output_low(pin_b1);
  50. }
  51. //Funcion de cuenta con FAIL
  52. void f_cuenta(){  
  53.    if(flag_1==0&&flag_2!=6&&input(pin_b3)==1){
  54.       if(secU--<1){
  55.          secU=9;
  56.          secD--;
  57.       }
  58.    }
  59. }
  60. //Funcion de buzzer con STOP y DESARME
  61. void f_buzzer(){
  62.    if(secD==0&&secU<5&&input(pin_b3)==1){
  63.       if(++buz>2&&input(pin_b3)==1){
  64.       output_toggle(pin_a1);
  65.       buz=0;
  66.       }
  67.    }else{
  68.       if(++buz==20&&input(pin_b3)==1){
  69.          output_toggle(pin_a1);
  70.       }else{
  71.          if(buz>22&&input(pin_b3)==1){
  72.          output_toggle(pin_a1);
  73.          buz=3;
  74.          }
  75.       }  
  76.    }
  77.    if (input(pin_b3)==0||flag_2==6){
  78.       output_low(pin_a1);
  79.       buz=0;
  80.    }
  81. }
  82. //Funcion de validacion con FAIL
  83. void f_valida(){
  84.    if((secU==0&&secD==0)||input(pin_a2)==0||flag_1==1){
  85.       output_high(pin_a0);
  86.       sleep();
  87.    }else
  88.       output_low(pin_a0);  
  89. }
  90. //Funcion de convinaciones
  91. void f_convina(){
  92.    if(input(pin_a3)==0&&flag_2==1)
  93.       flag_2=2;
  94.    if(input(pin_a4)==0){    
  95.       if(flag_2==2){
  96.          flag_2=3;
  97.       }else{
  98.          if(flag_2<2&&input(pin_b3)==1)
  99.             flag_1=1;
  100.       }
  101.    }
  102.    if(input(pin_a5)==0){    
  103.       if(flag_2==3){
  104.          flag_2=4;
  105.       }else{
  106.          if(flag_2<3&&input(pin_b3)==1)
  107.             flag_1=1;
  108.       }
  109.    }
  110.    if(input(pin_a6)==0){    
  111.       if(flag_2==4){
  112.          flag_2=5;
  113.       }else{
  114.          if(flag_2<4&&input(pin_b3)==1)
  115.             flag_1=1;
  116.       }
  117.    }
  118.    if(input(pin_a7)==0){    
  119.       if(flag_2==5){
  120.          flag_2=6;
  121.       }else{
  122.          if(flag_2<5&&input(pin_b3)==1)
  123.             flag_1=1;
  124.       }
  125.    }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement