老古开发网首页
导航:老古开发网首页文章索引文章分类单片机→[MCS-51单片机定时系统]
| -文章搜索 - 最新文章 - |

MCS-51单片机定时系统

发布时间:2006年7月2日 点击次数:2524
来源:   作者:
 

MCS-51单片机定时系统

定时/计数器和中断源的多少直接决定单片机的性能。MCS-51单片机内部有两个可编程的16位定时/计数器和5个中断源,具有较强的实时处理能力和对外部应急事件的处理能力。要充分发挥单片机的功能,必须充分利用定时和中断。
定时器/计数器
一、定时和延时的区别
在单片机程序清单中,经常看到延时子程序和定时(中断)子程序。它们都能使单片机间隔一段时间后再做另一件事。例如,控制两组灯的交替闪亮。以1999年第38期九版图13为例,下面分别是用延时和定时方法的源程序。
程序1:
ORG 0000H
AJMP MAIN
ORG 50H
MAIN:MOV P1,#0AAH;第一组灯亮
ACALL DELAY ;调延时子程序
MOV P1,#55H ;第二组灯亮
ACALL DELAY ;调延时子程序
AJMP MAIN ;循环
DELAY:MOV R0,#08H ;延时子程序,当fc=6MHz时,约延时1秒
L1:MOV R1,#0FFH ;
L2:MOV R2,#0FFH;
L3:DJNZ R2,L3
DJNZ R1,L2
DJNZ R0,L1
RET
END
程序2:
ORG 0000H
AJMP MAIN
ORG 000BH;定时器T0入口地址
AJMP WT0;转T0中断服务子程序
ORG 50H
MAIN:MOV 21H,#00H;把定时计数单元清零
MOV TL0,#6;装入定时初值
MOV TH0,#6;装入重置定时初值
MOV TMOD,#02H;设T0为工作方式2
SETB EA;允许CPU中断
SETB ETO;允许TO中断
SETB TRO;允许TO计数
MOV P1,#55H;
CLR 00H
M:P1,#55H;CPU去执行其他任务
JNB 00H,M;定时未到1秒,灯的状态不变
CPL P1;定时到1秒,灯的状态翻转
CLR 00H;清零1秒定时标志
AJMP M;循环
WTO:PUSH ACC;定时中断服务子程序
PUSH PSW;
INC 21H
MOV A,21H
CJNE A,#200,TORETI
MOV 21H,#0
INC 22H
MOV A,22H
CJNE A,#10,TORETI
MOV 22H,#0
SETB 00H
TORETI:POP PSW
POP ACC
RETI
END
程序1中,点亮一组灯后,调用延时子程序,延时子程序结束后再点亮另一组灯,循环进行,单片机除能交替点亮两组灯以外,全部时间都在运行延时子程序,别的什么事件都不能做了。程序2中,单片机绝大部分时间都在做其它事,只在定时到1秒钟时改变灯的工作状态,充分发挥了单片机的功能。因此,在实际应用中,“延时”只适用于特定的场合,而“定时”是灵活多变的。
二、定时器的结构

 初学者不必去深入研究单片机的内部硬件电路,只要掌握单片机的使用方法,通过实际编程,充分发挥单片机的特定功能即可。与定时器有关的特殊功能寄存器之间的信号关系示于图1。图中,TLO、THO、TL1、TH1以及TMOD和TCON都是单片机的特殊功能寄存器。TLO和THO组成16位的定时/计数器(T0),TL1和TH1组成16位的定时/计数器(T1),TMOD是T0和T1的工作方式控制寄存器,TCON是T0和T1的运行状态控制寄存器,这些寄存器在程序2中已多次出现。在实际应用时,应首先根据需要对这些寄存器进行初始化,即设置T0和T1的工作方式并对T0和T1定时器装入初始值以得到精确的定时时间。T0和T1的工作方式及运行状态是由TMOD和TCON两个特殊功能寄存器控制的,而TMOD和TCON是由用户所编的程序控制的。因此,学好用好定时/计数器必须掌握这些寄存器的功能及使用方法。
三、TMOD
TMOD是定时器的工作方式控制寄存器,其格式见表1。

表1 定时器工作方式寄存器格式

  1  TMOD寄存器结构
D7 D6 D5 D4 D3 D2 D1 D0
GATA M1 M0 GATA M1 M0
←T1方式字段→ ←T0方式字段→

 

TMOD是8位的控制寄存器,低4位控制T0的工作方式,高4位控制T1的工作方式,其中:
M1、M0是工作方式选择位。决定定时器的4种工作方式。
方式0:(M1=0、M0=0):13位定时/计数器
方式1:(M1=0、M0=1):16位定时/计数器
方式2:(M1=1、M0=0):8位定时/计数器(定时常数自动装入)
方式3:(M1=1、M0=1):把T0分为两个8位计数器
C/T:定时/计数方式选择位
C/T=0时为定时工作方式,在此方式下,计数脉冲来自单片机内部,计数脉冲频率为一个机器周期,机器周期的时间是固定的,所以就可根据计数值算出计数时间。如程序2中,TL0初值为6,256-6=250,当计数器计250个脉冲后,计数器溢出。当fc=6MHz时,一个机器周期为2μs,因此T0溢出时,时间为500μs,T0定时时间为500μs。
C/T=1时为计数工作方式,在这种方式下,计数脉冲来自外部引脚(T0对应P34脚,T1对应P35脚)。当T0脚(或T1脚)发生从高电平到低电平的跳变时,计数器加1。
GATE:计数器工作方式控制位,当定时 / 计数器工作在计数方式时,由GATE设定计数器是否受外部控制。当GATE=0时,不受外部控制。当GATE=1时,计数器T0和T1分别受P32和P33脚上电平控制。当P32(或P33)脚为低电平时,计数器T0(或T1)开始计数,P32(或P33)脚为高电平时,T0(或T1)停止计数。


欢迎进入老古论坛进行讨论
[单片机] 相关文章:
单片机外中断使用方面的问题及其解决方法
简介:
单片机外中断使用方面的问题及其解决方法 安阳大学计算机系(河南安阳455000)  赵重明  【 摘要 】 通过分析51单片机外中断I/O入口的内部结构,解释了外中断不能被正常响应的原因,并提出了解决该问题的方法。 【 关键词 】 单片机,外中断,干扰   在长期使用51单片机的过程中,我们发现单片机在工业生产现场等干扰较强的环境工作时,有时确已产生定义为下降沿触发方式的外中断,然而用仪器测量已经送入单片机的INTX引脚时,单片机却不能够正常响应中断。在排除了可能由程序导致的问题之后,再检查CPU的当前状态,发现中断级别......

基于DS1075的8051高速单片机串行通信的时钟新配置
基于AT89C51的激光密码锁的设计
基于8051的变速调温系统
[转载]MCU应用系统从16位升级为32位时的设计考虑
51单片机和FIFO的接口和操作
能让汇编转到C51的初学者有更清晰的认识的一篇文章
AT93C46/56/55串行EEPROM及单片机程序
MCS-51单片机地址指针及其应用
CRC16校验的程序
 
下一个:[单片机]用C51实现单片机的中文输法
简介:
用C51实现单片机的中文输法 说明: 拼音输入法杳询函数: unsigned char code * py_ime(unsigned char input_py_val[]); input_py_val为已输入的拼音码字符串头指针,反回值为中文的起始地址,当为0时,杳询失败 应用举例: { unsigned char input_string[]={"bang"}; unsigned char chines_string[100]; sprintf(chines_......
 

上一个:[单片机]基于单片机89C51的异步串行接口键盘设计

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:16毫秒