51单片机 利用定时器0和定时器1制作成的条形LED流水灯

51单片机 利用定时器0和定时器1制作成的条形LED流水灯


本实例是通过利用了2个定时器,通过设置不同的计数时间,来实现不同间隔时间下的流水灯效果。

  • Proteus仿真
    在这里插入图片描述
  • Proteus器件列表
    在这里插入图片描述

实例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar tc0 = 0,tc1 = 0;

void main()
{
P0 = 0xfe;
P2 = 0xfe;
TMOD = 0x11;
TH0 = (65535-15000)/256;
TL0 = (65535-15000)%256;
TH1 = (65535-15000)/256;
TL1 = (65535-15000)%256;
IE = 0x8a;
TR0 = 1;
TR1 = 1;
while(1);
}

void Time0() interrupt 1
{
TH0 = (65535-15000)/256;
TL0 = (65535-15000)%256;
if(++tc0 == 10)
{
tc0 = 0;
P0 = \_crol\_(P0,1);
}
}

void Time1() interrupt 3
{
TH0 = (65535-15000)/256;
TL0 = (65535-15000)%256;
if(++tc1 == 10)
{
tc1 = 0;
P2 = \_crol\_(P2,1);
}
}

程序源码和仿真资源

1
2
3
链接:https://pan.baidu.com/s/1ZIrRH4FYesJgW2dOUcyTrQ 
提取码:eqlo