找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1998|回复: 4
打印 上一主题 下一主题
收起左侧

有没有老哥帮忙加个无操作停止的程序

[复制链接]
跳转到指定楼层
楼主
ID:201781 发表于 2017-5-17 14:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>                 //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255
#define uint  unsigned int         //无符号整型 宏定义        变量范围0~65535


sbit hw=P1^7;             //人体红外
sbit relay=P2^1;         //继电器控制灯
sbit yellow = P0^7;  //黄色指示灯
sbit green = P0^4;   //绿色指示灯

sbit kaiguan = P2^7;  //选择开关


void delay_1ms(uint x)//延时函数
{
        uint i,j;
        for(i=0;i<x;i++)
        for(j=0;j<120;j++);
}

void work()//工作函数
{
        static uchar value,miao;  
        if(hw==0)//感应到人
        {               
                delay_1ms(20);//延时20ms
                if(hw==0)//确定感应到人
                {                       
                        relay=0;//继电器吸合
                        miao = 0;
                        value = 0;
                }
        }
        if(relay == 0)    //继电器吸合 计时3秒
        {
                value ++;
                if(value >= 10)
                {
                        value = 0;
                        miao ++;
                        if(miao >= 3)          //3秒的时间
                        {
                                miao = 0;
                                relay = 1;    //关闭继电器
                        }
                }       
        }
}

void main()//主函数
{
        P0 = P1 = P2 = P3 = 0XFF;
        while(1)//循环
        {
                work();//调用工作函数
                if(kaiguan == 0)  //冷风
                {
                        yellow = 0;   //黄灯亮
                        green  = 1;   //绿灯灭
                }else                           //热风
                {
                        yellow = 1;   //黄灯灭
                        green  = 0;   //绿灯亮
                }
                delay_1ms(100);   //100ms
        }
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2017-5-17 17:44 | 只看该作者
一条命令即可:让CPU处于休眠模式。
回复

使用道具 举报

板凳
ID:201781 发表于 2017-5-17 18:40 | 只看该作者
#include <reg52.h>                 //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255
#define uint  unsigned int         //无符号整型 宏定义        变量范围0~65535
uchar a=100,num=0;

sbit hw=P1^7;             //人体红外
sbit relay=P2^1;         //继电器控制灯
sbit yellow = P0^7;  //黄色指示灯
sbit green = P0^4;   //绿色指示灯

sbit kaiguan = P2^7;  //选择开关


void delay_1ms(uint x)//延时函数
{
        uint i,j;
        for(i=0;i<x;i++)
        for(j=0;j<120;j++);
}

void work()//工作函数
{
        static uchar value,miao;  
        if(hw==0)//感应到人
        {               
                delay_1ms(20);//延时20ms
                if(hw==0)//确定感应到人
                {                       
                        relay=0;//继电器吸合
                        miao = 0;
                        value = 0;
                }
        }               
//            if(num==10000)
//                                {
//                                 num=0;
//                                 relay=1;
//                                }
        if(relay == 0)    //继电器吸合 计时3秒
        {
                value ++;
                if(value >= 10)
                {
                        value = 0;
                        miao ++;
                        if(miao >= 3)          //3秒的时间
                        {
                                miao = 0;
                                relay = 1;    //关闭继电器
                        }
                }       
        }
}

void main()//主函数
{
        P0 = P1 = P2 = P3 = 0XFF;
//        TMOD=0x00;
//        TH0=(8192-4607)/32;
//        TL0=(8192-4607)%32;
//        ET0=1;
//        EA=1;
//        TR0=1;
        while(1)//循环
        {
                        work();//调用工作函数
                if(kaiguan == 0)  //冷风
                {
                        yellow = 0;   //黄灯亮
                        green  = 1;   //绿灯灭
                }else                           //热风
                {
                        yellow = 1;   //黄灯灭
                        green  = 0;   //绿灯亮
                }
                delay_1ms(100);   //100ms
                       
        }
}                                                         
// void int1() interrupt 1
// {
//           TH0=(8192-4607)/32;
//        TL0=(8192-4607)%32;
//        num++;
// }
回复

使用道具 举报

地板
ID:201781 发表于 2017-5-17 18:40 | 只看该作者
想加个定时器,有什么错误求解
回复

使用道具 举报

5#
ID:201781 发表于 2017-5-17 18:57 | 只看该作者
yzwzfyz 发表于 2017-5-17 17:44
一条命令即可:让CPU处于休眠模式。

定时器应该可以解决吧,老哥帮忙看看那下面问题出在哪里
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表