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秒亮、灭,不能判断白天黑夜,判断白天黑夜工程上的做法一般是用光敏电阻,搭一个单片机的外部中断输入,一般是一个触发脉冲,也就是当外部中断到来时判断启停定时中断。你要是不嫌麻烦也可以用单片机做时钟,软件判断几点开始为白天,几点开始为黑夜,再来开启或关闭定时中断,但是这样要时钟跑的很准(一般不容易做到)。
利用51单片机来实现航标灯的控制,使用定时器来控制二极管的发光,可以模拟水上航标灯的功能#include<REG51.H>
sbit guang=P1^1
sbit deng=P1^2
void mian(void)
{
unsigned char i=0
unsigned char j=0
TMOD=0x01//定时器0,工作方式1
TH0=0x4c
TL0=0x00
TR0=1
deng=0
while(1)
{
if(guang==0)
{
TR0=1
if(TF0)
{
TF0=0
TH0=0x4c
TL0=0x00
i++
}
if(i==40)
{
i=0
deng=!deng
}
}
if(guang==1)
{
TR0=0
TH0=0x4c
TL0=0x00
deng=1
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)