内容正文:
任务4-1控制LED发光二极管隔1秒闪烁
1.掌握定时计数器编程控制方法
2.掌握定时计数器的查询方式编程要点
3.掌握定时计数器的中断方式编程要点
一.任务目标
二.任务要求
任务描述:通过P1.x口线控制外接的LED发光二极管亮1秒、灭1秒,循环不止。
三. 相关知识
(一) 16位加法计数器
定时计数器的核心是16位加法计数器,单片机有两个定时计数器T0和T1,它们的计数值分别装在特殊功能寄存器TH1、TL1及TH0、TL0里。TH0、TL0是定时计数器T0加法计数器的高8位和低8位,TH1、TL1是定时计数器T1加法计数器的高8位和低8位。
作计数器用时,加法计数器对芯片引脚T0(P3.4)或T1(P3.5)上的输入脉冲计数。每输入一个脉冲,加法计数器中值增加1。加法计数溢出时可向CPU发出中断请求信号。
作定时器用时,加法计数器对内部机器周期脉冲T计数。由于机器周期是定值,所以对T的计数就是定时,如T=1s,计数值100,相当于定时100s。
加法计数器的初值可以由程序设定,设置的初值不同,计数值或定时时间就不同。
(二)定时计数器方式控制寄存器TMOD
(1)D7位(GATE)——T1的门控位:
当GATE=0时,只要控制位TR1置1,就可启动定时器T1的工作;
当GATE=1时,除了需要控制位TR1置1外,还要使INT1引脚为高电平,才能启动定时器T1的工作。
(2)D6位(C/T)——T1的功能选择位:
当C/T=0时,T1为定时器方式;
当C/T=1时,T1为计数器方式。
(3)D5、D4位(M1、M0)——T1的工作方式选择位:
由这两位的四种组合定义的T1的工作方式见表。
(二)定时计数器方式控制寄存器TMOD
(4)D3位(GATE)——T0的门控位:
当GATE=0时,只要控制位TR0置1,就可启动定时器T0的工作;
当GATE=1时,除了需要控制位TR0置1外,还要使INT0 引脚为高电平,才能启动定时器T0的工作。
(5)D2位(C/T)——T0的功能选择位:
当C/T=0时,T0为定时器方式;
当C/T=1时,T0为计数器方式。
(6)D1、D0位(M1、M0)——T0的工作方式选择位:
由这两位的四种组合定义的T0的工作方式见。
(三)定时计数器控制寄存器TCON
(1)TCON.7位(TF1)——定时器T1的溢出标志位:
当定时器T1计满溢出时,由硬件使TF1置1,并且向CPU发出中断请求;进入中断服务子程序后,由硬件自动清0;若程序中未允许中断响应(查询方式),则由指令清0。
(2)TCON.6位(TR1)——定时器T1运行控制位:
当TR1=1时,启动定时器T1工作,当GATE=1时,除了需要控制位TR1置1外,还要使INT1 引脚为高电平,才能启动定时器T1的工作;
当TR1=0时,关闭定时器T1。
(3)TCON.5位(TF0)——定时器T0的溢出标志位:
功能及操作情况同TF1。
(4)TCON.4位(TR0)——定时器T0运行控制位:
功能及操作情况同TR1。
(三)定时计数器方式控制寄存器TMOD
(5)TCON.3位(IE1)——外部中断1(INT1)的请求标志位:
当IE1=1时,外部中断1向CPU发出中断请求。
(6)TCON.2位(IT1)——外部中断1(INT1)触发方式选择位:
当IT1=1时,选择下降沿作为中断请求信号;
当IT1=0时,则选择低电平作为中断请求信号。
(7)TCON.1位(IE0)——外部中断0(INT0)的请求标志位:
当IE1=0时,外部中断0向CPU发出中断请求。
(8)TCON.0位(IT0)——外部中断0(INT0)触发方式选择位:
当IT0=1时,选择下降沿作为中断请求信号;
当IT0=0时,则选择低电平作为中断请求信号。
(四)定时计数器方式0(M1M0=00)
在方式0工作条件下,T0(或T1)是13位计数器。计数器由TH0(或TH1)的全部8位和TL0(或TL1)的低5位构成,TL0(或TL1)的高3位没有使用。可用程序将0~8191(2131)中的某一数送入TH0(或TH1)、TL0(或TL1)作为初值。TH0(或TH1)、TL0(或TL1)从初值开始加法计数,直至溢出。所以初值不同,定时时间或计数值不同.
(五)定时计数器方式1(M1M0=01)
当M1M0=01时,定时计数器设定为工作方式1,构成16位计数器。此时THx, TLx都是8位加法计数器。其他与工作方式0相同。
在方式1时,计数器的计数值由下式确定:
N=216x=65536x
计数范围为1~65536。
在定时计数器的使用过程中,有一个概念非常重要,就是定时器的定时时间。所谓定时时间就是指定时计数器从开始工作到计满溢出所花的时间。它由下式确定:
t=NT=(65536x)T
式中,T为机器周期;x为计数初值。
这个式子非常重要,是我们使用的定时计数器的出发点,当单片机晶振确定后,机器周期T就一定了,这个时候的定时时间就只由计数初值x决定,在定时计数器开始工作之前,我们向TH1, TL1(当然也可以是TH0和TL0)装入不同的初值,就会得到不同的定时时间了。
(三)单片机的程序和数据的存放
1. 程序存储器
只读程序存储器(ROM)
EA的作用
2.数据存储器
(1)内部数据存储器低128单元
四、任务分析
1、硬件电路
2、软件分析—查询方式
#include <reg51.h>
sbit P1_1 = P1^1;
void delay_1s();
void main()
{
while(1)
{
P1_1=0;
delay_1s();
P1_1=1;
delay_1s();
}
}
void delay_1s()
{
void delay_1s()
{
unsigned int R1;
for(R1=10;R1>0;R1--)
{
TMOD=0x01;
TH0=0x3C;
TL0=0xB0;
TR0=1;
while(!TF0);
TF0=0;
}
}
中断方式
#include <reg51.h>
sbit P1_1 = P1^1;
sbit TCON_4=TCON^4;
sbit TCON_5=TCON^5;
unsigned int R1;
void main()
{
P1_1=0;
R1=10;
TMOD=0x01;
TH0=0x3C;
TL0=0xB0;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void ISR_Timer0() interrupt 1
{
R1--;
if(R1==0)
{
P1_1=!P1_1;
R1=10;
}
TH0=0x3C;
TL0=0xB0;
TR0=1;
}
五.任务实施
1、在Proteus软件中按图搭接好电路;
2、在Keil软件中编辑程序,进行编译,得到HEX格式文件;
3、将所得的HEX格式文件在Proteus中加载到单片机芯片中;
4、在Proteus中仿真,观察仿真结果;
5、Proteus中结果正常后,用实际硬件搭接并调试电路,通过编程器将HEX格式文件下载到AT89C51中,通电验证实验结果
六、任务总结
任务回顾
课后作业
思考题
标志
Thank you!
$$