基于51单片机的定时系统,定时器程序到底该怎么加
void main()
{
unsigned char i,j,k;
unsigned char *datPtr;
unsigned int temp,temp1,s,m;
a=0;
// S_Time RTC={0x00,0x33,0x23,0x04,0x21,0x05,0x15}; //初始化时间结构体变量(设置时间:2014年11月12日 14:59:55 星期一)
// 55秒 59分 14时 周一 10日 11月 14年
LEDA=0;
LEDB=0;
LEDC=0;
UartInit();
MAX7219_Init ();//初始化MAX7219
MAX7219_SetBrightness (5) ;//亮度设置 1-15 min-max
adcinit();
while(1)
{
TIME_Dsip();//显示时间
Delay(100);
adcinit(1);
temp=adcmea(1);
Temp_Dsip((char)temp);
Delay(100);
adcinit(0);
temp=adcmea(0);
Temp_Dsip((char)temp);
Delay(100);
Read_RT();//显示温度
temp=TMP_BCD();
temp=temp>>4;
Temp_Dsip((char)temp);
Delay(100);
temp=RH_BCD();//显示湿度
temp=temp>>4;
Hum_Dsip((char)temp);
Delay(100);
InitADC();
s= GetADCResult(1);
m=s/1000;
MAX7219_DisplayChar (0x01, m);
m=(s%1000)/100;
MAX7219_DisplayChar (0x02, m);
m=(s%100)/10;
MAX7219_DisplayChar (0x03, m);
m=s%10;
MAX7219_DisplayChar (0x04, m);
Delay(100);
Uart_Send(UART_DataBuff);
}
}
//配置为双8位定时器,主函数
{
TMOD = 0x01;
TH0 = (65536 - 45872) / 256 ;
TL0 = (65536 - 45872) % 256 ;
EA = 1;
ET0 = 1;
TR0 = 1;
}
//下面为一分钟计时,自己去改后加入继电器程序
void T0_Time() interrupt 1
{
TH0 = (65536-45872)/256 ;
TL0 = (6556-45872)%256 ;
num1++;
if (num1 == 20)
{
num1==0;
}
}
加在哪里呢,主要我有一个湿度达到一定值才开启计时四小时的条件
首先要配置相关的定时器寄存器和中断寄存器:TMOD,TCON,IE,具体的配置位请查询相应资料。
第二,在文件的任何位置(不是头文件之前和其他函数里面)添加下面函数
void Time_SER() interrupt 1//定时器0中断程序
{
TL1 = 0; //这两句是初值重装 ,可以是其他的比如50mS中断一次
TH1 = 0; if(湿度值==湿度条件)
{
继电器关闭;
计数条件=1;
}
if(计数条件) Count++;
if(Count>=20)//50mS中断一次20次就刚好一秒
{
Count=0;//清零,等待下一次计满20
Sec++;//秒增加
if(Sec>59)
{
MIN++;
if(MIN>240)//四小时
{
继电器开启;
MIN = 0;//等待下一次
计数条件 = 0;
}
}
}
}
就是达到后把TR0=0,变成TR0=1,打开定时器,就开启4小时了,之后在中断函数使TR0=0,就行了,希望有帮助。
能留个QQ么,后期有问题向您咨询,谢谢了
2582008417