|
不好意思,麻煩您一下
#include <reg51.h>
typedef unsigned int u16;
sbit B_RED = P0^0;
sbit B_GRN = P0^1;
sbit B_YLW = P0^2;
sbit N_RED = P3^3;
sbit N_GRN = P3^4;
sbit N_YLW = P3^5;
sbit D_RED = P0^3;
sbit D_GRN = P0^4;
sbit D_YLW = P0^5;
sbit X_RED = P3^0;
sbit X_GRN = P3^1;
sbit X_YLW = P3^2;
u16 RED,YLW,GRN;
void main(void)
{
// Write your code here
/*初始狀態(tài)*/
B_RED = 0;
B_GRN = 1;
B_YLW = 1;
N_RED = 0;
N_GRN = 1;
N_YLW = 1;
D_RED = 1;
D_GRN = 0;
D_YLW = 1;
X_RED = 1;
X_GRN = 0;
X_YLW = 1;
/*定時器*/
TMOD = 0x01; //設(shè)置定時器0為工作方式1
TH0 = (65536-50000)/256; //單片機晶振為12MHz,產(chǎn)生50ms的中斷
TL0 = (65536-50000)%256;
EA = 1; //開總中斷
ET0 = 1; //開定時器0中斷
TR0 = 1; //啟動定時器0
while(1) //等待中斷
{
/*南北紅燈和東西紅燈的運作方式*/
if(RED==600)
{
RED = 0;
B_RED = ~B_RED;
N_RED = ~N_RED;
D_RED = ~D_RED;
X_RED = ~X_RED;
}
/*南北綠燈和東西綠燈的運作方式*/
}
}
void T0_time() interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
RED++;YLW++;GRN++;
} |
|