目录
题目:
proteus仿真:
代码:
分析题目:
定时器:
工作方式寄存器TMOD设置:
控制寄存器TCON设置:
设定计数初值:
定时器四种工作方式:
实验过程讲解:
配置定时器:设置TMOD寄存器
设定定时器初值:THx和TLx(x=0,1)
设置IE寄存器:
启动定时器:
中断检测:
题目:
使用51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)
proteus仿真:
本实验涉及的Proteus文件以及程序源码均在Github上免费下载
https://github.com/iceacream/C_CODE.git
代码:
#include<reg51.h>
sbit LED1=P1^5;
char i = 100;
char t = 0;
void t1_init()
{
TMOD = 0x01; //定时器T0为方式1
TH0 = 0xd8; //设置定时器初值(1s)
TL0 = 0xef;
LED1 = 1; //LED1熄灭
ET0 = 1; //允许定时器T0中断
TR0 = 1; //启动定时器T0
EA = 1; //开总中断
}
void main()
{
t1_init();
while(1);
}
void timer0() interrupt 1 //T0中断程序
{
TH0 = 0xd8;
TL0 = 0xef;
i--;
if(i<=0)
{
if(t==3) //3s
{
TR0 = 0; //关闭定时器T0
LED1 = ~LED1; //LED灯状态取反
t=0;
}
i = 100;
t++;
}
TR0 = 1; //重新启动定时器T0
}
本实验涉及的Proteus文件以及程序源码均在Github上免费下载
https://github.com/iceacream/C_CODE.git
分析题目:
实验需要通过定时器配合中断,实现LED每隔3秒点亮一次,只需简单配置定时器就能达到实验效果。
定时器:
- AT89S51单片机内有两个可编程的定时器/计数器T1、T0。
- T0由特殊功能寄存器TH0、TL0构成,T1由特殊功能寄存器TH1、TL1构成。
- T0、T1都具有定时器、计数器两种工作模式。
- 定时器模式是对单片机的系统时钟信号经片内12分频后的内部脉冲信号计数。
- 计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上的外部脉冲进行计数。
- 两个计时器/计数器属于增1计数器,即每对一个脉冲计数则计数器增1。
- T0、T1具有四种工作模式:方式0、方式1、方式2和方式3。
2个16位计数器T0 (TH0、TL0)和T1 (TH1、TL1)——加1计数器
2个8位控制寄存器TCON和TMOD——管理计数器的运行
2个外部引脚T0(P3.4)和T1(P3.5)——接入外部脉冲
工作方式寄存器TMOD设置:
控制寄存器TCON设置:
例:TR0 = 1; T0计数 TR0 = 0 ; 停止T0计数
设定计数初值:
计数器溢出空间 = 计数器最大空间 - 计数初值
定时时间t = (计数器最大空间 - 计数初值)×机器周期=(-a)×12/fosc (us)
定时器四种工作方式:
参考:http://t.csdn.cn/c44ol
实验过程讲解:
配置定时器:设置TMOD寄存器
本实验选择定时器T0工作在方式1,应使TMOD寄存器的M1、M0 = 01;应设置C/ = 0为定时器工作模式;对T0的运行仅由TR0来控制,应使相应的GATE位为0。定时器T1不使用,各相关位均设为0。所以TMOD寄存器应初始化为0x01。
设定定时器初值:THx和TLx(x=0,1)
设定时时间为1秒,设置10毫秒(即10000微秒)循环100次,设定时器 T0的计数初值为X,假设晶体振荡器的频率为11.0592 MHz 则定时时间为:
定时时间 = (-X)*12/晶体振荡器频率
10000 = (-X)*12/11.0592
X 55535(0xd8ef)
转换成16 进制数后为0xd8ef 其中0xd8装入TH0 0xef装入TH0
设置IE寄存器:
本题由于采用定时器T0中断,因此需将IE寄存器中的EA、ET0位置“1”。
启动定时器:
启动和停止定时器T0:将定时器控制寄存器TCON中的TR0=1,则启动定时器T0。TR0=0,停止计时器T0计时。文章来源:https://www.toymoban.com/news/detail-419346.html
中断检测:
重装定时器初值。文章来源地址https://www.toymoban.com/news/detail-419346.html
到了这里,关于51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!