1.引脚复用
通过原理图可以发现定时器0(T0)和定时器1(T1)是P3.4引脚和P3.5引脚的复用功能,当将这两个引脚配置为定时器功能时,引脚外接的传感器(模块)将不能正常使用,即引脚同一时间只能作为一个功能使用(普通I/O或复用功能)
T0、T1是两个16位定时器/计数器,每经过1个机器周期内部的16位计数寄存器的值加1,当计数器装满时会溢出,在定时模式时单次最大的定时时间是 65535*1.085us 的时间(单位us)
2.定时器配置
定时器0配置需要用到的寄存器(TCON、TMOD、TL0、TH0)
1.定时器/计数器控制寄存器TCON
TCON为定时器/计数器T0、T1的控制寄存器,同时也锁存T0、T1溢出中断源和外部请求中断源等,TCON格式如下
TCON高4位是定时器/计数器T0、T1的溢出标志位和运行控制位,低4位是外部中断0、外部中断1触发方式控制位和外部中断使能位
2.定时器/计数器工作模式寄存器TMOD
3.中断号和中断类型
51单片机有3种中断类型,包括定时器中断、外部中断和串口中断,每个中断都有自己对应的中断号,如下
其中定时器0对应的中断号是 interrupt 1
4.定时器中断编程
定时器0初始话参考代码如下
void Timer0Init()
{
TMOD |= 0x01; //配置定时器0为16位定时器,TH0、TL0全用
TH0 = (65536 - 1000)/256; //1000us定时,即1毫秒溢出产生中断
TL0 = (65536 - 1000)%256; //1000us定时,即1毫秒溢出产生中断
ET0 = 1; //开启定时器0中断
EA = 1; //开启全局中断
TR0 = 1; //定时器0开始计数
}
大致说说 TMOD |= 0x01 配置的几个位
TMOD |= 0x01
0x01 = 0000 0001
定时器1不做配置 TMOD 高4位配置为0
低4位配置定时器0 = 0001
GATE = 0 打开定时器/计数器0
C/T = 0 (置0作为定时器,置1作为计数器)
M1 = 0、M0 = 1 配置16位定时器/计数器,TL0、TH0全用
定时器0初始化后编写定时器0中断服务函数,如下函数名可自定义,需在函数末尾加上中断号
unsigned int count = 0;
void Timer0() interrupt 1
{
//每次产生中断后初始化定时器初值 - 1毫秒产生1次中断
TH0 = (65536 - 1000)/256;
TL0 = (65536 - 1000)%256;
//200毫秒执行一次操作
count++;
if(count == 200)
{
P1 = ~P1;
count = 0;
}
}
完整代码
#inckude void Timer0Init() { TMOD |= 0x01; //配置定时器0为16位定时器,TH0、TL0全用 TH0 = (65536 - 1000)/256; //1000us定时,即1毫秒溢出产生中断 TL0 = (65536 - 1000)%256; //1000us定时,即1毫秒溢出产生中断 ET0 = 1; //开启定时器0中断 EA = 1; //开启全局中断 TR0 = 1; //定时器0开始计数 } void main() { P1 = 0xff; Timer0Init(); while(1); } unsigned int count = 0; void Timer0() interrupt 1 { //每次产生中断后初始化定时器初值 - 1毫秒产生1次中断 TH0 = (65536 - 1000)/256; TL0 = (65536 - 1000)%256; //200毫秒执行一次P1电平反转 count++; if(count == 200) { P1 = ~P1; count = 0; } }
上一篇:51单片机学习笔记4 -- 蜂鸣器控制
下一篇:51单片机学习笔记7 -- 超声波测距
推荐阅读最新更新时间:2024-11-09 10:16
设计资源 培训 开发板 精华推荐
- Flying-RC_F405-SE-v2.0 F405飞控
- 使用 ColdFire MCF5208 拆分总线架构的系统设计,适用于 3.3V、32 位 SDR SDRAM 系统
- 使用 ROHM Semiconductor 的 BD33GA5WEFJ 的参考设计
- Sg1825C 用于软启动快速复位的高速电流模式 PWM 的典型应用
- 使用 ON Semiconductor 的 NCP1216A 的参考设计
- LTC1867LAIGN 微功率、3V、16 位、8 通道、175ksps ADC 的典型应用电路
- DC2603A-B,基于 LTM4650AEY-1 双路 25A 或单路 50A DC/DC 稳压器的演示板,直流准确度为 1%
- HV823,用于手机的 1 灯通用灯驱动器
- DC2043B,基于 LTC3305EFE 铅酸电池平衡器的演示板
- AD1584、2.5V 至 5V 微功率、精密串联模式电压基准的典型连接图
- 为何矢量网络分析仪喊话:多端口测试,是时候放弃开关矩阵了
- 点评《与Atmel SAM D21/R21的相遇、相识、相知(上)》,赢温暖新春礼
- 点评下载资料,参加幸运抽奖,让我们迈开技术交流分享的步伐!!
- 又到一年总结时——EE社区送温暖
- TI|痛点解锁机:你的电源设计痛点,我们懂!解锁、评论赢好礼!
- 下载赢好礼!30张京东卡等你拿!
- 【EEWORLD第二十四届】2011年03月社区明星人物揭晓!
- EE邀你一起来玩NXP RAPID IOT套件
- 免费领取 | 射频年度盛会EDI CON VIP全场通票(北京,3.20~22)
- 有奖直播报名 | 大联大世平集团&Molex 互联方案为下一代汽车科技赋能