一直用的是山寨936焊台,便宜,效果不错,用了5年了居然没坏过,仅仅换过头子。做了控制器,用STC15F104W来控制休眠温度。奏是闲得无聊,玩玩而已。
#include <STC15F104E.H> //12MHz
#define uchar unsigned char //宏定义字符型变量
#define uint unsigned int //宏定义整型变量
sbit in=P3^4;
sbit out=P3^3;
uchar flag=0;
long jishu=0;
/************************************/
/**********250ms延时函数******************/
/************************************/
void Delay250ms(uchar ms) //@12.000MHz
{
uchar a,b,c,n;
for(c=189;c>0;c--)
for(b=230;b>0;b--)
for(a=33;a>0;a--);
for(n=ms;n>0;n--);
}
/************************************/
/**********定时器初始化******************/
/*********定时器0时钟1T模式,100微秒进行一次休眠检测***************************/
void Timer0Init(void) //100微秒@12.000MHz
{ EA = 1; //开中断
ET0=1; //开定时器0中断
INT_CLKO |= 0x40; //(EX4 = 1))使能INT4中断
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x50; //设置定时初值
TH0 = 0xFB; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
/************************************/
/**********定时器0,休眠检测*********/
/************************************/
void tm0_isr() interrupt 1 using 1
{
jishu++;
if(jishu>=3000000){flag=1;} //5分钟,降温
if(jishu>=6000000){flag=2;} //10分钟,更低降温
if(jishu>=12000000){flag=3;jishu=12000000;} //20分钟,停止加热
}
/************************************
中断4 --休眠检测
************************************/
void exint4() interrupt 16 //
{
jishu=0;flag=0;
}
/************************************/
/************主函数******************/
/************************************/
main()
{
Timer0Init();
while(1)
{
switch (flag)
{
case 0: out=~in;break;
case 1: out=0;Delay250ms(8);out=~in;Delay250ms(2);break;
case 2: out=0;Delay250ms(12);out=~in;Delay250ms(1);break;
case 3: out=0; break;
default: break;
}
}
}
高手勿喷,就是玩玩!!