⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cp

📁 Simple Timer/Counter application for cock fighting
💻 CP
字号:
#line 1 "C:/Documents and Settings/Ryan/Desktop/Designs/Personal/Programs/MikroC codes/Sabong Counter/main.c"
#line 21 "C:/Documents and Settings/Ryan/Desktop/Designs/Personal/Programs/MikroC codes/Sabong Counter/main.c"
 unsigned int lapsed_count,delay,repitition;
 unsigned char up_time[6],down_time[6];
 unsigned short time_count,flag ;
 char check_value;
 void increment_up_time()
 {
 up_time[5]++;
 if (up_time[5] == 10)
 {
 up_time[5] = 0;
 up_time[4]++;
 if (up_time[4] == 10)
 {
 up_time[4] = 0;
 up_time[3]++;
 if (up_time[3] == 10)
 {
 up_time[3] = 0;
 up_time[2]++;
 if (up_time[2] == 6)
 {
 up_time[2] = 0;
 up_time[1]++;
 if (up_time[1] == 10)
 {
 up_time[1] = 0;
 up_time[0]++;
 }
 }
 }
 }
 }
 }

 void decrement_down_time()
 {
 down_time[5]--;
 if (down_time[5] == 255)
 {
 down_time[5] = 9;
 down_time[4]--;
 if (down_time[4] == 255)
 {
 down_time[4] = 9;
 down_time[3]--;
 if (down_time[3] == 255)
 {
 down_time[3] = 9;
 down_time[2]--;
 if (down_time[2] == 255)
 {
 down_time[2] = 5;
 down_time[1]--;
 if (down_time[1] == 255)
 {
 down_time[1] = 9;
 down_time[0]--;
 }
 }
 }
 }
 }
 }


 void interrupt()
 {
 TMR0 = 0;
 if (INTCON.T0IF)
 {
 time_count++;
 if (time_count == 38)
 {
 time_count = 0;
 lapsed_count++;
 increment_up_time();
 decrement_down_time();
 if (lapsed_count >= 60000)
 {
 INTCON.T0IE = 0;
 flag.f1 = 1;
 }
 }
 }
 INTCON.T0IF = 0;
 }


 unsigned short mask(unsigned short num)
 {
 switch (num)
 {
 case 0 : return 0xf6;
 case 1 : return 0x60;
 case 2 : return 0xba;
 case 3 : return 0xf8;
 case 4 : return 0x6c;
 case 5 : return 0xdc;
 case 6 : return 0xde;
 case 7 : return 0x70;
 case 8 : return 0xfe;
 case 9 : return 0xfc;
 case 11 : return 0x1e;
 }
 }

 void Short_delay()
 {
 Delay_us(500);
 }


 void offset_up_time()
 {
 PORTB = mask (up_time[5]);
 PORTA = PORTA | 0x05;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask (up_time[4]);
 PORTA = PORTA | 0x01;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask (up_time[3]);
 PORTA = PORTA | 0x06;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask (up_time[2]);
 PORTA = PORTA | 0x03;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask(up_time[1]);
 PORTA = PORTA | 0x04;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 if (up_time[0] == 0)Short_delay();
 else
 {
 PORTA = PORTA | 0x02;
 Short_delay();
 PORTA = PORTA & 0xff;
 }
 }

void offset_down_time()
 {
 PORTB = mask (down_time[5]);
 PORTA = PORTA | 0x05;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask (down_time[4]);
 PORTA = PORTA | 0x01;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask (down_time[3]);
 PORTA = PORTA | 0x06;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask (down_time[2]);
 PORTA = PORTA | 0x03;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask(down_time[1]);
 PORTA = PORTA | 0x04;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 if (down_time[0]== 0)Short_delay();
 else
 {
 PORTA = PORTA | 0x02;
 Short_delay();
 PORTA = PORTA & 0xff;
 }
 }

void offset_up_time2()
 {
 PORTB = mask (up_time[5]);
 PORTA = PORTA | 0x0d;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask (up_time[4]);
 PORTA = PORTA | 0x09;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask (up_time[3]);
 PORTA = PORTA | 0x0e;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask (up_time[2]);
 PORTA = PORTA | 0x0b;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask(up_time[1]);
 PORTA = PORTA | 0x0c;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 if (up_time[0] == 0)Short_delay();
 else
 {
 PORTA = PORTA | 0x0a;
 Short_delay();
 PORTA = PORTA & 0xff;
 }
 }


void offset_down_time2()
 {
 PORTB = mask (down_time[5]);
 PORTA = PORTA | 0x0d;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask (down_time[4]);
 PORTA = PORTA | 0x09;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask (down_time[3]);
 PORTA = PORTA | 0x0e;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask (down_time[2]);
 PORTA = PORTA | 0x0b;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 PORTB = mask(down_time[1]);
 PORTA = PORTA | 0x0c;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;

 if (down_time[0]== 0)Short_delay();
 else
 {
 PORTA = PORTA | 0x0a;
 Short_delay();
 PORTA = PORTA & 0xff;
 }
 }


 void Delay_sec()
 {
 Delay_ms (350);
 }

 void load_default_values()
 {
 up_time [0] = 0;
 up_time [1] = 0;
 up_time [2] = 0;
 up_time [3] = 0;
 up_time [4] = 0;
 up_time [5] = 0;
 down_time[0] = 1;
 down_time[1] = 0;
 down_time[2] = 0;
 down_time[3] = 0;
 down_time[4] = 0;
 down_time[5] = 0;
 lapsed_count == 0;
 }

void alarm()
 {
 delay = 2000;
 do {
 if (!flag.f0)
 {
 offset_up_time2();
 }
 if (flag.f0)
 {
 offset_down_time2();
 }
 delay--;
 } while (delay > 0);
 PORTA.F3 = 0;
 }


 void oem_limit()
 {
 check_value = EEprom_Read(0x00);
 Delay_ms (50);
 if (check_value == 0)
 {
 do {
 PORTB = 0;
 PORTA = 0;
 } while(1);
 }
 else
 {
 check_value--;
 EEprom_Write (0x00,check_value);
 Delay_ms (50);
 }
 }

 void main ()
 {
 PORTA = 0;
 PORTB = 0;
 TRISA = 0x30;
 TRISB = 0;
 PORTA = 0x07;
 PORTB = 0;
 OPTION_REG = 0x08;
 INTCON.GIE = 1;
 load_default_values();
 flag.f0 = 0;
 flag.f1 = 0;
 oem_limit();


 delay = 3;
 do {
 repitition = 250;
 do {
 PORTB = mask (11);
 PORTA = PORTA | 0x01;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;
 PORTB = mask (1);
 PORTA = PORTA | 0x05;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;
 repitition--;
 } while (repitition > 0);
 Delay_sec();
 delay--;
 } while (delay > 0);

 while (1)
 {
 if (!flag.f0) offset_up_time();
 if (flag.f0) offset_down_time();

 if ((PORTA & 0x30) == 0x30)
 {
 if (!INTCON.T0IE)
 {
 delay = 3;
 if (!flag.f0)
 {
 flag.f0 = 1;
 do {
 repitition = 250;
 do {
 PORTB = mask (11);
 PORTA = PORTA | 0x01;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;
 PORTB = mask (2);
 PORTA = PORTA | 0x05;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;
 repitition--;
 } while (repitition > 0);
 Delay_sec();
 delay--;
 } while (delay > 0);
 goto exit1
 }
 if (flag.f0)
 {
 flag.f0 = 0;
 do {
 repitition = 250;
 do {
 PORTB = mask (11);
 PORTA = PORTA | 0x01;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;
 PORTB = mask (1);
 PORTA = PORTA | 0x05;
 Short_delay();
 PORTB = 0;
 PORTA = PORTA & 0xff;
 repitition--;
 } while (repitition > 0);
 Delay_sec();
 delay--;
 } while (delay > 0);
 }
 exit1: load_default_values();
 flag.f2 = 1;
 }
 }



 if ((PORTA & 0x30)== 0x20)
 {
 if (INTCON.T0IE)
 {
 INTCON.T0IE = 0;
 flag.f1 = 0;
 alarm();
 goto exit2
 }
 if (!INTCON.T0IE)
 {
 delay = 500;
 do {
 if (flag.f0) offset_up_time();
 if (!flag.f0) offset_down_time();
 delay--;
 if ((PORTA & 0x20) == 0x20) delay = 500;
 } while (delay >0);
 }
 exit2: PORTA.F3 = 0;
 }



 if ((PORTA & 0x30) == 0x10)
 {
 if (!INTCON.T0IE && flag.f2 )
 {
 lapsed_count = 0;
 INTCON.T0IE = 1;
 TMR0 = 0;
 flag.f1 = 0;
 flag.f2 = 0;
 }
 }



 if (PORTB.F0)
 {
 if (!INTCON.T0IE)
 {
 load_default_values();
 flag.f2 = 1;
 }
 }


 if (flag.f1 && !INTCON.T0IE)
 {
 INTCON.T0IE = 0;
 flag.f1 = 0;
 alarm();
 PORTA.F3 = 0;
 }

 }
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -