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

如题所述

第1个回答  2017-05-05
#include <reg51.h>

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个回答  2017-05-02
用定时器试试,用时钟算好时间,在用IO口去控制,应该不难追问

可以帮忙写的程序出来吗?

相似回答