找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2421|回復(fù): 4
收起左側(cè)

有沒有老哥幫忙加個無操作停止的程序

[復(fù)制鏈接]
ID:201781 發(fā)表于 2017-5-17 14:46 | 顯示全部樓層 |閱讀模式
#include <reg52.h>                 //調(diào)用單片機頭文件
#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;  //選擇開關(guān)


void delay_1ms(uint x)//延時函數(shù)
{
        uint i,j;
        for(i=0;i<x;i++)
        for(j=0;j<120;j++);
}

void work()//工作函數(shù)
{
        static uchar value,miao;  
        if(hw==0)//感應(yīng)到人
        {               
                delay_1ms(20);//延時20ms
                if(hw==0)//確定感應(yīng)到人
                {                       
                        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;    //關(guān)閉繼電器
                        }
                }       
        }
}

void main()//主函數(shù)
{
        P0 = P1 = P2 = P3 = 0XFF;
        while(1)//循環(huán)
        {
                work();//調(diào)用工作函數(shù)
                if(kaiguan == 0)  //冷風(fēng)
                {
                        yellow = 0;   //黃燈亮
                        green  = 1;   //綠燈滅
                }else                           //熱風(fēng)
                {
                        yellow = 1;   //黃燈滅
                        green  = 0;   //綠燈亮
                }
                delay_1ms(100);   //100ms
        }
}



回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2017-5-17 17:44 | 顯示全部樓層
一條命令即可:讓CPU處于休眠模式。
回復(fù)

使用道具 舉報

ID:201781 發(fā)表于 2017-5-17 18:40 | 顯示全部樓層
#include <reg52.h>                 //調(diào)用單片機頭文件
#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;  //選擇開關(guān)


void delay_1ms(uint x)//延時函數(shù)
{
        uint i,j;
        for(i=0;i<x;i++)
        for(j=0;j<120;j++);
}

void work()//工作函數(shù)
{
        static uchar value,miao;  
        if(hw==0)//感應(yīng)到人
        {               
                delay_1ms(20);//延時20ms
                if(hw==0)//確定感應(yīng)到人
                {                       
                        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;    //關(guān)閉繼電器
                        }
                }       
        }
}

void main()//主函數(shù)
{
        P0 = P1 = P2 = P3 = 0XFF;
//        TMOD=0x00;
//        TH0=(8192-4607)/32;
//        TL0=(8192-4607)%32;
//        ET0=1;
//        EA=1;
//        TR0=1;
        while(1)//循環(huán)
        {
                        work();//調(diào)用工作函數(shù)
                if(kaiguan == 0)  //冷風(fēng)
                {
                        yellow = 0;   //黃燈亮
                        green  = 1;   //綠燈滅
                }else                           //熱風(fēng)
                {
                        yellow = 1;   //黃燈滅
                        green  = 0;   //綠燈亮
                }
                delay_1ms(100);   //100ms
                       
        }
}                                                         
// void int1() interrupt 1
// {
//           TH0=(8192-4607)/32;
//        TL0=(8192-4607)%32;
//        num++;
// }
回復(fù)

使用道具 舉報

ID:201781 發(fā)表于 2017-5-17 18:40 | 顯示全部樓層
想加個定時器,有什么錯誤求解
回復(fù)

使用道具 舉報

ID:201781 發(fā)表于 2017-5-17 18:57 | 顯示全部樓層
yzwzfyz 發(fā)表于 2017-5-17 17:44
一條命令即可:讓CPU處于休眠模式。

定時器應(yīng)該可以解決吧,老哥幫忙看看那下面問題出在哪里
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表