求单片机C语言编程p1.0,p1.1分别控制led1,led2. p3.2控制按键开关,求详细C程序
2个回答
展开全部
#include<reg51.h>
#define uchar unsigned char
uchar sec,min,num;
sbit led1=P1^0;
sbit led2=P1^1;
sbit key=P3^2;
bit flag;
void delay(uchar x)
{
uchar i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num>=20)
{
num=0;
sec++;
if(sec>59)
{
sec=0;
min++;
switch(min)
{
case 0:led1=0;break;
case 1:if(flag){led1=0;min=0;flag=0;}
break;
case 4:led1=1;led2=0;break;
case 8:led2=1;break;
default:break;
}
if(min>=20)min=0;
}
}
}
void ext0() interrupt 0
{
delay(30);
if(key==0)
{
while(!key);
flag=1;
sec=0;
min=0;
num=0;
led1=1;
led2=1;
}
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
EX0=1;
IT0=1;
TR0=1;
led1=0;
led2=1;
flag=0;
while(1);
}
#define uchar unsigned char
uchar sec,min,num;
sbit led1=P1^0;
sbit led2=P1^1;
sbit key=P3^2;
bit flag;
void delay(uchar x)
{
uchar i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num>=20)
{
num=0;
sec++;
if(sec>59)
{
sec=0;
min++;
switch(min)
{
case 0:led1=0;break;
case 1:if(flag){led1=0;min=0;flag=0;}
break;
case 4:led1=1;led2=0;break;
case 8:led2=1;break;
default:break;
}
if(min>=20)min=0;
}
}
}
void ext0() interrupt 0
{
delay(30);
if(key==0)
{
while(!key);
flag=1;
sec=0;
min=0;
num=0;
led1=1;
led2=1;
}
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
EX0=1;
IT0=1;
TR0=1;
led1=0;
led2=1;
flag=0;
while(1);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-01
展开全部
电路图没有,不知道LED是什么电平亮。。。
上面的简单流程图还是错误的,唉,,,
上面的简单流程图还是错误的,唉,,,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询