实验内容:利用AT89C51的定时器0 方式1实现流水灯效果,并用仿真验证。
定时器0方式1的工作方式:定时器的工作方式选择由寄存器TMOD控制,方式选择通过M0和M1控制,方式1为16位定时器/计数器,不会自动重装载,需要手动重装。
工作方式选择表:
源代码:
#include "reg52.h"
static int value = 0x01;
void Timer0_Init()
{
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;
EA=1;
TR0=1;
}
void main()
{
Timer0_Init();
P1 = value;
while(1)
{
}
}
void Timer0() interrupt 1
{
static int i = 0;
static int j = 0;
static int flag = 1;
j += 1;
if(j==5)
{
if(i>=0 && i < 7 && flag ==1)
{
i++;
value = value<<1;
}
else if(i==7)
{
flag = 0;
}
if(i <= 7 && i>0 && flag == 0)
{
i--;
value = value>>1;
}
else if(i==0)
{
i++;
value = value<<1;
flag = 1;
}
P1 = value;
j=0;
TH0=0X3C;
TL0=0XB0;
}
}
硬件仿真图:
运行效果演示:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)