STC89C52单片机定时器2的使用
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的使用实现定时和计数的方法一般有:软件定时、专用电路和可编程定时器/计数器三种方法。
软件定时:执行一个循环程序进行时间延迟。
定时准确,不需要外加硬件电路,但会增加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 单片机是一款高性能、低功耗的 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单片机手册资料

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中文手册

海纳电子资讯网: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单片机介绍:单片机是指一个集成在一块芯片上的完整计算机系统。
尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件: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单片机是宏晶科技推出的新一代下速/矮功耗/超强抗搞扰的单片机,指令代码真足兼容保守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的使用

- 专业电子技术交流社区 电子工程师网上家园 -
电子
第 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) {
- 专业电子技术交流社区 电子工程师网上家园 -
电子
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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!
祝你学成!。