#include
EA=1;
ET0=1;
TR0=1;
while(1) {;}}void time0() interrupt 1{ TL0=....;//重装计算初值,看你定时多长时间中断一次 TH0=...; t--; if(t==0) { t= ...;//t乘以定时器定时的时间等于2秒 p1^0 = ~p1^0;//假设是灯的驱动管脚,取反就可以了 }} 上面的程序只是让灯能每隔2秒亮、灭,不能判断白天黑夜,判断白天黑夜工程上的做法一般是用光敏电阻,搭一个单片机的外部中断输入,一般是一个触发脉冲,也就是当外部中断到来时判断启停定时中断。你要是不嫌麻烦也可以用单片机做时钟,软件判断几点开始为白天,几点开始为黑夜,再来开启或关闭定时中断,但是这样要时钟跑的很准(一般不容易做到)。