|
这个程序配合计数器使用,用来做零件寿命测试用的。
当然也可以做鱼缸定时充气,或者冰箱定时,外围加一些电路就可以了。
程序比较垃圾,见笑了.
#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++;
}
|
|