51单片机C语言控制LED灯亮10分钟灭120分钟

2025-03-07 01:14:37
推荐回答(2个)
回答1:

#include

sbit P12 = P1^2;

void main(void) //主程序
{
RCAP2H =0x10; //赋T2的预置值0x1000,溢出30次就是1秒钟
RCAP2L =0x00;
TR2=1; //启动定时器
ET2=1; //打开定时器2中断
EA=1; //打开总中断
P12 =1; //初始灯亮
while(1);
}
//定时器2中断
timer2() interrupt 5
{
static unsigned int t,t1;
TF2=0; //!!!注意!!! 定时器2必须由软件对溢出标志位清零,硬件不能清零,这里与定时器0和定时器1不同!!!
t++;
if(t==18000) //T2的预置值0x1000,溢出30次就是1秒钟,这边为10分钟后灯灭,晶振22118400HZ
{
t=0;
t1++;
P12=0;
}
if(t1==12) // 13个10分钟,总时间130分钟到,灯亮,130-10=120灭的时间
{

t1=0;
P12=1;

}
你试一下,我手边暂时没电脑,手打的,整体就是这个意思;你可以换成定时器T1

回答2:

用定时器试试,用时钟算好时间,在用IO口去控制,应该不难