打印

为什么写程序时不需要用户对TF1清除呢?

[复制链接]
1032|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dingy|  楼主 | 2014-7-1 19:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在教科书上说,在串口通信时,定时器T1经常作波特率发生器使用,通常选用定时器模式2,即自动重装方式,在这种方式下,还应禁止T1中断,以免T1溢出时产生不必要的中断。
这里我有一个问题,在上面这种通行情况下,当T1溢出时,溢出标志位TF1是由硬件清除的吗?但是上面说了禁止T1中断,照理应该是由用户清除的,为什么写程序时不需要用户对TF1清除呢?
沙发
pengf| | 2014-7-1 19:32 | 只看该作者
这个不会影响波特率发生器工作

使用特权

评论回复
板凳
renyaq| | 2014-7-1 19:34 | 只看该作者
不懂。。。

使用特权

评论回复
地板
dingy|  楼主 | 2014-7-1 19:34 | 只看该作者


2楼你的意思是T1作为波特率发生器的话,与TF1的值无关,无所谓清不清除。
那我再问一下,如果在T1方式2作为波特率发生器,若未禁止中断,是否串口无法工作?
而教科书上说,若用T1方式1作为波特率发生器,则需要允许T1中断重新赋初值,那么我是否可以在T1方式2下也开中断,无非在T1中断服务程序中,不执行任何指令直接中断返回,如下所示:
ITT1:RETI
这样串口能工作吗?

使用特权

评论回复
5
栩栩如生| | 2014-7-1 19:40 | 只看该作者
1、波特率发生器的工作情况与TF1的值无关,无所谓清不清除;
2、若未禁止中断,串口也能工作,但会频繁进入T1中断,会占用大量CPU时间;
3、那么我是否可以在T1方式2下也开中断——可以,后果如第二条

使用特权

评论回复
6
dingy|  楼主 | 2014-7-1 19:40 | 只看该作者
若波特率发生器采用T1方式2,开中断的情况下,用Proteus仿真时串口无法工作,不知道实物制作有没有问题。

使用特权

评论回复
7
栩栩如生| | 2014-7-1 19:41 | 只看该作者
我认为楼主的疑问有两条:
1,T1方式2作波特率发生器时,不能开中断,否则,虽然T1能正常计数,但微处理器响应中断的后果就是死机;
2,中断标志TF1置位与响应中断是两回事,只要有溢出,TF1就置位,但不一定响应中断,在于你是否开了中断允许

使用特权

评论回复
8
zwll| | 2014-7-1 19:44 | 只看该作者
你不用到这个TF1,它高,它低,关你鸟事?我搞不懂你考虑这个问题干什么?

使用特权

评论回复
9
chuxh| | 2014-7-1 19:44 | 只看该作者
呵呵,楼上的真是急性子哈

使用特权

评论回复
10
houcs| | 2014-7-1 19:45 | 只看该作者
T1溢出后TF1置位,但如果没有开启T1中断,则并不相应T1溢出中断。

使用特权

评论回复
11
pangb| | 2014-7-1 19:46 | 只看该作者
很多实际产品会用到看门狗,当软件进入按键设置模块后,由于多处需要等待下一个按键、所以需要四处对看门狗计数器清零,相当繁琐,不便于修改与维护。

使用特权

评论回复
12
pangb| | 2014-7-1 19:46 | 只看该作者
这是,将T1中断只编写清除看门狗计数器,那么在进入设置功能时打开T1中断、退出设置时再关闭,就非常简单了。并且由于手动设置操作速度很慢,也不影响性能。

使用特权

评论回复
13
dingy|  楼主 | 2014-7-1 19:47 | 只看该作者
呵呵,知道了,多谢各位高手

使用特权

评论回复
14
dingy|  楼主 | 2014-7-1 19:47 | 只看该作者
先结贴了哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

745

主题

10920

帖子

6

粉丝