- /*********************************************************************************************
- 修改:刘海龙
- 程序名:测试
- /*********************************************************************************************/
- #include <reg52.h>
- sbit relay1=P1^3;
- sbit relay2=P1^4;
- sbit k=P0^0;
- unsigned char cou, TIME_HH,TIME_MM,TIME_SS;
- void main()
- {
- TMOD=0x01;
- TH0 = 0x3c; // 重置定时常数
- TL0 = 0xb0;
- EA=1; ET0=1;
- TR0=0;
- while(1){
- if(k==0){
- TR0=1;//如果k按键按下开始计时
- relay1=0;//继电器1通电
- }
- }
- }
- void timer0() interrupt 1
- {
- cou++; // 软计数器加1
- if(cou > 19){ // 计数值到100(1s)
- cou = 0; // 软计数器清零
- TIME_SS++; // 秒计数器加1(进位10ms*100=1s)
-
- if(TIME_SS > 59){ // 秒计数值到60
-
- TIME_SS = 0; // 秒计数器清零
- TIME_MM++; // 分计数器加1(进位60s=1m)
- if(TIME_MM > 59){ // 分计数到60
- TIME_MM = 0; // 分计数器清零
- TIME_HH++; // 时计数器加1(进位60m=1h)
- if(TIME_HH = 0)relay1=0;
- if(TIME_HH = 1)relay1=1;//1小时到关继电器1
- if(TIME_HH = 2)relay2=0;//又到1小时开继电器2
- if(TIME_HH = 3)relay2=1;//又到一小时关继电器2
- if(TIME_HH = 4){ // 计数到4h
- TIME_HH = 0; // 时计数器清零重新循环
- relay1=0;
- }
- }
- }
- }
- TH0 = 0x3c; // 重置定时常数
- TL0 = 0xb0;
-
-
- }
- /************************************END*********************************************************/
复制代码 |