/*
实现的功能: 1、东西向绿灯亮5秒后,2、黄灯闪烁,3、闪烁2次后亮红灯,
4、红灯亮后,南北向由红灯变为绿灯,5、5秒后南北向黄灯闪烁,
6、闪烁5次后亮红灯,7、东西向绿灯亮,如此重复。
*/
#include <REGX51.H>
#define uint unsigned int
#define uchar unsigned char
uint i=0;
sbit nbu = P1^0; // 南北黄
sbit nbl = P1^1; // 南北绿
sbit nbh = P1^2; // 南北红
sbit dxu = P1^3; // 东西黄
sbit dxl = P1^4; // 东西绿
sbit dxh = P1^5; // 东西黄
void main()
{
TMOD = 0x01;
TH0 = (65336 - 50000)/256;
TL0 = (65536 - 50000)%256;
TH1 = (65336 - 50000)/256;
TL1 = (65536 - 50000)%256;
EA = 1;
ET0 = 1;
while(1)
{
if( nbh = 0,dxl = 0) //东西绿灯亮 ,南北红灯亮
{
TR0 = 1; //启动定时器
if(i == 100)
{
i = 0; //清零
dxu = 0; //东西绿
TR0 = 0; //关闭定时器
dxl = 1; //东西绿灭
}
}
}
}
void terr () interrupt 1
{
TH0 = (65336 - 50000)/256;
TL0 = (65536 - 50000)%256;
i++;
}
为什么dxl = 1;不会灭 哪里出现问题了 具体怎么改
这里的闪烁程序怎么写 都想爆大脑了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这句定义反了吧。应该sbit P1^4=dxl;
是这样定义的!建议你多看看单片机C语言基础!
一周热门 更多>