标题: 初学者,求大神解惑单片机定时器问题 [打印本页]

作者: 丶盗版哥    时间: 2016-5-8 15:10
标题: 初学者,求大神解惑单片机定时器问题
void timer0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        aa++;        
}
做定时器的时候,请问这个断代码中的aa++,加到多少的时候回重置为0,还是说不会被重置一直会被累加到无穷大?
谢谢!
第一次发帖,刚刚发帖好像发错地方了。终于找到地方了,刚刚又发错地方了。

作者: luoluoluo136    时间: 2016-5-9 11:26
看你aa的数据类型~一般是加到这个数据类型的最大值然后再加1的话就会变成这个数据类型的最小值。比如unsigned char类型,加加加,加到255以后,再加1就会变成0
作者: zl2168    时间: 2016-5-9 18:17
aa必须是全局变量,否则中断结束,aa单元被释放,就没有了。
作者: zl2168    时间: 2016-5-9 18:17
至于加到几复0,与aa定义的数据类型有关,加到该数据类型最大值域后复0。
作者: zl2168    时间: 2016-5-9 18:18
一般在主程序中检测aa,达到某值后,执行相应操作任务。
作者: zl2168    时间: 2016-5-9 18:18
介绍你一本书,张志良编著《80C51单片机实用教程——基于Keil和Proteus》高等教育出版社ISBN 978-7-04-044532-9,书中有在中断中计数的2种范例。
作者: 丶盗版哥    时间: 2016-5-10 10:28
谢谢,也就是说假设我定义uchar型,到255之后就归零了是吧。
作者: 丶盗版哥    时间: 2016-5-10 10:29
luoluoluo136 发表于 2016-5-9 11:26
看你aa的数据类型~一般是加到这个数据类型的最大值然后再加1的话就会变成这个数据类型的最小值。比如unsign ...

谢谢大神
作者: luoluoluo136    时间: 2016-5-10 17:26
丶盗版哥 发表于 2016-5-10 10:28
谢谢,也就是说假设我定义uchar型,到255之后就归零了是吧。

对的~不客气,以后提问题尽量提清楚点吧。。。像这个这样,你要说明一下你的aa的类型,我们才好帮助你嘛
作者: ahshmj    时间: 2016-5-10 18:22
仅凭这一点程序看不出来。不知道你的这个“aa”是做什么用?

既然是在中断程序内,应该是计中断次数的。如果(仅仅是如果)是做时钟,假设是12M晶振,那么计数到20可以复位到0,秒加1.
作者: zl2168    时间: 2016-5-11 10:38
你们讨论这个问题的前提是aa必须是全局变量,否则中断结束,aa单元被释放,就没有了。2016-5-9我的帖子已经说明了。
作者: zl2168    时间: 2016-5-11 10:40
没有了,就是复0了。你查找一下,是不是这个问题?
作者: 丶盗版哥    时间: 2016-5-13 11:54
感谢感谢
作者: huwei1314520    时间: 2016-5-13 18:37
计数到TH0和TL0组合的数为65535时置零




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1