www问答网
所有问题
单片机中断程序中为什么要重新赋值?
如题所述
举报该问题
推荐答案 2012-08-05
这个太好理解啦,就像你用一只桶来装水,你知道这只桶能装10公斤水就会溢出。你如果想往桶里装2公斤水想让他溢出,你就得先给它装进8公斤水。溢出以后你知道装了2公斤他满啦(满了以后会自动全部倒掉,是空的啦),下次如果还是需要装2公斤就让他溢出,你不是还得先装进8公斤水吗?不然2公斤水怎么会溢出呢?呵呵,简单吧!
按计数寄存器的原理也是一样的,一般每秒到65535才会溢出,如果你的单片机根据晶振频率和预分频的结果是每秒15625,那么你就得给计数寄存器先赋值49910,也就是C2F6。溢出后(计数寄存器的数值会自动清0),下次中断产生也需要在15625的时候,这个时候如果是没有预先的49910,就不能达到65535的溢出条件,就不会产生中断,所以每次执行玩这个中断程序都要给计数寄存器赋值。除非你只用一次溢出中断,可以不用再赋值。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://www.wendadaohang.com/zd/1AAnGGW41d4KAGKKd4d.html
其他回答
第1个回答 2012-08-05
在工作方式2时是自动重装初值的,不需要给TH0/TL0重新赋值;在其他工作方式下需要。定时器工作时其TH/TL的值是一直加,直到溢出得到中断。工作方式2是8位定时/计数器,其高8位被用来保存初值,来中断后就自动把保存在其中的初值付给定时计数器,而方式0方式1是13位、16位定时/计数器,2个寄存器都使用掉了,硬件不能保存初值,需要软件每次在中断中赋初值。
第2个回答 推荐于2017-12-15
进中断后 TH0和TL0是一直在执行自己加一的操作,直到溢出,这个时候TH0和TL0已经不是你幅的初值了,所以需要重新写入初值
本回答被提问者和网友采纳
第3个回答 2012-08-04
记得要保护现场 和恢复现场 最好使用栈保存数据
追问
这个我知道,但是就是使用定时器计数的时候已经给TH0.TL0赋过值了,为什么还要在中断程序中在赋一次值?
追答
你在什么时候中断的 ?能不能求全部的 。。。 代码?
相似回答
51
单片机
定时器
中断为什么
在主函数进来赋一次初值,进入中断之后又赋一...
答:
主函数中是初始化,中断服务程序中赋值,
是因为溢出申请中断时,寄存器的值已经为0了,必须重新赋值才能保持定时时间
。
...
单片机
定时器
中断为什么还要
向数据寄存器重装初始值
答:
2 由上面可知产生
中断
所经历的时间是(全为1的二进制+1-初值)×机器周期;这样我样通过
赋初值
地方式,就可以改变产生中断经历的时间。这就是这时器
为什么要
给初值。当然你不给初始值的话,初值其实就是0 3 我说的对不对
51
单片机为什么
在于主
程序中
给TH1装初值,又要在
中断
函数中TH1的重装初 ...
答:
先在主
程序中
给TH1装入初值。此后,定时(或计数),到了 TH1 TL0=0 时,就进入
中断
函数。如果不
重新
装入初值,它将从 0 开始继续定时(或计数)。从初值,定时(或计数),到 0,这才是人们期望的。从 0 ,定时(或计数),到 0,这并不是所期望的。因此,中断后,必须重新装入初值。
在主程序中设置定时器的初值后
为什么还要
在
中断
子
程序中重新
设置...
答:
初值在运行过程中计数器的不断加1,直到溢出时产生
中断
。因为这种定时方式(有的方式可以自动重置的),
单片机
不能重置初值,所以进入中断后必须人工重置初值,为下一次中断作准备。主函数里的是初始化的初值。因为有的定时方式,定时器溢出时,单片机没有重装初值的功能。所以定时函数里要重装初值。可以设置...
...在51
单片机中
定时器工作方式1(16位定时器)中在
中断中还要重新
...
答:
它本身就是这样设计的啊,没有自动
赋初值
功能啊,但我记得有一个八位的可以自动赋初值的啊,不过它是一个八位记录初值,另外八位才是计数功能的,
中断
一旦触发,记录初值的就自动赋初值的。其实很多时候计数器或者定时器是不用自动赋初值的,只有在做时钟那种的时候,自动赋初值才方便而已。
...报警声
程序
:在
中断
函数
里为什么要重新赋初值
呢
??
答:
你使用的定时器模式(TMOD =1)不会自动重载初值的。如果不
重新赋值
则下次计65535。51定时器有4中模式:工作模式0是13位计数器,其由一个高8位(0~7)计数器(TH0或TH1)和一个具有32位分频的低8位计数器中的(TL0或TL1)的低5位(0~4)组合成。工作模式1与模式0的区别在于计数的位数不同...
单片机
c语言中的定时
中断
函数,在mian函数TH0和TL0有了初始化,
为什么
在...
答:
因为定时器计数溢出时才产生
中断
,th0tl0全等于0。这种定时工作方式不会自动重装定时初值,所以中断子函数中要人工装载。主函数中如果省去初值,那就是从0开始计数,第一次进入中断的时间会有误差,所以不能省。
单片机中断
实验
为什么
设置SP的值
答:
设置SP的值,这与
中断
无关。对于51
单片机
,开机后默认的SP的值是07H,这个区域是不能做堆栈区的,必须要移到内部RAM的128字节的高地址区。只要是写
程序
,就必须先给SP指针先
重新赋值
,移动指针。不管有无中断都必须这么做,所以,与中断无关。当然了,这是用汇编语言写程序时,需要用户来完成这个操作...
单片机中
的
中断
问题,
答:
过程是这样的:
程序
一直在while(1)里面,直到定时器计满产生
中断
;产生中断后,执行中断服务程序,定时器
重新赋值
,tt自加1;回到while(1),等待下一次中断,定时器继续计数;定时器产生中断,...反复20次,P10取反。所以你的问题:1.中断函数是只执行一次吗 不是,每次执行完之后,由于中断未关,...
大家正在搜
单片机中断程序流程图
单片机中断程序
单片机中断程序详解
单片机外部中断程序
单片机中断程序代码
51单片机中断程序编写
单片机中断程序例子
单片机中断是什么
51单片机按键中断程序
相关问题
单片机中断程序中为什么要重新赋值?
在单片机程序设计的时,有时为什么要对堆栈指针SP重新赋值
单片机外部中断进行时,定时器会停止工作吗?如果在工作,进入外...
在单片机程序设计的时,有时为什么要对堆栈指针SP重新赋值
51单片机定时器中断程序里面对定时器再次赋值时使用全局变量进...
单片机中断初始值不能这样赋值吗?
51单片机外部中断函数里的变量被赋值后,
单片机中断优先赋值语句