• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

关于中断问题

wanyanfei1984 2018-07-31 浏览量:885
在中断学习中遇到这么一段:
void Timer0() interrupt 1
{
	static u16 i;
	TH0=0XFC;	//给定时器赋初值,定时1ms
	TL0=0X18;
	i++;
	if(i==1000)
	{
		i=0;
		Second ++;	
	}	
}

想知道这个static定义的i有什么特别的用途??能不能不定以为静态变量?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • static就是静态的意思,如果将这里的static去掉,每次进入该中断时i=0然后加加=1,出中断时i的内存被释放就不存在了,所以你的i永远不会被加到1000,也就是说秒不会加1.

    static的作用就是让i在执行完中断后内存不会被释放

    • 发布于 2018-07-31
    • 举报
    • 评论 0
    • 3
    • 0

其他答案 数量:6
  • 设置为全局变量也是可以的,目的都是让这个计数值能保持。
    • 发布于2018-07-31
    • 举报
    • 评论 0
    • 0
    • 0

  • static的意义是当这个服务函数注销时static变量的值保留,就只有这个功能。
    • 发布于2018-07-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个static的意思就是每次执行这个函数的时候定义的变量不会清0,用处是每次进Timer0这个函数时i都会++,直到1000
    • 发布于2018-08-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个就是静态局部变量,主要是在退出函数的时候保留原来的数值
    • 发布于2018-08-07
    • 举报
    • 评论 0
    • 0
    • 0

  • static变量在函数回收的时候不会清零,会一直保留,也就是这个i在中断响应的时候都会++一次,知道1000再清零。

    • 发布于2018-08-25
    • 举报
    • 评论 0
    • 0
    • 0

  • static表示你的这个变量会一直在内存中不会清零,每次读取都是上一次的值
    • 发布于2018-08-25
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

关于中断问题