| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 355 人关注过本帖
标题:那位大神帮忙看下问题出在那P1^0根P1^3延时时间太长了
取消只看楼主 加入收藏
jy693
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-7-17
收藏
 问题点数:0 回复次数:0 
那位大神帮忙看下问题出在那P1^0根P1^3延时时间太长了
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
//以下d1到d8代表8组继电器

sbit    d1=P1^0;
sbit    d2=P1^1;
sbit    d3=P1^2;
sbit    d4=P1^3;
sbit    d5=P1^4;
sbit    d6=P1^5;
sbit    d7=P1^6;
sbit    d8=P1^7;
//HW为红外开关
sbit    HW=P2^0;

unsigned int num=0;
int en=0;
int cnt=0;
void delays(int s);
void test()
{
delays(1);
d1=0;
delays(1);
d2=0;
delays(1);
d3=0;
delays(1);
d4=0;
delays(1);
d5=0;
delays(1);
d6=0;
delays(1);
d7=0;
delays(1);
d8=0;
delays(1);




}
void stop1()
{
d1=0;

}
void run1()
{
d1=1;
}
void  zhen1()
{
d2=0;
d3=0;
}

void fan1()
{
d2=1;
d3=1;
}


void stop2()
{
d4=1;

}

void run2()
{
d4=0;
}
void  zhen2()
{
d5=0;
d6=0;
}

void fan2()
{
d5=1;
d6=1;
}
void main()
{
    TMOD=0x01;//设置定时器0为工作方式1(0000 0001)
    TH0=(65536-45872)/256;//装初值
    TL0=(65536-45872)%256;
    EA=1;
    ET0=1; //开定时器0中断
    TR0=0; //
 while(1)
 {
/*
 //P1=0XFF;
 //delays(1);
  //P1=0X00;
 // delays(1);  
             */
                 //test();  //自检        
         //if(HW==0)
     
     //delays(1);
       //if(HW==0)
       {
      
            stop1();
         zhen1();
         run1();
         delays(7);
         stop1();
         delays(15);
         stop2();
         zhen2();
         run2();
         delays(4);
         delays(1);
         stop2();
         fan2();
         run2();
         delays(5);
         delays(1);
         stop1();
         fan1();
        run1();
         delays(5);
         stop1();
         delays(1);   


                                


     
         
        //while(HW==1);
     
     }
    }
  }
  
 
void T0_time() interrupt 1
{
    TH0=(65536-45872)/256;//装初值
    TL0=(65536-45872)%256;
    num++;
    if(num==20)        //如果到了20次,说明1秒时间到
    {
        num=0;
        if(en)
        {
            cnt++;
        
        }
        else
        {
        
             cnt=0;
        }        
   
    }            
}
//基于TIMER 高精度延时函数    最小单位是秒
void delays(int s)
{

 TR0=0;
  cnt=0;
  en=1;
  TH0=(65536-45872)/256;//装初值
    TL0=(65536-45872)%256;
    num=0;
    TR0=1;

  while(cnt<s);
  en=0;
  }
搜索更多相关主题的帖子: 红外开关 include 继电器 
2015-07-17 10:54
快速回复:那位大神帮忙看下问题出在那P1^0根P1^3延时时间太长了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040107 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved