当前位置:文档之家› 编程训练二:使用T0定时器中断服务程序实现流水灯控制

编程训练二:使用T0定时器中断服务程序实现流水灯控制

#include //加入头文件
#include

#define uchar unsigned char//宏定义
#define ulong unsigned long

ulong delay_flag=0;//用于较精确延时的变量

void init_time0();//定时器0初始化函数

void main()//主函数定义
{
uchar a=0xfe;//定义一个给P0口赋值的变量a,并对其赋初值
init_time0();//调用初始化函数
while(1)//永远循环
{
P0=a;//将a值赋给P0
delay_flag=20000;//延时2S
while(delay_flag);
a=_crol_(a,1);//将a循环左移1位,实现彩灯流水
}
}

void time0_pwm() interrupt 1//定时器0中断服务程序
{
if(delay_flag)
delay_flag--;
}
void init_time0()//定时器初始化函数
{
TMOD=0x02; //采用定时器模式2,8位精确定时
TL0=156; //定时器赋初值;100US中断一次,这里的晶振是11.0592M;若晶振为12M,则选用156;
TH0=156;
EA=1; //开总中断
ET0=1; //开定时器中断
TR0=1 ;//定时器开始运行
}

相关主题
文本预览
相关文档 最新文档