用定时器进行计数的一个简单例子
时间:11-15
来源:互联网
点击:
/*
注:该程序主要是如何运用定时器进行计数,体现模块化的子函数,是一个比较浅显的程序
*/
#includereg52.h> //头文件
#define uchar unsigned char //宏定义
#define uint unsigned int
uchar count; //定义全局变量
void display_led() //led显示子函数
{
if(count==20) //每隔1S发生变化(晶振为:12MHZ)
{
count=0; //计数清零,以便下次计数
P2=~P2; //P2的值取反
P2=P21; //P2的值左移
P2=~P2;
if(P2==0xff) //如果最后一个LED亮后,
P2=0xfe; //则第一个LED亮
}
}
void init() //初始化子函数
{
EA=1; //打开总中断
ET0=1; //打开定时器中断
TR0=1; //启动定时器
TMOD=0x01; //T0工作方式1,16位计数
TH0=(65536-50000)/256;//设置定时器的初始值
TL0=(65536-50000)%256;
P2=0xfe; //给P2口赋初始值
while(1)
{
display_led(); //调用LED显示子函数
}
}
void main() //主函数
{
init(); //调用初始化子函数
}
void delay() interrupt 1 //定时中断子函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++; //计数变量自加1
}
- VxWorks下的多重定时器设计(02-16)
- μC/OS-II软件定时器管理算法分析及改进(11-15)
- μC/OSII中软件定时器的优缺点与改进(03-21)
- 基于ARM7 PWM定时器的图像传感器时序信号设计(08-28)
- VxWorks共享看门狗定时机制的设计与实现(10-05)
- 学习单片机不可欠缺的八大步骤(12-01)