STC89C52单片机定时器2的使用

合集下载

52单片机定时器2作为串行口波特率发生器使用(C语言程序)

52单片机定时器2作为串行口波特率发生器使用(C语言程序)

52
53 i=0;
54 while(str[i]!='\0')
55 {
56 TI=0;
57 SBUF=str[i];
58 while(!TI);
59 TI=0;
60 i++;
61 }
62 while(1);
本文是关于52单片机定时器计数器2做为串行口波特率发生器使用的例子,类似于定时器1作为波特率发生器工作在模式1下,但是不同的是:定时器2作为波特率发生器是16位自动重装的,位数比定时器1作为波特率发生器要高(定时器1作为串口波特率发生器是8位自动重装的),所以可以支持更高的传输速度,性能也比定时器1要好,老鲁推荐使用。以下程序在Keil 2和Keil 3下调时通过,下载在本校的实验板上达到预期效果。AT89C52及其以上、AT89S52及其以上、STC89C52及其以上测试正常运行。
view sourceprint?01 /*
02 程序功能:52系列单片机定时器计数器2作为串行口波特率发生器使用
03 程序设计:燕山大学 鲁信琼
04
05 晶振选择:24MHz, 如果晶振不匹配,请修改延时函数参数;P2^6口接数码管段选控制位; P2^7口接数码管位选控制位;
63 }
25 void delay_ms(uint xms)
26 {
27 uint x,y;
28 for(x=xms; x>0; x--)
29 for(y=248; y>0; y--);
30 }
31
32 // 主函数初始化,24MHz晶振 28800bps波特率,有误差,建议大家使用11.0592MHz或者22.1184MHz

STC89C52单片机定时器2的使用

STC89C52单片机定时器2的使用

STC89C52单片机定时器2的使用实现定时和计数的方法一般有:软件定时、专用电路和可编程定时器/计数器三种方法。

软件定时:执行一个循环程序进行时间延迟。

定时准确,不需要外加硬件电路,但会增加CPU 开销。

专用硬件电路定时:可以实现请精确的定时和计数,但参数调节不方波。

可编程定时器/计数器:不占用CPU 时间,能与CPU 并行工作,实现精确的定时和计数,又可以通过变成设置其工作方式和其他参数,使用方便。

以下说明仅试用宏晶的STC89C52!!定时器2:T2MOD,T2CON,TH2,TL2,RC2H,RC2L.T2MOD:0C9H(不可位寻址)000000T2OEDCENT2OE:定时器输出使能位DECN:向上/向下计数使能位。

定时器2 可配制成向上/向下计数器。

0:向上计数(模式状态) 1:向下计数(尽量不使用)T2CON:0XC8H(可位寻址)TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL2TF2:7 上/下溢出标志位,定时器2 溢出时置位,必须有用软件清零!当RCLK 或TCLK=1 时,TF2 将不会置位。

EXF2:6 定时器2 外部标志,当EXEN2=1 且T2EX 的负跳变产生捕获或重装时,EXF2 置位。

定时器2 中断使能时,EXF2=1 将使CPU 从中断向量处执行定时器2 中断子程序。

EXF2 位必须用软件清零。

在递增/递减计数器模式(DCEN=1)中,EXF2 位不会引起中断。

RCLK:5 接收时钟标志。

RCLK 置位时,定时器2 的溢出脉冲作为串口模式1 和模式3 的接收时钟。

RCLK=0 时,将定时器1 的溢出脉冲作为串口模式1 和模式3 的接收时钟。

TCLK:4 发送时钟标志位。

TCLK 置位时,定时器2 的溢出脉冲作为串口模式1 和模式3 的发送时钟。

TCLK=0 时,将定时器1 的溢出脉冲作为串口模式1 和模式3 发送时钟。

EXEN2:3 定时器2 外部使能标志。

STC89C52单片机用户手册

STC89C52单片机用户手册

STC89C52单片机用户手册一、概述STC89C52 单片机是一款高性能、低功耗的 8 位微控制器,具有丰富的片内资源和强大的功能,广泛应用于各种电子设备和控制系统中。

二、主要特点1、增强型 8051 内核,指令代码完全兼容传统 8051 单片机。

2、工作电压范围宽,可在 38V 55V 之间正常工作。

3、片内集成 8K 字节的 Flash 程序存储器,可反复擦写 1000 次以上。

4、 512 字节的片内数据存储器(RAM)。

5、拥有 32 个可编程的 I/O 口,方便连接外部设备。

6、 3 个 16 位定时器/计数器,可用于定时、计数和脉冲宽度测量等功能。

7、 8 个中断源,包括 2 个外部中断、3 个定时器中断和 2 个串行口中断,具有两级中断优先级。

8、全双工串行通信接口(UART),可方便地与其他设备进行通信。

三、引脚功能1、 VCC:电源正极,接+5V 电源。

2、 GND:电源地。

3、 P0 口:8 位漏极开路双向 I/O 口,作为地址/数据总线分时复用口。

4、 P1 口:8 位准双向 I/O 口,具有内部上拉电阻。

5、 P2 口:8 位准双向 I/O 口,作为高 8 位地址总线。

6、 P3 口:8 位准双向 I/O 口,具有第二功能。

例如,P30 为串行输入口(RXD),P31 为串行输出口(TXD)等。

四、存储结构1、程序存储器STC89C52 单片机的程序存储器空间为 8K 字节,地址范围为0000H 1FFFH。

用于存放用户编写的程序代码。

2、数据存储器数据存储器分为内部数据存储器和外部数据存储器。

内部数据存储器包括低 128 字节的 RAM(地址范围为 00H 7FH)和高 128 字节的特殊功能寄存器(SFR,地址范围为 80H FFH)。

外部数据存储器最大可扩展至 64K 字节。

五、时钟与复位1、时钟电路STC89C52 单片机可以使用内部时钟和外部时钟。

内部时钟通过在XTAL1 和 XTAL2 引脚之间连接晶振和电容来产生时钟信号。

STC89C52RC单片机手册资料

STC89C52RC单片机手册资料

STC89C52单片机用户手册[键入作者姓名][选取日期]STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2.工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8.具有EEPROM功能9.具有看门狗功能10.共3个16位定时器/计数器。

即定时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口(UART),还可用定时器软件实现多个UART13.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)14.PDIP封装STC89C52RC单片机的工作模式掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序●空闲模式:典型功耗2mA●正常工作模式:典型功耗4Ma~7mA●掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52RC引脚图STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O 口。

STC89C52中文手册

STC89C52中文手册

海纳电子资讯网:www.fpga-arm.com 为您提供各种IC中文资料 STC89C51RC / RD+ 系列单片机中文指南 ---高可靠 ---超低价 ---低功耗 ---无法解密STC89C51RC,STC89LE51RCSTC89C52RC,STC89LE52RCSTC89C53RC,STC89LE53RCSTC89C54RD+,STC89LE54RD+STC89C58RD+,STC89LE58RD+STC89C516RD+,STC89LE516RD+附录A: 为什么少数用户的普通8051程序烧录后,不能运行附录B: STC89LE516AD,STC89LE516X2附录C: STC89C51RC / RD+ 系列单片机 ISP (DIY)附录D: ISP Demo(演示版)软件(*.hex)及通信协议附录E: 如何实现运行中自定义下载,无仿真器时方便调试附录F: Keil C51高级语言编程的软件如何减少代码长度国内技术支援:宏晶科技(深圳) www.MCU-Memory.com support@dsp-memory.comUpdate date: 2005-2-16 型 号 最高时钟 频 率HzFlash程序存储器RAM数据存储器降低EMI看门狗双倍速P4口ISPIAPEEPROM数据指针串口UART中断源优先级定时器A/D向下兼容Winbond向下兼容Philips向下兼容Atmel 5V 3VSTC89C51 RC0-80M4K512√√√√√√1K+ 21ch+843W78E51P89C51STC89C52 RC0-80M8K512√√√√√√1K+ 21ch+843W78E52P89C52STC89C53 RC0-80M15K512√√√√√√ 21ch+843W78E54P89C54AT89C55STC89C54 RD+0-80M16K1280√√√√√√8K+ 21ch+843W78E54P89C54AT89C55STC89C58 RD+0-80M32K1280√√√√√√8K+ 21ch+843W78E58P89C58AT89C51RCSTC89C516 RD+0-80M63K1280√√√√√√ 21ch+843W78E516P89C51RD2AT89C51RD2STC89LE51 RC0-80M4K512√√√√√√1K+ 21ch+843W78LE51AT89LV51STC89LE52 RC0-80M8K512√√√√√√1K+ 21ch+843W78LE52AT89LV52STC89LE53 RC0-80M14K512√√√√√√ 21ch+843W78LE54AT89LV55STC89LE54 RD+0-80M16K1280√√√√√√8K+ 21ch+843W78LE54AT89LV55STC89LE58 RD+0-80M32K1280√√√√√√8K+ 21ch+843W78LE58AT89LV51RCSTC89LE516RD+0-80M63K1280√√√√√√ 21ch+843W78LE516P89LV51RD2AT89LV51RD2STC89LE516AD0-90M64K512√√√ 21ch+643√需要A/D转换时才选用,8路8位精度在P1.0 - P1.7口,17 个机器周期一次STC89LE516X20-90M64K512√√√√ 21ch+643√ 本应用技术手册是针对有一定8051系列(MCS-51)单片机编程基础的用户编写的。

STC89C52单片机简介

STC89C52单片机简介

STC89C52单片机介绍:单片机是指一个集成在一块芯片上的完整计算机系统。

尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域。

单片机由芯片内仅有CPU的专用处理器发展而来。

最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。

INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。

早期的单片机都是8位或4位的。

其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。

此后在8031上发展出了MCS51系列单片机系统。

基于这一系统的单片机系统直到现在还在广泛使用。

随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。

90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。

随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。

而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。

目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。

当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。

而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。

单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。

STC89C52RC单片机用户手册

STC89C52RC单片机用户手册

STC89C52RC单片机介绍之阳早格格创做STC89C52RC单片机是宏晶科技推出的新一代下速/矮功耗/超强抗搞扰的单片机,指令代码真足兼容保守8051单片机,12时钟/呆板周期战6时钟/呆板周期不妨任性采用.主要个性如下:1.巩固型8051单片机,6时钟/呆板周期战12时钟/呆板周期不妨任性采用,指令代码真足兼容保守8051.2.处事电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)3.处事频次范畴:0~40MHz,相称于一般8051的0~80MHz,本质处事频次可达48MHz4.用户应用步调空间为8K字节5.片上集成512字节RAM6.通用I/O心(32个),复位后为:P1/P2/P3/P4是准单背心/强上推,P0心是漏极开路输出,动做总线扩展用时,不必加上推电阻,动做I/O心用时,需加上推电阻.7.ISP(正在系统可编程)/IAP(正在应用可编程),无需博用编程器,无需博用仿真器,可通过串心(RxD/P3.0,TxD/P3.1)曲交下载用户步调,数秒即可完毕一片8.具备EEPROM功能9.具备瞅门狗功能10.共3个16位定时器/计数器.即定时器T0、T1、T211.中部中断4路,下落沿中断大概矮电仄触收电路,Power Down模式可由中部中断矮电仄触收中断办法唤醉12.通用同步串止心(UART),还可用定时器硬件真止多个UART13.处事温度范畴:40~+85℃(工业级)/0~75℃(商业级)14.PDIP启拆STC89C52RC单片机的处事模式●掉电模式:典型功耗<0.1μA,可由中部中断唤醉,中断返回后,继承真止本步调●空忙模式:典型功耗2mA●仄常处事模式:典型功耗4Ma~7mA●掉电模式可由中部中断唤醉,适用于火表、气表等电池供电系统及便携设备STC89C52RC引足图STC89C52RC引足功能证明VCC(40引足):电源电压VSS(20引足):交天P0端心(P0.0~P0.7,39~32引足):P0心是一个漏极开路的8位单背I/O心.动做输出端心,每个引足能启动8个TTL背载,对于端心P0写进“1”时,不妨动做下阻抗输进.正在考察中部步调战数据死存器时,P0心也不妨提供矮8位天点战8位数据的复用总线.此时,P0心里里上推电阻灵验.正在Flash ROM编程时,P0端心交支指令字节;而正在校验步调时,则输出指令字节.考证时,央供中交上推电阻.P1端心(P1.0~P1.7,1~8引足):P1心是一个戴里里上推电阻的8位单背I/O心.P1的输出慢冲器可启动(吸支大概者输出电流办法)4个TTL输进.对于端心写进1时,通过里里的上推电阻把端心推到下电位,那是可用做输出心.P1心做输出心使用时,果为有里里上推电阻,那些被中部推矮的引足会输出一个电流().别的,P1.0战P1.1还不妨动做定时器/计数器2的中部技能输进(P1.0/T2)战定时器/计数器2的触收输进(P1.1/T2EX),简曲拜睹下表:正在对于Flash ROM编程战步调校验时,P1交支矮8位天点.引足号功能个性T2(定时器/计数器2中部计数输进),时钟输出T2EX(定时器/计数器2捕获/沉拆触收战目标统造)P2端心(P2.0~P2.7,21~28引足):P2心是一个戴里里上推电阻的8位单背I/O端心.P2的输出慢冲器不妨启动(吸支大概输出电流办法)4个TTL输进.对于端心写进1时,通过里里的上推电阻把端心推到下电仄,那时可用做输出心.P2动做输出心使用时,果为有里里的上推电阻,那些被中部旗号推矮的引足会输出一个电流().正在考察中部步调死存器战16位天点的中部数据死存器(如真止“MOVX @DPTR”指令)时,P2支出下8位天点.正在考察8位天点的中部数据死存器(如真止“MOVX @R1”指令)时,P2心引足上的真质(便是博用寄存器(SFR)区中的P2寄存器的真质),正在所有考察功夫不会改变.正在对于Flash ROM编程战步调校验功夫,P2也交支下位天点战一些统造旗号.P3端心(P3.0~P3.7,10~17引足):P3是一个戴里里上推电阻的8位单背I/O端心.P3的输出慢冲器可启动(吸支大概输出电流办法)4个TTL输进.对于端心写进1时,通过里里的上推电阻把端心推到下电位,那时可用做输出心.P3搞输出心使用时,果为有里里的上推电阻,那些被中部旗号推矮的引足会输进一个电流().正在对于Flash ROM编程大概步调校验时,P3还交支一些统造旗号.P3心除动做普遍I/O心中,另有其余一些复用功能,如下表所示:表XX P3心引足复用功能引足号复用功能RXD(串止输出心)TXD(串止输出心)(中部中断0)(中部中断1)T0(定时器0的中部输进)T1(定时器1的中部输进)(中部数据死存器写选通)(中部数据死存器读选通)RST(9引足):复位输进.当输进连绝二个呆板周期以上下电通常为灵验,用去完毕单片机单片机的复位初初化支配.瞅门狗计时完毕后,RST引足输出96个晶振周期的下电仄.特殊寄存器AUXR(天点8EH)上的DISRTO位不妨使此功能无效.DISRTO默认状态下,复位下电仄灵验.ALE/(30引足):天点锁存统造旗号(ALE)是考察中部步调死存器时,锁存矮8位天点的输出脉冲.正在Flash编程时,此引足()也用做编程输进脉冲.正在普遍情况下,ALE以晶振六分之一的牢固频次输出脉冲,可用去动做中部定时器大概时钟使用.然而,特天强调,正在屡屡考察中部数据死存器时,ALE脉冲将会跳过.如果需要,通过将天点位8EH的SFR的第0位子“1”,ALE支配将无效.那一位子“1”,ALE仅正在真止MOVX大概MOV指令时灵验.可则,ALE将被微小推下.那个ALE使能标记位(天点位8EH的SFR的第0位)的树立对于微统造器处于中部真止模式下无效.(29引足):中部步调死存器选通旗号()是中部步调死存器选通旗号.当AT89C51RC从中部步调死存器真止中部代码时,正在每个呆板周期被激活二次,而考察中部数据死存器时,将不被激活./VPP(31引足):考察中部步调死存器统造旗号.为使能从0000H到FFFFH的中部步调死存器读与指令,必须交GND.注意加稀办法1时,将里里锁定位RESET.为了真止里里步调指令,该当交VCC.正在Flash编程功夫,也交支12伏VPP电压.XTAL1(19引足):振荡器反相搁大器战里里时钟爆收电路的输进端.XTAL2(18引足):振荡器反相搁大器的输进端.特殊功能寄存器正在STC89C52RC片内死存器中,80H~FFH共128个单元位特殊功能寄存器(SFR),SFR的天点空间如下表1所示.并不是所有的天点皆被定义,从80H~FFH共128个字节惟有一部分被定义.另有相称一部分不定义.对于不定义的单元读写将是无效的,读出的数值将不决定,而写进的数据也将拾得.不该将“1”写进已定义的单元,由于那些单元正在将去的产品中大概给予新的功能,正在那种情况下,复位后那些单元数值经常“0”.STC89C52RC除了有定时器/计数器0战定时器/计数器1除中,还减少了一个一个定时器/计数器2.定时器/计数器2的统造战状态位位于T2CON(睹表2)战T2MOD(睹表4).定时器2是一个16位定时/计数器.通过树立特殊功能寄存器T2CON中的C/T2位,可将其动做定时器大概计数器(特殊功能寄存器T2CON的形貌如表2所列).定时器2有3种支配模式:捕获、自动沉新拆载(递加大概递减计数)战波特率爆收器,那3种模式由T2CON中的位举止采用(如表2所列)表1 STC89C52RC的特殊功能寄存器表2 特殊功能寄存器T2CON的形貌表3 定时/计数器2统造寄存器诸位功能证明EXEN2定时器2中部允许标记.当EXEN2=1时,如果定时器2已用于做串止心的波特率爆收器,正在T2EX端心出现背跳变脉冲时,激活定时器2捕获大概者沉拆载.EXEN2=0时,T2EX端的中部旗号无效.TR2定时器2开用/停止统造位.TR2=1时,开用定时器2.C/定时器2定时办法大概计数办法统造位.C/=0时,采用定时办法,C/=1时,采用对于中部事变技能办法(下落沿触收).CP/捕获/沉拆载采用.CP/=1时,如EXEN2=1,且T2EX端出现背跳变脉冲时爆收捕获支配.CP/=1时,若定时器2溢出大概EXEN2=1条件下,T2EX端出现背跳变脉冲,皆市出现自动沉拆载支配.当RCLK=1大概TCLK=1时,该位无效,正在定时器2溢出时强造其自动沉拆载.表4 定时器2处事办法RCLK+TCLK CP/TR2模式00116位自动沉拆01116位捕获1X1波特率爆收器X X0(关关)1、捕获模式正在捕获模式中,通过T2CON中的EXEN2树立2个选项.如果EXEN2=0, 定时器2动做一个16位定时器大概计数器(由T2CON中的C/位采用),溢出时置位TF2(定时器2溢出标记位).该位可用于爆收中断(通过使能IE寄存器中的定时器2中断使能位).如果EXEN2=1,与以上形貌相共,但是减少了一个个性,即中部输进T2EX由1变0时,将定时器2中TL2战TH2的目前值各自捕获到RCAP2L战RACP2H.其余,T2EX的背跳变使T2CON中的EXF2置位,EXF2也像TF2一般不妨爆收中断(其背量与定时器2溢出中断天点相共,定时器2中断服务步调通过查询TF2战EXF2去决定引起中断的事变),捕获模式如图X 所示.正在该模式中,TL2战TH2勿沉新拆载值,以至当T2EX爆收捕获时间时,计数器仍以T2EX的背跳变大概振荡频次的1/2(12时钟模式)大概1/6(6时钟模式)计数.图XX 定时器2捕获模式2、自动沉拆模式(递加/递减计数器)16位自动沉拆模式中,定时器2可通过C/T2摆设为定时器/计数器,编程统造递加/递减.计数的目标有DCEN(递减计数使能位)决定,DCEN位于T2MMOD寄存器中,T2MOD寄存器诸位的功能形貌如表XX所示.当DCEN=0时,定时器2默认为进与计数;当DCEN=1时,定时器2可通过T2EX决定递加大概递减计数.图XX隐现了当DCEN=0时,定时器2自动递加计数.正在该模式中,通过树立EXEN2位举止采用.如果EXEN2=0,定时器2递加计数到0FFFFH,并正在溢出后将TF2置位,而后将RCAP2L战RCAP2H中的16位值动做沉新拆载值拆进定时器2.RCAP2L战RCAP2H的值是通过硬件预设的.表5 定时器2模式(T2MOD)统造寄存器的形貌*用户勿将其置1.那些为正在将去80C51系列产品中用去真止新的个性.正在那种情况下,以去用到死存位,复位时大概非灵验状态时,它的值应为0;而正在那些位灵验状态时,它的值为1.死存位读到的值不决定.如果EXEN2=1,16位沉新拆载可通过溢出大概T2EX 从1到0的背跳变真止.此背跳变共时将EXF2置位.如果定时器2中断被使能,则当TF2大概EXF2置1时,定时器2递加计数,计数到0FFFFH后溢出并置位TF2,还将爆收中断(如果中断被使能).定时器2的溢出将使RCAP2L战RCAP2H中的16位值动做沉新拆载值搁进TL2战TH2.当T2EX置整时,将使定时器2递减计数.当TL2战TH2计数到等于RCAP2L战RCAP2H时,定时器爆收中断.图XX 定时器2自动沉拆模式(DCEN=0)3、波特率爆收器模式式中:n=16(6时钟模式)大概32(12时钟模式);是的真质,为16位勿标记整数.如图XX(上头)所示,定时器2是动做波特率爆收器,仅当寄存器T2CON中的RCLK战(大概)TCLK=1时,定时器2动做波特率爆收器才灵验.注意:TH2溢出本去不置位TF2,也不爆收中断.那样当定时器动做波特率爆收器时,定时器2中断不必克制.如果EXEN2(T2中部使能标记)被置位,正在T2EX中由1到0的变换会置位EXF2(T2中部标记位),但是本去不引导(TH2,TL2)沉新拆载().当定时器2用做波特率爆收器时,如果需要,T2EX可用做附加的中部中断.当计时器处事正在波特率爆收器模式下,则不要对于TH2战TL2举止读/写,每隔一个状态时间()大概由T2加进的同步旗号,定时器2将加1.正在此情况下对于TH2战TL2举止读/写是禁绝确的;可对于RCAP2寄存器举止读,但是不要举止写,可则将引导自动沉拆过得.当对于定时器2大概寄存器RCAP举止考察时.应关关定时器(浑整TR2).表XX列出了时常使用的波特率战怎么样用定时器2得到那些波特率.表XX 由定时器2爆收的时常使用波特率瞅门狗应用STC89C52RC单片机瞅门狗定时器特殊功能寄存器标记功能EN_WDT瞅门狗允许位,当树立为“1”,瞅门狗开用CLR_WDT瞅门狗浑“0”位,当设为“1”时,瞅门狗将沉新计数.硬件将自动浑“0” 此位IDLE_WDT瞅门狗“IDLE”模式位,当树立为“1”时,瞅门狗定时器正在“空忙模式”计数;当浑“0”该位时,瞅门狗正在“空忙模式”时不计数瞅门狗定时器预分频值,分歧值对于应预分频数如表XX所示PS2,PS1,PS0表XX 20MHz晶振瞅门狗定时器预分频值PS2PS1PS0预分频瞅门狗溢出时间0002ms001478.6 ms0108157.3 ms01116314.6 ms10032629.1 ms瞅门狗溢出时间与预分频值有曲交的关系,公式如下:式中,N表示STC单片机的时钟模式.STC单片机有二种时钟模式,一种是单倍速,也便是12时钟模式,正在该模式下,STC单片机与其余公司51系列单片机具备相共的呆板周期,即12个振荡周期为一个呆板周期;另一种是单倍速,又称6时钟模式,正在该模式下,STC单片机比其余公司的51单片机运止速度快一倍.。

定时器0的使用

定时器0的使用

- 专业电子技术交流社区 电子工程师网上家园 -
电子
第 3页
定时器 0 的使用
电子园
位。EA=1,CPU 开放中断;EA=0,CPU 禁止所有的中断请求。总允许 EA 好比一个总开关。 这里我们只需要将 ET0 和 EA 置位即可。
第五步是通过对 TCON 寄存器的操作来完成的。
各位定义如下: TF1:定时器 1 溢出标志位。当字时器 1 计满溢出时,由硬件使 TF1 置“1”,并且申请 中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。 TR1:定时器 1 运行控制位。由软件清“0”关闭定时器 1。当 GATE=1,且 INT1 为高电 平时,TR1 置“1”启动定时器 1;当 GATE=0,TR1 置“1”启动定时器 1。 TF0:定时器 0 溢出标志。其功能及操作情况同 TF1。 TR0:定时器 0 运行控制位。其功能及操作情况同 TR1。 IE1:外部中断 1 请求标志。 IT1:外部中断 1 触发方式选择位。 IE0:外部中断 0 请求标志。 IT0:外部中断 0 触发方式选择位。 可见,我们只要将 TR0 置位即可。 第七步,我们需要编写自己的中断函数。 中断函数的格式如下: void 函数名(void) interrupt 中断代号{} 其中函数名是可以任意命名的,为了方便起见,我们在这里将其命名为 Timer0。后面 的终端代号根据不同类型的中断需要不同的赋值。其赋值所代表的中断类型如下:
void Timer0_Init(void); //定时器初始化
unsigned char ucCount;
//主函数 void main(void) {
- 专业电子技术交流社区 电子工程师网上家园 -
电子

STC89C52

STC89C52

STC89系列高性能单片机及其应用软件/代码/教程2007-07-06 12:52:08 阅读64 评论0 字号:大中小订阅随着电子技术的迅速发展,单片机技术的出现给现代工业测控领域带来了一次新的技术革命。

目前,单片机以其高可靠性、高性能价格比,在工业控制系统、数据采集系统、智能化仪器仪表、办公自动化等诸多领域得到极为广泛的应用,并已走入家庭,洗衣机、空调等,到处都可见到单片机的踪影。

在单片机家族的众多成员中,MCS51系列单片机以其优越的性能、成熟的技术及高可靠性和高性能价格比,迅速占领了工业测控和自动化工程应用的主要市场,成为国内单片机应用领域中的主流。

世界各大单片机厂商都在MCS51上投入了大量的资金和人力,围绕51内核,衍生出许多品种,增强51单片机的各种功能。

MCS51家族是目前在单片机领域发展最快的一个品种。

这里要向大家推荐的是新近由STC公司推出的高性价比的STC89系列单片机。

STC89系列单片机的性能STC89系列单片机是MCS-51系列单片机的派生产品。

它们在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,DIP40封装系列与8051为pin-to-pin兼容。

STC89系列单片机高速(最高时钟频率90MHz),低功耗,在系统/在应用可编程(ISP,IAP),不占用户资源。

下表是STC89系列单片机资源一览表。

AüSTC89系列单片机另外增加了768字节的片内扩展RAM,以解决众多技术人员在编程时的RAM资源严重缺乏的问题。

768字节的片内扩展RAM(地址:000H2FFH)与外部扩展RAM地址重叠,单片机可通过软件设置AUXR.1,决定是否使用片内扩展RAM,以防止可能的与外部扩展RAM的冲突,默认为使用片内扩展RAM。

片内扩展RAM的访问采用间接寻址,可通过①、MOVX A,@DPTR 或MOVX @DPTR ,A 指令访问片内扩展RAM(00H2FFH,共768字节);②、MOVX A,@Ri 或MOVX @Ri,A 指令访问片内扩展RAM(00HFFH,共256字节)。

第6章 STC89C52单片机定时计数器

第6章  STC89C52单片机定时计数器
启/停位TRx设置;TR0=1
精选完整ppt课件
29 29
方法一、中断方式:
MAIN: HERE:
ORG LJMP ORG LJMP ORG MOV MOV MOV MOV SETB SETB SETB AJMP
0000H
MAIN
000BH
T0P
0100H
SP,#60H
;设置堆栈指针
TMOD,#00H ;T0为定时、方式0、门控GATE0=0
精选完整ppt课件
25 25
实际定时时间Tc = x • Tp
式中Tp为机器周期,Tc为所需定时时间,x为所需计数次数,主频和Tc一般 是已知值,在求得Tp后就可求得所需计数值x,再求x的补码,即求得定时的 计数初值。(x)补=2n - x 例如:设定时时间为2ms,机器周期Tp为2μs,可求得定时计数次数为:
当实现了启动要求之后,定时器就按规
定的工作方式和初值开始计数或定时。
精选完整ppt课件
14 14
因为定时器/计数器是作“加1”计数,并在计满溢 出时产生中断,初值X可以这样计算:
X = M - 计数值(计数次数) 例1:在6MHZ主频下,要求产生1ms的定时,计算初值
分析: 因为定时器每“加1”一次所需的时间为2μs,如果 要产生1ms的定时,需加500次,500即为计数值。 方式1下工作: 初值 X =M-计数值=65536-500=FE0CH
在模式0、1和2,T0和T1的工作方式相同, 在模式3,两个定时器的方式不同。下面以T1 为例,分述各种工作方式的特点和用法。
精选完整ppt课件
17 17
1.方式0
精选完整ppt课件
18
2.方式1
精选完整ppt课件

STC89C52单片机定时器2的使用知识讲解

STC89C52单片机定时器2的使用知识讲解

52单片机有3个定时器,T2是一个16位自动重载的,像T0和T1的方式2一样,只不过它是16位重载,如果作为计数器或定时用,中断用的是5,就是interrupt 5,T2的引脚是P1.0口。

P1.0作为I/O 口用了以后T2计数是不行了,不过定时或是作为串口时钟还是可以的。

T2CON(T2的控制寄存器),字节地址0C8H:0CFH 0CEH 0CDH 0CCH 0CBH 0CAH 0C9H 0C8HTF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RT2 各位的定义如下:TF2:定时/计数器2溢出标志,T2溢出时置位,并申请中断。

只能用软件清除,但T2作为波特率发生器使用的时候,(即RCLK=1或TCLK=1),T2溢出时不对TF2置位。

EXF2:当EXEN2=1时,且T2EX引脚(P1.0)出现负跳变而造成T2的捕获或重装的时候,EXF2置位并申请中断。

EXF2也是只能通过软件来清除的。

RCLK:串行接收时钟标志,只能通过软件的置位或清除;用来选择T1(RCLK=0)还是T2(RCLK=1)来作为串行接收的波特率产生器TCLK:串行发送时钟标志,只能通过软件的置位或清除;用来选择T1(TCLK=0)还是T2(TCLK=1)来作为串行发送的波特率产生器EXEN2:T2的外部允许标志,只能通过软件的置位或清除;EXEN2=0:禁止外部时钟触发T2;EXEN2=1:当T2未用作串行波特率发生器时,允许外部时钟触发T2,当T2EX引脚输入一个负跳变的时候,将引起T2的捕获或重装,并置位EXF2,申请中断。

TR2:T2的启动控制标志;TR2=0:停止T2;TR2=1:启动T2C/T2:T2的定时方式或计数方式选择位。

只能通过软件的置位或清除;C/T2=0:选择T2为定时器方式;C/T2=1:选择T2为计数器方式,下降沿触发。

CP/RT2:捕获/重装载标志,只能通过软件的置位或清除。

(完整版)STC89C52单片机定时器2的使用

(完整版)STC89C52单片机定时器2的使用

52单片机有3个定时器,T2是一个16位自动重载的,像T0和T1的方式2一样,只不过它是16位重载,如果作为计数器或定时用,中断用的是5,就是interrupt 5,T2的引脚是P1.0口。

P1.0作为I/O 口用了以后T2计数是不行了,不过定时或是作为串口时钟还是可以的。

T2CON(T2的控制寄存器),字节地址0C8H:0CFH 0CEH 0CDH 0CCH 0CBH 0CAH 0C9H 0C8HTF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RT2 各位的定义如下:TF2:定时/计数器2溢出标志,T2溢出时置位,并申请中断。

只能用软件清除,但T2作为波特率发生器使用的时候,(即RCLK=1或TCLK=1),T2溢出时不对TF2置位。

EXF2:当EXEN2=1时,且T2EX引脚(P1.0)出现负跳变而造成T2的捕获或重装的时候,EXF2置位并申请中断。

EXF2也是只能通过软件来清除的。

RCLK:串行接收时钟标志,只能通过软件的置位或清除;用来选择T1(RCLK=0)还是T2(RCLK=1)来作为串行接收的波特率产生器TCLK:串行发送时钟标志,只能通过软件的置位或清除;用来选择T1(TCLK=0)还是T2(TCLK=1)来作为串行发送的波特率产生器EXEN2:T2的外部允许标志,只能通过软件的置位或清除;EXEN2=0:禁止外部时钟触发T2;EXEN2=1:当T2未用作串行波特率发生器时,允许外部时钟触发T2,当T2EX引脚输入一个负跳变的时候,将引起T2的捕获或重装,并置位EXF2,申请中断。

TR2:T2的启动控制标志;TR2=0:停止T2;TR2=1:启动T2C/T2:T2的定时方式或计数方式选择位。

只能通过软件的置位或清除;C/T2=0:选择T2为定时器方式;C/T2=1:选择T2为计数器方式,下降沿触发。

CP/RT2:捕获/重装载标志,只能通过软件的置位或清除。

STC89C52单片机详细介绍

STC89C52单片机详细介绍

STC89C52单片机详细介绍单片机作为嵌入式系统中最重要的组成部分之一,广泛应用于各个领域。

STC89C52单片机是一款备受关注的产品,具备出色的性能和广泛的应用范围。

本文将详细介绍STC89C52单片机的特性、应用场景以及使用方法。

一、STC89C52单片机的概述STC89C52是由深圳市意法半导体技术有限公司推出的一款高性能、低功耗的8位单片机。

它采用了先进的CMOS技术,并具备51系列单片机的完整外设功能。

STC89C52单片机的主要特点如下:1. 指令执行速度快:STC89C52工作频率高达33MHz,使其能够迅速响应各种指令,并实现快速、高效的数据处理。

2. 存储空间大:STC89C52单片机内置8KB的闪存和256字节的RAM,可以满足大部分应用的存储需求。

3. 强大的外设功能:STC89C52单片机提供了丰富的外设,包括四个定时器/计数器、两个串口、一个可编程方式的I/O口等,以满足各种应用需求。

4. 丰富的接口资源:STC89C52单片机具备40个I/O引脚,可用于连接各种外部设备,如LCD显示屏、键盘、传感器等。

5. 低功耗设计:STC89C52单片机采用了先进的低功耗技术,在保证性能的同时,最大程度地降低功耗,延长系统的使用寿命。

二、STC89C52单片机的应用场景由于STC89C52单片机拥有强大的性能和丰富的外设功能,它在各个领域都有广泛的应用。

以下列举了几个常见的应用场景:1. 工业自动化控制:STC89C52单片机可以用于工厂的自动化控制系统中,通过与传感器、执行器等设备的连接,实现自动监控和控制,提高生产效率和安全性。

2. 家电控制:STC89C52单片机可以用于家电产品,如空调、洗衣机、电视等的控制系统中。

它可以控制设备的运行状态、模式切换以及与其他设备的通信,实现智能化的家居控制。

3. 电子秤:STC89C52单片机具备高精度的数据处理能力,可用于电子秤的设计。

STC89C52单片机用户手册

STC89C52单片机用户手册

STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:•增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.•工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)•工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz•用户应用程序空间为8K字节•片上集成512字节RAM•通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

•ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片•具有EEPROM功能•具有看门狗功能•共3个16位定时器/计数器。

即定时器T0、T1、T2•外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒•通用异步串行口(UART),还可用定时器软件实现多个UART•工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)•PDIP封装STC89C52RC单片机的工作模式•掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序•空闲模式:典型功耗2mA•正常工作模式:典型功耗4Ma~7mA•掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52RC引脚图STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。

(完整word版)STC89C52单片机详细介绍

(完整word版)STC89C52单片机详细介绍

STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。

该器件采用ATMEL 搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

单片机总控制电路如下图4—1:图4—1单片机总控制电路1.时钟电路STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。

时钟可以由内部方式产生或外部方式产生。

内部方式的时钟电路如图4—2(a) 所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。

定时元件通常采用石英晶体和电容组成的并联谐振回路。

晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。

外部方式的时钟电路如图4—2(b)所示,RXD接地,TXD接外部振荡器。

对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。

片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。

示,RXD接地,TXD接外部振荡器。

对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。

片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。

RXD接地,TXD接外部振荡器。

对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。

片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。

(a)内部方式时钟电路(b)外部方式时钟电路图4—2时钟电路2.复位及复位电路(1)复位操作复位是单片机的初始化操作。

其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。

除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。

stc89c52延时函数

stc89c52延时函数

stc89c52延时函数stc89c52是一款单片机芯片,它是一种高性能、低功耗、低成本的单片机,广泛应用于各种电子设备中。

在单片机编程中,延时函数是非常重要的一部分,因为它可以控制程序的执行时间,使程序按照我们的要求进行运行。

在stc89c52中,延时函数的实现方法有多种,下面我们将详细介绍其中的几种方法。

1. 软件延时软件延时是最常用的一种延时方法,它的原理是利用单片机的计时器来实现延时。

在stc89c52中,计时器有两种,一种是定时器,另一种是计数器。

定时器是按照一定的时间间隔来计时,计数器是按照一定的计数值来计时。

在软件延时中,我们通常使用定时器来实现延时。

软件延时的实现方法如下:(1)设置定时器的计时值,使其按照一定的时间间隔计时。

(2)在计时器计时的过程中,不断检测计时器的计数值是否达到了我们所要求的延时时间。

(3)如果计数值达到了要求的延时时间,就停止计时器的计时。

(4)如果计数值还没有达到要求的延时时间,就继续等待计时器的计时。

软件延时的优点是实现简单,代码量少,但是它的缺点是精度不高,容易受到其他程序的干扰,因此在实际应用中,我们通常使用硬件延时。

2. 硬件延时硬件延时是利用单片机内部的硬件电路来实现延时,它的精度比软件延时高,不容易受到其他程序的干扰。

在stc89c52中,硬件延时的实现方法有多种,下面我们将介绍其中的几种方法。

(1)利用晶振来实现延时晶振是单片机中常用的时钟源,它可以提供稳定的时钟信号,因此可以用来实现延时。

在stc89c52中,晶振的频率通常为11.0592MHz,因此我们可以根据晶振的频率来计算出延时的时间。

(2)利用定时器来实现延时定时器是单片机中常用的计时器,它可以提供稳定的计时信号,因此可以用来实现延时。

在stc89c52中,定时器有多种模式,可以根据不同的模式来实现不同的延时时间。

(3)利用外部中断来实现延时外部中断是单片机中常用的中断源,它可以在外部信号触发时产生中断,因此可以用来实现延时。

STC89C52定时器使用方法介绍

STC89C52定时器使用方法介绍

定时器/计数器0 和定时器/计数器1 都可以在方式0、方式1、方式2 工作,而方式3 只有前者才能工作。

1. 方式 0当TMOD 中M1、M0 都为0 时,T/C 工作在方式0。

方式0 为13 位的T/C,由TH 提供高8 位,TL 提供低5 位,注意TL 的高3 位是无效的,计数溢出值为2 的13 次方=8192,启动该计数器需要设置好计数初值。

当C/-- T该位为0 时,T/C 为定时器,振荡源12 分频的信号作为计数脉冲;当C/-- T该位为1 时,T/C为计数器,对外部脉冲输入端的T0 或T1 引脚进行脉冲计数。

计数脉冲能否加到计数器上,受启动信号的控制。

当GATE=0 时,只要TR=1,则T/C 启动;当GATE=1时,启动信号受到TR 与INT 的双重控制。

T/C 启动后立即加1 计数,当13 位计数满时,TH 向高位进位。

此进位将中断溢出标志TF 置位即TF=1,产生中断请求,表示定时时间或计数次数到达。

若T/C 开中断(ET=1)且CPU 开中断(EA=1),则当CPU 自动转向中断服务函数时,TF 自动清零,不需要人工软件清零。

2. 方式 1当TMOD 中M1、M0 为0、1 时,T/C 工作在方式1。

方式1 与方式0 基本相同,唯一不同的是方式0 是13 位计数方式,方式1 是16 位计数方式,TH 和TL 都同时提供8 位(方式0 时TL 只提供低5 位,高3 位无效),计数溢出值为2 的16 次方=65536。

3. 方式 2当TMOD 中M1、M0 为1、0 时,T/C 工作在方式2。

方式2 是8 位的可自动重装载的T/C,满计数值为2 的8 次方=256。

在方式0 和方式1 中,当计数满后,若要进行下一次定时/计数,必须通过软件向TH 和TL 重新装载预置计数值。

方式2 中TH 和TL 被当作两个8 位计数器。

技术过程中,TH 寄存8 位初值并保持不变,由TL 进行8 位计数。

51单片机(STC89C52)的中断和定时器

51单片机(STC89C52)的中断和定时器

51单⽚机(STC89C52)的中断和定时器STC89C51/STC89C52 Timer内部不带振荡源, 必须外接晶振采⽤11.0592MHz,或22.1184MHz,可⽅便得到串⼝通讯的标准时钟.STC89和STC90系列为12T, STC11/STC12系列为1T, 也就是⼀个指令⼀个机器周期, 这些都需要外置晶振; STC15系列有内置晶振.中断中断允许控制寄存器 IE字节地址A8H, CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的D7D6D5D4D3D2D1D0EA—ET2ES ET1EX1ET0EX0EA (IE.7): 整体中断允许位, 1:允许ET2(IE.5): T2中断允许位, 1:允许(for C52)ES (IE.4): 串⼝中断允许位, 1:允许ET1(IE.3): T1中断允许位, 1:允许EX1(IE.2): 外部中断INT1允许位, 1:允许ET0(IE.1): T0中断允许位, 1:允许EX0(IE.0): 外部中断INT0允许位, 1:允许52单⽚机⼀共有6个中断源, 它们的符号, 名称以及各产⽣的条件分别如下1. INT0 - 外部中断0, 由P3.2端⼝线引⼊, 低电平或下降沿引起2. INT1 - 外部中断1, 由P3.3端⼝线引⼊, 低电平或下降沿引起3. T0 - 定时器/计数器0中断, 由T0计数器计满回零引起4. T1 - 定时器/计数器1中断, 由T1计数器计满回零引起5. T2 - 定时器/计数器2中断, 由T2计数器计满回零引起 <--这个是52特有的6. TI/RI - 串⾏⼝中断, 串⾏端⼝完成⼀帧字符发送/接收后引起定时器中断51单⽚机内部共有两个16位可编程的定时器,即定时器T0和定时器T1, 52单⽚机内部多⼀个T2定时器. 它们既有定时功能,也有计数功能。

可通过设置与它们相关的特殊功能寄存器选择启⽤定时功能还是计数功能. 这个定时器系统是单⽚机内部⼀个独⽴的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作⽤,CPU⼀旦设置开启定时功能后,定时器便在晶振的作⽤下⾃动开始计时,但定时器的计数器计满后,会产⽣中断。

STC89C52RC单片机存储以及引脚应用和定时器2及看门狗定时

STC89C52RC单片机存储以及引脚应用和定时器2及看门狗定时

表 4 定时器 2 工作方式
RCLK+TCLK 0 0 1 X 1、捕获模式Βιβλιοθήκη CP/RL2 0 1 X X
TR2 1 1 1 0
模式 16 位自动重装 16 位捕获 波特率发生器 (关闭)
在捕获模式中,通过 T2CON 中的 EXEN2 设置 2 个选项。如果 EXEN2=0, 定时 器 2 作为一个 16 位定时器或计数器(由 T2CON 中的 C/������2位选择) ,溢出时置位 TF2(定时器 2 溢出标志位) 。该位可用于产生中断(通过使能 IE 寄存器中的定 时器 2 中断使能位) 。如果 EXEN2=1,与以上描述相同,但增加了一个特性,即 外部输入 T2EX 由 1 变 0 时, 将定时器 2 中 TL2 和 TH2 的当前值各自捕获到 RCAP2L 和 RACP2H。另外,T2EX 的负跳变使 T2CON 中的 EXF2 置位,EXF2 也像 TF2 一样 能够产生中断 (其向量与定时器 2 溢出中断地址相同,定时器 2 中断服务程序通 过查询 TF2 和 EXF2 来确定引起中断的事件) , 捕获模式如图 X 所示。 在该模式中, TL2 和 TH2 勿重新装载值,甚至当 T2EX 产生捕获时间时,计数器仍以 T2EX 的负 跳变或振荡频率的 1/2(12 时钟模式)或 1/6(6 时钟模式)计数。
定时器 2 是一个 16 位定时/计数器。通过设置特殊功能寄存器 T2CON 中的 C/T2 位,可将其作为定时器或计数器(特殊功能寄存器 T2CON 的描述如表 2 所 列) 。定时器 2 有 3 种操作模式:捕获、自动重新装载(递增或递减计数)和波 特率发生器,这 3 种模式由 T2CON 中的位进行选择(如表 2 所列) 表1 STC89C52RC 的特殊功能寄存器
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

52单片机有3个定时器,T2是一个16位自动重载的,像T0和T1的方式2一样,只不过它是16位重载,如果作为计数器或定时用,中断用的是5,就是interrupt 5,T2的引脚是P1.0口。

P1.0作为I/O 口用了以后T2计数是不行了,不过定时或是作为串口时钟还是可以的。

T2CON(T2的控制寄存器),字节地址0C8H:
0CFH 0CEH 0CDH 0CCH 0CBH 0CAH 0C9H
0C8H
TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2
CP/RT2
各位的定义如下:
TF2:定时/计数器2溢出标志,T2溢出时置位,并申请中断。

只能用软件清除,但T2作为波特率发生器使用的时候,(即RCLK=1或TCLK=1),T2溢出时不对TF2置位。

EXF2:当EXEN2=1时,且T2EX引脚(P1.0)出现负跳变而造成T2的捕获或重装的时候,EXF2置位并申请中断。

EXF2也是只能通过软件来清除的。

RCLK:串行接收时钟标志,只能通过软件的置位或清除;用来选择T1(RCLK=0)还是T2(RCLK=1)来作为串行接收的波特率产生器
TCLK:串行发送时钟标志,只能通过软件的置位或清除;用来选择T1(TCLK=0)还是T2(TCLK=1)来作为串行发送的波特率产生器
EXEN2:T2的外部允许标志,只能通过软件的置位或清除;EXEN2=0:禁止外部时钟触发T2;EXEN2=1:当T2未用作串行波特率发生器时,允许
外部时钟触发T2,当T2EX引脚输入一个负跳变的时候,将引起T2的
捕获或重装,并置位EXF2,申请中断。

TR2:T2的启动控制标志;TR2=0:停止T2;TR2=1:启动T2
C/T2:T2的定时方式或计数方式选择位。

只能通过软件的置位或清除;C/T2=0:选择T2为定时器方式;C/T2=1:选择T2为计数器方式,下降沿触发。

CP/RT2:捕获/重装载标志,只能通过软件的置位或清除。

CP/RT2=0时,选择重装载方式,这时若T2溢出(EXEN2=0时)或者T2EX引脚(P1.0)出现负跳变(EXEN2=1时),将会引起T2重装载;CP/RT2=1时,选择捕获方式,这时若T2EX引脚(P1.0)出现负跳变(EXEN2=1时),将会引起T2捕获操作。

但是如果RCLK=1或TCLK=1时,CP/RT2控制位不起作用的,被强制工作于定时器溢出自动重装载模式。

对应郭天祥老师的52单片机板子!
/***********************************
程序编著院校南昌航空大学
晶振11.0592MHZ
T2CON(0XC8)的说明定时器2可以产生两个中断TF2和EXF2,这两个中断通过逻辑或共享一个端口
定时器2溢出时TF2置位如果定时器工作在重装模式RCAP2H和RCAP2L 的值会自动装入TH2和TL2 TR2启动
TF2和TL2必须软件清零
T2MOD 必须定义sfr T2MOD= 0xC9;
扩展RCLK TCLK其中一个为高电平定时器2做波特率发生器
***********************************/
#include<reg52.h>
#include<intrins.h> // _nop_();
#define uchar unsigned char
#define uint unsigned int
sfr T2MOD = 0xC9;
sbit dula=P2^6;
sbit wela=P2^7;
sbit led=P1^7;
uchar timer2_ctr,num;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //数码管编码
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//11.0592MHZ延时函数
void delay(uint ms)
{
uint x;
while(ms--)
{
for(x=125;x>0;x--);
}
}
//初始化主函数
void init()
{
dula=wela=0; //关闭数码管显示
RCAP2H=(0XFFFF-50000)/256;
RCAP2L=(0XFFFF-50000)%256;
//TH2=RCAP2H; //会自动重装
//TL2=RCAP2L;
T2CON=0;
T2MOD=0;
IE=0XA0; //开总中断和定时器2中断TR2=1; //启动
}
void display(uchar num)
{
uchar gw,sw,bw;
bw=num/100;
sw=num%100/10;
gw=num%10;
P0=0xfe;
wela=1;
_nop_();_nop_();
wela=0;
. P0=table[bw];
dula=1;
_nop_();_nop_();
dula=0;
delay(3);
P0=0xfd;
wela=1;
_nop_();_nop_();
wela=0;
P0=table[sw];
dula=1;
_nop_();_nop_();
dula=0;
delay(3);
P0=0xfb;
wela=1;
_nop_();_nop_();
wela=0;
P0=table[gw];
dula=1;
_nop_();_nop_();
dula=0;
delay(3); //显示个十百
}
void main()
{
init();
while(1)
{
display(num);
}
}
void timer2() interrupt 5
{
TF2=0; //注意!定时器2必须由软件对溢出标志位清零,硬件不能清零,这里与定时器0和定时器1不同!!!
timer2_ctr++;
if(timer2_ctr>=20) //定时50ms×20=1000ms即1秒钟,这里模拟一个60秒秒表
{
timer2_ctr=0;
led=~led;
num++;
if(num>=256)
{
num=0;
}
}
}
现象是:数码管显示0-256,
程序很简单!朋友们可以自己试试!不明白问我739141300!
祝你学成!。

相关文档
最新文档