5353|8

160

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

52单片机T2的用法 [复制链接]

众所周知,52单片机相比较51多了一个T2定时器,楼主最近搞的一个小车需要三个定时器,所以T2也派上了用场。貌似这个T2的资料比较少,我看了郭天祥老师的书里关于T2也讲了一些,可是不咋详细。关于T2定时器的程序我在网上找到了,经实验测试没有问题,如下:

/* Make PWM with timer2 */

#include
#define uchar unsigned char
#define uint  unsigned int
sbit led0 = P1^0;
unsigned char count;
void main()
{
        count =0;
   //  T2CON=0x00;   //实现16位自动重载定时,T2CON=0x01为不自动重载模式
        TCLK=0;          //可令T2CON=0;或TCLK=0,RCLK=0;
        RCLK=0;          //【T2CON中其他位可默认为0,而TCLK和RCLK必须手动置0】
                              //因RCAP2L和RCAP2H是由软件预设的
        T2MOD=0x00;
        RCAP2H=0x3C;
        RCAP2L=0xB0;
        TL2 = (65536-50000) % 256;  //或TL2=0xb0
        TH2 = (65536-50000) / 256;  //或TH2=0x3c
        EA = 1;
        ET2 = 1;
        TR2 = 1;
        while(1);
}
void timer2 (void) interrupt 5
{
        EA         = 0;        // 为啥?
        TF2 = 0;          //必须软件置0
        count ++;
        if (count == 10) //溢出中断后,T2自动加载RCAP2H和RCAP2L中的值
        {
                  count = 0;
                  led0 = ~led0;
        //  RCAP2L-=3;
        //  RCAP2H-=3;
        }  
           EA = 1;
}


主程序中的的初始化代码我都理解,在中断程序中,为什么一开是要关闭总中断呢?还要把溢出标志位置0?哪位给解释一下,小弟感激不尽。
此帖出自51单片机论坛

最新回复

如果只是这一个程序,不用ea=0,能正常工作,若有其他程序,可能会产生中断,为防止干扰,故关总中断,t2必须在中断服务程序关掉,手册有说明  详情 回复 发表于 2024-3-8 14:55
点赞 关注
 

回复
举报

1800

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
没用过52,以下纯属猜测:
1、关总中断是为了防止中断嵌套发生
2、从注释来看该中断属于溢出中断,清除溢出标志位相当于清除中断标志位吧
此帖出自51单片机论坛
 
 
 

回复

260

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
汗 现在忘了一干二净了
此帖出自51单片机论坛
 
个人签名中空板|防静电中空板www.cheng-sen.com
 
 

回复

1071

帖子

7

TA的资源

纯净的硅(中级)

4
 
关总中断是为了防止在执行当前中断程序段时被其它中断打断,溢出标志位的话我记得它是硬件置零的,楼主可以把它注释掉看下现象
此帖出自51单片机论坛

点评

我又翻了翻书,TF2需要软件清0,硬件不会自动清0,EA我注释掉了,程序没有受到影响。  详情 回复 发表于 2014-8-7 18:12
 
 
 

回复

662

帖子

0

TA的资源

纯净的硅(初级)

5
 
1.  EA并不需要关闭,除非程序还有更高优先的中断。

2.  T2中断后并不会自动清除TF2,因此要手动清除,如不清除T2中断离开后会再继续进入T2中断。(T0跟T1会自动清除)
此帖出自51单片机论坛

点评

这个答案算是比较犀利的了,握爪。。。  详情 回复 发表于 2014-8-7 18:13
 
 
 

回复

160

帖子

0

TA的资源

一粒金砂(中级)

6
 
dj狂人 发表于 2014-8-7 09:22
关总中断是为了防止在执行当前中断程序段时被其它中断打断,溢出标志位的话我记得它是硬件置零的,楼主可以 ...

我又翻了翻书,TF2需要软件清0,硬件不会自动清0,EA我注释掉了,程序没有受到影响。
此帖出自51单片机论坛

点评

好吧  详情 回复 发表于 2014-8-7 18:41
 
 
 

回复

160

帖子

0

TA的资源

一粒金砂(中级)

7
 
slotg 发表于 2014-8-7 09:28
1.  EA并不需要关闭,除非程序还有更高优先的中断。

2.  T2中断后并不会自动清除TF2,因此要手动清除, ...

这个答案算是比较犀利的了,握爪。。。
此帖出自51单片机论坛
 
 
 

回复

1071

帖子

7

TA的资源

纯净的硅(中级)

8
 
五加一等于六 发表于 2014-8-7 18:12
我又翻了翻书,TF2需要软件清0,硬件不会自动清0,EA我注释掉了,程序没有受到影响。

好吧
此帖出自51单片机论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

9
 
如果只是这一个程序,不用ea=0,能正常工作,若有其他程序,可能会产生中断,为防止干扰,故关总中断,t2必须在中断服务程序关掉,手册有说明
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表