打印
[疑难问答]

怎样用定时器做一个小时延时

[复制链接]
1633|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
litengg|  楼主 | 2016-10-22 19:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
sbit RELAY = P1^4;  //定义继电器使用的IO口
sbit K1    = P0^0;  //定义按键使用的IO口


void main()
{
    while(1)//大循环
    {   
        if(K1 == 0)    //如果按键按下
        {   a=2000;/这里/时间怎样设定一个小时
            RELAY = 0; //继电器闭合
            while(a--);
            a=2000;这里/时间怎样设定一个小时
            RELAY = 1; //
            while(a--);
        }
        else
        {
            RELAY = 1;
        }
    }
}
沙发
shashaa| | 2016-10-22 19:57 | 只看该作者
#include <reg52.h>
sbit d1=P1^0;
unsigned char c;
void main()
{
    TMOD=0x01;
    TH0=(65536-50000)/256;
    TL0=(655363-5000)%256;
    EA=1;  ET0=1;
    TR0=1;
    while(1);
}
void timer0() interrupt 1
{
    TH0=(65536-50000)/256;
    TL0=(655363-5000)%256;
    c++;
   if(c==50*20*3600) // 定时50ms    定时20次是1秒,再乘以3600是一个小时
   {
     d1=!d1;
     c=0;
   }
     
}

使用特权

评论回复
板凳
xia00| | 2016-10-22 19:58 | 只看该作者
shashaa 发表于 2016-10-22 19:57
#include
sbit d1=P1^0;
unsigned char c;

能不能再加个p1^1循环呢???

使用特权

评论回复
地板
hfdy01| | 2016-10-22 20:02 | 只看该作者
看看程序,不知道定时完了干嘛呢?

使用特权

评论回复
5
CallReceiver| | 2016-10-22 20:06 | 只看该作者
/*********************************************************************************************
修改:CallReceiver
程序名:测试

/*********************************************************************************************/
#include <reg52.h>
sbit relay1=P1^3;
sbit relay2=P1^4;
sbit k=P0^0;
unsigned char cou, TIME_HH,TIME_MM,TIME_SS;
void main()
{
    TMOD=0x01;
    TH0 = 0x3c;                // 重置定时常数   
    TL0 = 0xb0;
    EA=1;  ET0=1;
    TR0=0;
    while(1){
                 if(k==0){
                         TR0=1;//如果k按键按下开始计时
                        relay1=0;//继电器1通电
                 }
        }
}
void timer0() interrupt 1
{
   cou++;                      // 软计数器加1   
    if(cou > 19){                 // 计数值到100(1s)   
        cou = 0;               // 软计数器清零   
        TIME_SS++;                 // 秒计数器加1(进位10ms*100=1s)   
                        
        if(TIME_SS > 59){          // 秒计数值到60   
           
            TIME_SS = 0;           // 秒计数器清零   
            TIME_MM++;             // 分计数器加1(进位60s=1m)  
            if(TIME_MM > 59){      // 分计数到60   
                TIME_MM = 0;       // 分计数器清零   
                TIME_HH++;         // 时计数器加1(进位60m=1h)
                                if(TIME_HH = 0)relay1=0;
                                if(TIME_HH = 1)relay1=1;//1小时到关继电器1
                                if(TIME_HH = 2)relay2=0;//又到1小时开继电器2
                                if(TIME_HH = 3)relay2=1;//又到一小时关继电器2  
                if(TIME_HH = 4){  // 计数到4h   
                    TIME_HH = 0;   // 时计数器清零重新循环
                                        relay1=0;
                                }  
            }   
        }   
    }   

    TH0 = 0x3c;                // 重置定时常数   
    TL0 = 0xb0;
   
     
}
/************************************END*********************************************************/

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

1597

帖子

4

粉丝