长汀无线电厂交流论坛

标题: 发个小程序,单键操作,可以调节开关时间的 [打印本页]

作者: gw168sh    时间: 2011-3-12 10:05
标题: 发个小程序,单键操作,可以调节开关时间的
这个程序配合计数器使用,用来做零件寿命测试用的。
当然也可以做鱼缸定时充气,或者冰箱定时,外围加一些电路就可以了。
程序比较垃圾,见笑了.

#include <reg52.h>//p3.4接按键,切换模式,晶振8M
unsigned char ID; //P1.1&P1.2接LED指示,即同一时间内这两个脚只有一个脚 可以点亮,当然也可以驱动别的。
#define uint unsigned int;//OUT 根据指示灯P1.1或者P1.2那个亮决定开关时间,开关的时间在程序里面调整//
uint x,y,z,num,tt;//暂时只能设置两种开关时间  ,上电一种,按一下开关换另一种,再按循环。
sbit key=P3^4;
sbit dcfzs=P1^1;
sbit out=P1^3;
sbit cqzs=P1^2;
void delay10ms(void)
{
  unsigned char i,j;
  for(i=20;i>0;i--)
  for(j=110;j>0;j--);
}
void main()
{
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
   
key=1;//按键置1
ID=0;

//key-----------
while(1){
  if(key==0)
  {
  delay10ms();
  if(key==0)
   {
   num=0;
   ID++;
   if(ID==2)
    {ID=0;
    }
   while(key==0);//如果不是0才跳出,等待按键释放。
   }
  }
   
  
////////////////////////////////
switch(ID)//查询ID是几
  {
  case 0:
            cqzs=1;
   dcfzs=0;
   //num++;
   if(num==40)//12.5=1s 调整输出高电平时间
    {         
    out=1;
    }
   else{
      if(num==80)//调整输出低电平时间,注意,这里的数要减去高电平时间才是低电平时间
      {
      out=0;
      num=0;
      }
    }
            break;
   case 1:
   cqzs=0;
   dcfzs=1;
   if(num==145)//12.5=1s
      {
       out=1;
      }
    else{
     if(num==278)
      {
      out=0;
      num=0;
      }
      }
     break;
               
  
  }
  
  }
}
void T0_time () interrupt 1    // 定时器0中断
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
}


作者: Xiayu9213    时间: 2011-3-13 12:33
无私奉献!支持一下。
作者: 快活丞    时间: 2011-3-17 21:31
支持下!
作者: 社建电子    时间: 2011-3-19 17:40
支持下,这就是C?
作者: lsy8607    时间: 2013-3-3 22:29
谢谢分享,谢谢分享
作者: 山东人    时间: 2013-3-5 09:52
支持原创。
作者: weixiao    时间: 2013-3-5 21:41
高手!实在是高!来个硬件的图好不好!我们太菜!不懂!

作者: mirage    时间: 2013-5-11 11:20
支持原创。





欢迎光临 长汀无线电厂交流论坛 (http://www.ctwxd.com/) Powered by Discuz! X3.1