新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 51单片机(二):单片机内部定时/计数器和中断系统

51单片机(二):单片机内部定时/计数器和中断系统

作者:时间:2012-07-27来源:网络收藏

三、程序设计

器0 应用测试程序( 控制D1 闪烁)。

#includeAT89X52.h> (1)

#define led P0_0 (2)

unsigned char count=0; (3)

void main(void) (4)

{

TMOD=0X01; (5)

TH0=(65536-50000)/256; (6)

TL0=(65536-50000)%256; (7)

EA=1; (8)

ET0=1; (9)

TR0=1; (10)

PT0=1; (11)

while(1) ; (12)

}

void timer0(void) interrupt 1 (13)

{

TH0=(65536-50000)/256; (14)

TL0=(65536-50000)%256; (15)

count++; (16)

if(count==10) (17)

{

count=0; (18)

led=!led; (19)

}

}

1. 程序详细说明:

(1)头文件包含。程序接下来调用的P0_0 就是该头文件中定义好的一个寄存器地址。在对的寄存器操作之前,应申明其来处,有兴趣的读者可以看看AT89X52.h 文件中的内容。

(2)宏定义led,便于直观理解也便于程序修改,将P0_0 口命名为led,这样在程序中就可以用led代替P0_0 口进行操作。

(3)定义一个8 位的全局变量。

(4)主函数入口。主函数不传递参数也不返回值。

(5)设定器0 工作在模式1,为16 位的

(6)器高8 位赋初值。对256 取整。

(7)定时器低8 位赋初值。对256 取余。

(8)开总

(9)开定时器0

(10)定时器0 启动,开始计数。

(11)设置开定时器0 为优先中断。

(12)死循环,等待中断。

(13)定时器0 中断服务函数入口。

(14)定时器高8 位赋初值。对256 取整。

(15)定时器低8 位赋初值。对256 取余。

(16)对变量count 进行加1 操作。

(17)如果count 增长到10。

(18)count 变量清0。

(19)led 输出取反。

尘埃粒子计数器相关文章:尘埃粒子计数器原理


评论


相关推荐

技术专区

关闭