找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

  [复制链接]
跳转到指定楼层
楼主
ID:137704 发表于 2017-12-29 16:36 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
30黑币
#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;
/********************************************************************
                            延时函数
*********************************************************************/
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()
{
        while(1)   //无限循环
        {
         if((DOUT==1&&YOUT==1))//当DO输出低电平时
         {
            delay();//延时抗干扰
                if((DOUT==1&&YOUT==1))//确定 DO口输出低电平
            {
                   LED1=1;   //这个地方我想添加一个延时的程序 有大神知道怎么添加吗? 延时6个小时左右
                                 
                }
          else
              {
                               LED1=0;

                }
         }
        }
}   

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

使用道具 举报

沙发
ID:137704 发表于 2017-12-30 07:42 | 显示全部楼层
luoluoluo136 发表于 2017-12-29 17:24
把需求说得清楚点~你要延时十天八天都是可以的。定时器计数,然后判断时间就可以了。

就是DOUT YOUT都为1的时候 LED1一直点亮六小时 如果中途DOUT YOUT有一个为0的时候就退出循环 LED1熄灭 直到 DOUT YOUT 再次都为1  
回复

使用道具 举报

板凳
ID:137704 发表于 2018-1-5 14:42 | 显示全部楼层
立里 发表于 2017-12-30 12:02
#include        //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int ...

我的单片机是STC12C5204PWM的 外部晶振 12MHZ 照着你的程序烧录后 只要一通电 LED就亮着 不管1.3 1.4是高电平还是低电平
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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