?? main.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 + -