想利用51单片机做一个延迟30S的控制,求大神帮忙设计一下!

想利用51单片机做一个延迟30S的控制,求大神帮忙设计一下!,第1张

#include<reg51.h>

#include<intrins.h>

#define X0 P2^0 //红外线开关输入

#define Y0 P0^0 //控制开关

void delay50ms(unsigned int i)

{

unsigned int j

for(ii>0i--)

for(j=50000j>0j--) //该处使用的为12MHz晶振,及一周期用时1us

}

void main()

{

start:

unsigned int k

P0=0x00 //输出初始化

p2=0x00 //输入初始化

for(k=35k>0k--)

{

if(X0==1)goto L1

delay50ms(20) //1秒扫描判断一次,如果有需要,可以自己配合k改动扫描时间

}

Y=1 //反之35S之后的话开关闭合

while(X0==0) //如果红外线开关35S以后关了

delay50ms(600) //延迟开关30S之后

Y0=0 //开路,设计完成

while(P2^1==0) //这里给你设计了个等待复位按钮,方便你复位

goto start

L1:Y0=0 //如果红外线开关在35S之内关了,与51相连的开关开路

}

void delay30ms()

{

unsigned char i,j

for(i=0i<30i++)

for(j=0j<120j++)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12146368.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存