51单片机-定时器

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处

http://blog.youkuaiyun.com/woshixingaaa/archive/2010/09/19/5893970.aspx

定时/计数器的结构和工作原理

定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。80C51片机定时/计数器的工作是由两个特殊功能寄存器控制的。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能,低四位用于T0,高四位用于T1。TCON是控制寄存器,控制T0和T1的启动和停止及溢出标志,高四位与定时器有关,低四位与外部中断有关。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。

image

image

image

中断允许控制。CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器

IE控制的。

image

#include <reg52.h> unsigned int t; sbit p3_4 = P3^4; void init_timer(){ TH0 = (65535 - 50000) / 256; //求取高8位 TL0 = (65535 - 50000) % 256; //求取低8位 EA = 1; //CPU总中断允许位 ET0 = 1; //定时/计数器中断允许位 IT0 = 1; //下降沿有效 TR0 = 1; //定时器启动 TMOD = 0x01; //使用定时器T0,16位计数器 p3_4 = 1; } void main(){ init_timer(); t = 0; while(1){ if(t == 20){ p3_4 = ~p3_4; //响一秒,停一秒 t = 0; } } } void bell() interrupt 1{ TH0 = (65535 - 50000) / 256; //从15535开始计时,共50000us,50ms TL0 = (65535 - 50000) % 256; //20*50 = 1000ms = 1s 即1s响停一次 t++; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值