#include <reg52.h>
#include <intrins.h>
sbit A = P2^0;
sbit B = P2^1;
sbit C = P2^2;
#define SEG_PORT P0
sbit KEY_START = P3^2;
sbit KEY_PAUSE = P3^3;
sbit KEY_RESET = P3^4;
unsigned char second = 0;
bit isRunning = 0;
void DelayMs(unsigned int xms);
void select_74LS138(unsigned char output);
void Display_Second(unsigned char sec);
void Key_Scan();
void main()
{
while (1)
{
Key_Scan();
if (isRunning)
{
DelayMs(1000);
second++;
if (second >= 60)
{
second = 0;
}
Display_Second(second);
}
}
}
void DelayMs(unsigned int xms)
{
unsigned char i, j;
while (xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void select_74LS138(unsigned char output)
{
switch(output)
{
case 0: A = 0; B = 0; C = 0; break;
case 1: A = 0; B = 0; C = 1; break;
case 2: A = 0; B = 1; C = 0; break;
case 3: A = 0; B = 1; C = 1; break;
case 4: A = 1; B = 0; C = 0; break;
case 5: A = 1; B = 0; C = 1; break;
case 6: A = 1; B = 1; C = 0; break;
case 7: A = 1; B = 1; C = 1; break;
}
}
void Display_Second(unsigned char sec)
{
unsigned char tens = sec / 10;
unsigned char ones = sec % 10;
select_74LS138(0);
SEG_PORT = tens;
DelayMs(5);
select_74LS138(1);
SEG_PORT = ones;
DelayMs(5);
}
#include <intrins.h>
sbit A = P2^0;
sbit B = P2^1;
sbit C = P2^2;
#define SEG_PORT P0
sbit KEY_START = P3^2;
sbit KEY_PAUSE = P3^3;
sbit KEY_RESET = P3^4;
unsigned char second = 0;
bit isRunning = 0;
void DelayMs(unsigned int xms);
void select_74LS138(unsigned char output);
void Display_Second(unsigned char sec);
void Key_Scan();
void main()
{
while (1)
{
Key_Scan();
if (isRunning)
{
DelayMs(1000);
second++;
if (second >= 60)
{
second = 0;
}
Display_Second(second);
}
}
}
void DelayMs(unsigned int xms)
{
unsigned char i, j;
while (xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void select_74LS138(unsigned char output)
{
switch(output)
{
case 0: A = 0; B = 0; C = 0; break;
case 1: A = 0; B = 0; C = 1; break;
case 2: A = 0; B = 1; C = 0; break;
case 3: A = 0; B = 1; C = 1; break;
case 4: A = 1; B = 0; C = 0; break;
case 5: A = 1; B = 0; C = 1; break;
case 6: A = 1; B = 1; C = 0; break;
case 7: A = 1; B = 1; C = 1; break;
}
}
void Display_Second(unsigned char sec)
{
unsigned char tens = sec / 10;
unsigned char ones = sec % 10;
select_74LS138(0);
SEG_PORT = tens;
DelayMs(5);
select_74LS138(1);
SEG_PORT = ones;
DelayMs(5);
}