单片机交流
登录
直播中
感谢相遇
9年用户
929经验值
擅长:嵌入式技术 制造/封装 控制/MCU
私信
关注
[问答]
怎样通过定时器0中断去控制D1指示灯间隔闪烁?
开启该帖子的消息推送
中断
定时器
51
单片机
定时器的原理是什么?
怎样对定时器进行配置?
怎样通过定时器0中断去控制D1指示灯间隔闪烁?
回帖
(1)
崔映芬
2021-7-16 15:48:17
定时器中断实验
定时器中断实验
一:51单片机定时器原理
(1)51单片机定时/计数器结构
T0,T1引脚对应单片机的P34,P35管脚
51单片机定时/计数器工作由两个特殊功能寄存器控制。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0,T1的启动和停止及设置溢出标志。
TMOD:工作方式寄存器,用于设置工作方式,低四位用于T0,高四位用于T1
GATE是门控位,GATE=0时控制定时器的启动是否受外部中断源信号影响,只需用软件使TCON中的TR0或者TR1为1,即可启动定时器/计数器工作。GATE=1时,使用软件使TR0或者tr1为1,同时外部中断管脚INT0/1=1时才能启动工作。
C/T:定时/计数模式选择位。C/T=0为定时模式;C/T=1为计数模式
M1M0:工作方式设置位。定时/计数器有四种工作方式。
TCON:低四位控制外部中断,高四位控制定时器/计数器的启动和中断申请。
TF1(TCON.7):T1溢出中断请求标志位。T1溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。TF1也可以用软件置1或者清0,同硬件置1或者清0效果一样。
TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或者置0,所有软件可控制定时/计数器的启动与停止。
TF0(TCON.5):T0溢出中断请求标志位,其他与TF1相同。
TR0(TCON.4):T0运行控制位,其功能与TR1相似。
(2)定时/计数器的工作方式
方式0:
方式0为13位计数,由TL0低五位(高三位不用)和TH0的8位组成。TL0的低五位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。
计数初值和计数个数的关系为X=2^13-N
方式1:
方式1的计数位数是16位,由TL0作为低8位,TH0作为高8位,组成16位加1计数器。
方式2:
方式2为自动重装初值的8位计数方式。工作方式2适合用于较精确的脉冲信号发生器。
方式3不做赘述,用的不多。
方式1通常用于定时器,串口通信通常使用方式2
二:定时器配置
1:对TMOD赋值,以确定T0,T1工作方式,如果使用定时器0即对T0配置,如果使用定时器0即对T0配置,如果使用定时器T1即对T1配置。
2:根据所要时间计算初值,并将其写入TH0,TL0或者TH1,TL1
3:如果使用中断,则对EA赋值,开放定时器中断
4:使用TR0或者TR1置位,启动定时器/计数器计时
三:通过定时器0中断控制D1指示灯间隔闪烁
//定时器中断,通过定时器0中断控制D1指示灯间隔1秒闪烁#include “reg52.h”typedef unsigned char u8;typedef unsigned int u16;***it led=P2^0;//定义P2^0接口是ledvoid Timer0Init()//定时器0初始化函数{ TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动 TH0=0XFC;//给定时器赋值,定时1ms TL0=0X18; ET0=1;//打开定时器0中断允许 EA=1;//打开总中断 TR0=1;//打开定时器}void main(){ Timer0Init();//定时器0初始化 while(1);}void Timer0() interrupt 1{ static u16 i;//定义全局变量i,用来累计定时1ms的次数,当i=1000时,恰好达到1s TH0=0XFC;//给定时器赋初值,定时1ms TL0=0X18; i++; if(i==1000) { i=0;//当时间达到1s时,状态清0,led状态翻转 led=~led; }}
定时器中断实验
定时器中断实验
一:51单片机定时器原理
(1)51单片机定时/计数器结构
T0,T1引脚对应单片机的P34,P35管脚
51单片机定时/计数器工作由两个特殊功能寄存器控制。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0,T1的启动和停止及设置溢出标志。
TMOD:工作方式寄存器,用于设置工作方式,低四位用于T0,高四位用于T1
GATE是门控位,GATE=0时控制定时器的启动是否受外部中断源信号影响,只需用软件使TCON中的TR0或者TR1为1,即可启动定时器/计数器工作。GATE=1时,使用软件使TR0或者tr1为1,同时外部中断管脚INT0/1=1时才能启动工作。
C/T:定时/计数模式选择位。C/T=0为定时模式;C/T=1为计数模式
M1M0:工作方式设置位。定时/计数器有四种工作方式。
TCON:低四位控制外部中断,高四位控制定时器/计数器的启动和中断申请。
TF1(TCON.7):T1溢出中断请求标志位。T1溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。TF1也可以用软件置1或者清0,同硬件置1或者清0效果一样。
TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或者置0,所有软件可控制定时/计数器的启动与停止。
TF0(TCON.5):T0溢出中断请求标志位,其他与TF1相同。
TR0(TCON.4):T0运行控制位,其功能与TR1相似。
(2)定时/计数器的工作方式
方式0:
方式0为13位计数,由TL0低五位(高三位不用)和TH0的8位组成。TL0的低五位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。
计数初值和计数个数的关系为X=2^13-N
方式1:
方式1的计数位数是16位,由TL0作为低8位,TH0作为高8位,组成16位加1计数器。
方式2:
方式2为自动重装初值的8位计数方式。工作方式2适合用于较精确的脉冲信号发生器。
方式3不做赘述,用的不多。
方式1通常用于定时器,串口通信通常使用方式2
二:定时器配置
1:对TMOD赋值,以确定T0,T1工作方式,如果使用定时器0即对T0配置,如果使用定时器0即对T0配置,如果使用定时器T1即对T1配置。
2:根据所要时间计算初值,并将其写入TH0,TL0或者TH1,TL1
3:如果使用中断,则对EA赋值,开放定时器中断
4:使用TR0或者TR1置位,启动定时器/计数器计时
三:通过定时器0中断控制D1指示灯间隔闪烁
//定时器中断,通过定时器0中断控制D1指示灯间隔1秒闪烁#include “reg52.h”typedef unsigned char u8;typedef unsigned int u16;***it led=P2^0;//定义P2^0接口是ledvoid Timer0Init()//定时器0初始化函数{ TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动 TH0=0XFC;//给定时器赋值,定时1ms TL0=0X18; ET0=1;//打开定时器0中断允许 EA=1;//打开总中断 TR0=1;//打开定时器}void main(){ Timer0Init();//定时器0初始化 while(1);}void Timer0() interrupt 1{ static u16 i;//定义全局变量i,用来累计定时1ms的次数,当i=1000时,恰好达到1s TH0=0XFC;//给定时器赋初值,定时1ms TL0=0X18; i++; if(i==1000) { i=0;//当时间达到1s时,状态清0,led状态翻转 led=~led; }}
举报
更多回帖
rotate(-90deg);
回复
相关问答
中断
定时器
怎样
使用
定时器
0
中断去
控制
LED的亮灭呢
2022-01-21
1004
STM32按键长按和短按
控制
指示灯
闪烁
2022-10-12
8220
怎样
通过
编写TIM7
定时中断去
控制
LED
灯
的亮灭呢
2021-10-25
1828
51单片机的
定时器
闪烁
状态很明显
2019-03-04
1125
不到50行代码的51单片机的
定时器
0
溢出速度怎么解决?
2023-10-26
296
电子
定时器
如何
控制
LED
指示灯
?
2021-12-23
1669
怎样
去修改
定时器
的
中断
时间?
2021-07-16
2007
怎样
通过
STM32 TIM2的
定时
功能去
控制
LED
灯
按照
1
s的时间
间隔
来
闪烁
呢
2021-11-23
2520
怎样
通过
TIM2的
定时
功能使得LED
灯
按照
1
s的时间
间隔
来
闪烁
呢
2021-12-21
1738
定时器
中断
如何
控制
led
灯
闪烁
?
2022-02-15
3445
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分