请看程序,定时间隔10秒钟让led亮1秒钟

2020-02-05 08:45发布

本帖最后由 sunoracle 于 2012-7-20 09:57 编辑

晶振是11.0592的,LED灯珠是低电平触发的。下面有段程序不会写,烦请看看,指点一二。 或者请写出其他方法...

#include<reg52.h>         

#define uchar unsigned char
#define uint unsigned int

sbit P2_0 = P2^0;
uint i;
uint T_count = 0;

void led() interrupt 1
{
        if (  ++T_count == 200 )  //200个50ms,也就是10秒
        {
          P2_0 = 0;  // LED点亮
          T_count = 0;       
        }
       //?????????此处如何让P2_0在持续1秒之后,变为P2_0=1,使得led灯灭
}

void main()
{
        TMOD = 0x01;
        TH0 = 0x4C;         //50ms
        TL0 = 0x00;
        IE = 0x82;
        TR0 = 1;
        while(1);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
sunoracle
1楼-- · 2020-02-05 09:27
【2楼】
T1_count=1 second;  这句怎么写啊
zyyn123
2楼-- · 2020-02-05 13:34
sbit P2_0 = P2^0;
uint i;
uint T_count = 0;

void led() interrupt 1
{
        ++T_count;
        if(T_count>20)
                P2_0=1;
        if (T_count == 200 )  //200个50ms,也就是10秒
        {
          P2_0 = 0;  // LED点亮
          T_count = 0;        
        }
}

void main()
{
        TMOD = 0x01;
        TH0 = 0x4C;         //50ms
        TL0 = 0x00;
        IE = 0x82;
        TR0 = 1;
        while(1);
}
zlz
3楼-- · 2020-02-05 14:39
EA没开能运行吗?
zlz
4楼-- · 2020-02-05 15:38
使用状态机!
当led点亮时,加一句flag=1.
if(flag==1)
{
    if (  ++T_count == 20 )  //20个50ms,也就是1秒
  {
          P2_0 = 1;  // LED熄灭
       T_count = 0;        
    }

}
BXAK
5楼-- · 2020-02-05 18:54
 精彩回答 2  元偷偷看……
xyr
6楼-- · 2020-02-05 21:49
做个标记互锁

一周热门 更多>