|
源代码
#include <reg51.h>
sbit EastWestGreen = P1^2;
sbit EastWestYellow = P1^1;
sbit EastWestRed = P1^0;
sbit NorthSouthGreen = P1^3;
sbit NorthSouthYellow = P1^4;
sbit NorthSouthRed = P1^5;
#define TL0_INIT_VALUE 0x1F3F
void timer0_isr() interrupt 1
{
char i;
static unsigned char count = 0;
TH0 = TL0_INIT_VALUE >> 8;
TL0 = TL0_INIT_VALUE & 0xFF;
i++;
if(i==20)
{
i=0;
count++;
}
if (count <= 15)
{
EastWestGreen = 0;
EastWestYellow = 0;
EastWestRed = 1;
}
else if (count <= 25)
{
EastWestGreen = 1;
EastWestYellow = 0;
EastWestRed = 0;
}
else if (count <= 28) { // 绿灯闪烁3s
EastWestGreen = !EastWestGreen;
EastWestYellow = 0;
EastWestRed = 0;
} else if (count <= 30) { // 黄灯亮2s
EastWestGreen = 0;
EastWestYellow = 1;
EastWestRed = 0;
}
else
{
count = 0;
}
if (count <= 10)
{
NorthSouthGreen = 1;
NorthSouthYellow = 0;
NorthSouthRed = 0;
}
else if (count <= 13)
{
NorthSouthGreen = !NorthSouthGreen;
NorthSouthYellow = 0;
NorthSouthRed = 0;
}
else if (count <= 15)
{
NorthSouthGreen = 0;
NorthSouthYellow = 1;
NorthSouthRed = 0;
}
else {
NorthSouthGreen = 0;
NorthSouthYellow = 0;
NorthSouthRed = 1;
}
}
void main()
{
TMOD = 0x01;
TH0 = TL0_INIT_VALUE >> 8;
TL0 = TL0_INIT_VALUE & 0xFF;
ET0 = 1;
EA = 1;
TR0 = 1;
while (1)
{
}
}
|
-
-
红绿灯.7z
59.81 KB, 下载次数: 10, 下载积分: 黑币 -5
|