找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于单片机延时程序的问题

  [复制链接]
楼主
ID:78322 发表于 2017-12-30 09:36 | 显示全部楼层
#include<reg51.h>        //库文件 #define uchar unsigned char//宏定义无符号字符型 #define uint unsigned int  //宏定义无符号整型   /********************************************************************                             I/O定义 *********************************************************************/ sbit DOUT=P1^3; sbit YOUT=P1^4; sbit LED1=P3^7; uint16   Timecount; /********************************************************************                             延时函数 *********************************************************************/ void delay()//延时程序 {     uchar m,n,s;     for(m=20;m>0;m--)     for(n=20;n>0;n--)     for(s=248;s>0;s--); } /********************************************************************                             主函数 *********************************************************************/ void main() {     Timer0_init();     //开启定时器0产生1s的中断     while(1)   //无限循环     {         if((DOUT==1&&YOUT==1))//当DO输出低电平时         {             delay();//延时抗干扰             if((DOUT==1&&YOUT==1))//确定 DO口输出低电平             {                 LED1=1;   //这个地方我想添加一个延时的程序 有大神知道怎么添加吗? 延时6个小时左右                 Timecoun = 0;                 while(Timecoun < 3600);             }             else             {                 LED1=0;             }         }     } } void timeint(void) interrupt 1 {     Timecount++; }
回复

使用道具 举报

沙发
ID:78322 发表于 2017-12-30 12:02 | 显示全部楼层
#include<reg52.h>        //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int  //宏定义无符号整型

#define DELAYTIME     (200)

typedef enum{false=0, true = 1}  bool;
/********************************************************************
                            I/O定义
*********************************************************************/
sbit DOUT=P1^3;
sbit YOUT=P1^4;
sbit LED1=P3^7;
unsigned short   Timecount;
bool   LedOffflag;
bool   KeyFlag;
/********************************************************************
                            延时函数
*********************************************************************/
void delay()//延时程序
{
    uchar m,n,s;
    for(m=20;m>0;m--)
    for(n=20;n>0;n--)
    for(s=248;s>0;s--);
}
/********************************************************************
                            主函数
*********************************************************************/
void Timer0_init()
{
    EA   = 1;
    ET0  = 1;
    TR0  = 1;
    TMOD = 0x01; //定时器0 计数模式 定时器1模式1
    TH0  = 0x0C;
    TL0  = 0xB0;
}

bool GetKey(void)
{
    if((DOUT==1&&YOUT==1))
         return true;
    else return false;
}


void main()
{
    Timer0_init();     //开启定时器0产生1s的中断
    while(1)   //无限循环
    {
        KeyFlag = GetKey();
        
        if(KeyFlag)
        {
            LED1 = 1;
            Timecount = 0;
            LedOffflag = false;
        }
        else if(LedOffflag)
        {
            LED1 = 0;
        }
    }
}
void timeint(void) interrupt 1
{
    TH0 = 0x00;
    TL0 = 0xB0;
    Timecount++;
    if(Timecount >= DELAYTIME)
    {
        Timecount = DELAYTIME;
        LedOffflag = true;
    }
}
这是重新写的程序,需要延时多长时间,就修改宏DELAYTIME的值。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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