標(biāo)題: 有沒有老哥幫忙加個(gè)無操作停止的程序 [打印本頁]

作者: grglove    時(shí)間: 2017-5-17 14:46
標(biāo)題: 有沒有老哥幫忙加個(gè)無操作停止的程序
#include <reg52.h>                 //調(diào)用單片機(jī)頭文件
#define uchar unsigned char  //無符號(hào)字符型 宏定義        變量范圍0~255
#define uint  unsigned int         //無符號(hào)整型 宏定義        變量范圍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í)函數(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);//延時(shí)20ms
                if(hw==0)//確定感應(yīng)到人
                {                       
                        relay=0;//繼電器吸合
                        miao = 0;
                        value = 0;
                }
        }
        if(relay == 0)    //繼電器吸合 計(jì)時(shí)3秒
        {
                value ++;
                if(value >= 10)
                {
                        value = 0;
                        miao ++;
                        if(miao >= 3)          //3秒的時(shí)間
                        {
                                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
        }
}




作者: yzwzfyz    時(shí)間: 2017-5-17 17:44
一條命令即可:讓CPU處于休眠模式。
作者: grglove    時(shí)間: 2017-5-17 18:40
#include <reg52.h>                 //調(diào)用單片機(jī)頭文件
#define uchar unsigned char  //無符號(hào)字符型 宏定義        變量范圍0~255
#define uint  unsigned int         //無符號(hào)整型 宏定義        變量范圍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í)函數(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);//延時(shí)20ms
                if(hw==0)//確定感應(yīng)到人
                {                       
                        relay=0;//繼電器吸合
                        miao = 0;
                        value = 0;
                }
        }               
//            if(num==10000)
//                                {
//                                 num=0;
//                                 relay=1;
//                                }
        if(relay == 0)    //繼電器吸合 計(jì)時(shí)3秒
        {
                value ++;
                if(value >= 10)
                {
                        value = 0;
                        miao ++;
                        if(miao >= 3)          //3秒的時(shí)間
                        {
                                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++;
// }
作者: grglove    時(shí)間: 2017-5-17 18:40
想加個(gè)定時(shí)器,有什么錯(cuò)誤求解
作者: grglove    時(shí)間: 2017-5-17 18:57
yzwzfyz 發(fā)表于 2017-5-17 17:44
一條命令即可:讓CPU處于休眠模式。

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




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1