我想写个程序实现按一下按钮,relay1工作,延时1秒后relay2工作,再次按下该按钮relay1和relay2不工作,,如此反复.由于我没学过C语言与单片机,请指教:
#include "reg52.h"
sbit relay1 = P0^2;
sbit relay2 = P0^3;
sbit key = P1^1;
#define ON 0
#define OFF 1
#define pressed 1
#define unpressed 0
void main()
{
}
C51单片机与C语言
答案:3 悬赏:70 手机版
解决时间 2021-02-14 12:00
- 提问者网友:练爱
- 2021-02-14 07:30
最佳答案
- 五星知识达人网友:你哪知我潦倒为你
- 2021-02-14 07:53
//假设所有控制口都低有效。
#include <reg52.h>
sbit relay1 = P0^2;
sbit relay2 = P0^3;
sbit key = P1^1;
void delay(unsigned int a)
{
unsigned ing i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
bit keyscan()
{
if(key==0)
{
delay(10);
if(key==0)
{
while(key==0);
return(1);
}
}
return(0);
}
void main()
{
bit flag=0;
relay1=1;
relay2=1;
while(1)
{
if(keyscan())
{
flag=~flag;
if(flag)
{
relay1=0;
delay(1000);
relay2=0;
}
else
{
relay1=1;
relay2=1;
}
}
}
}
#include <reg52.h>
sbit relay1 = P0^2;
sbit relay2 = P0^3;
sbit key = P1^1;
void delay(unsigned int a)
{
unsigned ing i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
bit keyscan()
{
if(key==0)
{
delay(10);
if(key==0)
{
while(key==0);
return(1);
}
}
return(0);
}
void main()
{
bit flag=0;
relay1=1;
relay2=1;
while(1)
{
if(keyscan())
{
flag=~flag;
if(flag)
{
relay1=0;
delay(1000);
relay2=0;
}
else
{
relay1=1;
relay2=1;
}
}
}
}
全部回答
- 1楼网友:未来江山和你
- 2021-02-14 09:56
用c51是多么简单的事情啊。你的每个灯的顺序不说。不好写。
思路这样的:
sbit led1=p1^0;
~~~
把所有的灯都定一下。
void delay(int ms)
{
int x,y;
for(x=ms;x>0;x--)
for(y=110;y>0;y--);
}
一个nms的延迟,要求是12m的晶振。
void main()
{
while(1)
{
led1=0;
delay(1000);
led1=1;
里面随便写了。
}
}
- 2楼网友:詩光轨車
- 2021-02-14 09:27
void delayms(unsigned int)
{
unsigned char t,i;
while(t--);
{
for(i=0;i<121;i++);
}
}
void main()
{
while(key);
{
delayms(10);
if(key==0)
{
while(1)
{
relay1=1;
delayms(1000);
relay2=1;
delayms(1000);
if(key==0)
break;
}
break;
}
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯