请选择 进入手机版 | 继续访问电脑版

普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 3593|回复: 4

计时器控制8个led 1秒精时流水

[复制链接]

2

主题

9

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2021-2-12 15:20:31 | 显示全部楼层 |阅读模式
5金钱
如何用计时器来控制实现8个led的1s定时流水,请大佬赐教?

由于本人金钱只有5金,赏金确实低了点,望理解。

我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 金钱 , 目前已有3人回答

回复

使用道具 举报

1

主题

5

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2021-2-15 19:22:00 | 显示全部楼层
1,用定时器中断定时为1ms;
2,在定时器中断里定义里面定义一个全局变量(可以中断外定义)如:static unsigned int a;
3,在中断函数里面写上a++;(当执行一次中断a自+1)
4,当我们要定时1m时,就是中断执行1000次;
5,那么我们只需在要定时的部分加上  if(a>1000){这里面就是定时1m了}
回复

使用道具 举报

2

主题

9

帖子

20

积分

新手上路

Rank: 1

积分
20
 楼主| 发表于 2021-2-16 16:41:36 | 显示全部楼层
#include <reg52.h>
#include <intrins.h>          
typedef unsigned char u16;
typedef unsigned int u8;
#define led P2
void delay(u16 i)
{while(i--);}

void timer0()
{TMOD|=0x01; //t0计时器
TH0=0xFC;
TL0=0x18;//1mS初值
ET0=1;
EA=1;
TR0=1;}        //控制计时/数器开启和中断

void main()
{ led=0xfe;
timer0();
while(1);
}

void Time0() interrupt 1
{static u16 i;

TH0=0xFC;
TL0=0x18;
i++;
if(i==1000)
{ i=0;
led=_crol_(led,1);
}


}

//你帮我看看是这样写吗?
我想实现每个一秒换下一个led灯亮
回复

使用道具 举报

2

主题

9

帖子

20

积分

新手上路

Rank: 1

积分
20
 楼主| 发表于 2021-2-16 16:42:23 | 显示全部楼层
#include <reg52.h>
#include <intrins.h>          
typedef unsigned char u16;
typedef unsigned int u8;
#define led P2
void delay(u16 i)
{while(i--);}

void timer0()
{TMOD|=0x01; //t0计时器
TH0=0xFC;
TL0=0x18;//1mS初值
ET0=1;
EA=1;
TR0=1;}        //控制计时/数器开启和中断

void main()
{ led=0xfe;
timer0();
while(1);
}

void Time0() interrupt 1
{static u16 i;

TH0=0xFC;
TL0=0x18;
i++;
if(i==1000)
{ i=0;
led=_crol_(led,1);
}


}

//你帮我看看是这样写吗?
我想实现每个一秒换下一个led灯亮


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-3-29 00:38 , Processed in 0.093441 second(s), 35 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表