单片机静态局部变量的使用方法.doc

上传人:白大夫 文档编号:3398579 上传时间:2019-08-21 格式:DOC 页数:4 大小:19.50KB
返回 下载 相关 举报
单片机静态局部变量的使用方法.doc_第1页
第1页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机静态局部变量的使用方法.doc》由会员分享,可在线阅读,更多相关《单片机静态局部变量的使用方法.doc(4页珍藏版)》请在三一文库上搜索。

1、单片机静态局部变量的使用方法上程序:main.c#include#include “Timer.h”/*P1口低有效*/void main(void)init();/中断初始化while(1)TImer.h#ifndef _TIMER_H_#define _TIMER_H_extern void init(void);#endifTImer.c#includeint k=0;/占空比unsigned int count=0;/计数unsigned int BOOL=0;/由暗到亮,BOOL=1,由亮到暗#define max 99#define min 0#define led_state P

2、1void init(void)TMOD=1; /定时器0,工作方式1TH0=0xff; /装入初值200usTL0=0x47;TR0=1; /开始定时ET0=1;EA=1;/CPU开放中断void inter(void) interrupt 1static int temp_k=0;/*如果定义成局部变量,则必须定义成静态局部变量,静态局部变量是在编译时赋初值的,只赋初值一次,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。*/TH0=0xff;TL0=0x47;if(+count=100) /0-99次不成立,共100次count=0;if(k=max)k+;if(kma

3、x)BOOL=1;k=max;if(k=min)k-;if(kBOOL=0;k=min;temp_k=k;if(temp_k0)led_state=0x00;temp_k-;elseled_state=0xff;备注:C程序设计教程 谭浩强 P171-174仔细看看关于静态局部变量几点注意:1.静态局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值;2.静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,占动态存储区空间而不占静态

4、存储区空间,函数调用结束后即释放;3.对静态局部变量是在编译时赋初值的,即只赋初值一次。自动变量赋初值是在函数调用时进行,每调用一次函数,重新给次初值;4.如果定义局部变量时不赋初值的话,则对静态局部变量编译时自动赋初值0(对数值型变量)或空字符(对字符型变量),而自动变量如不赋初值,则它的值是不确定的;5.静态局部变量在函数调用结束后仍然存在,但是其它的函数不能引用它。因为他是局部变量,只能被本函数引用;6.三种局部变量存储位置不一样:自动变量存储在动态存储区,静态局部变量存储在静态存储区,寄存器变量存储在CPU的寄存器中。需要用到静态局部变量的情况:1.需要保留函数上一次调用结束时的值;2.如果初始化后,变量只被引用而不改变其值,则这时用静态局部变量比较方便,以免每次调用时重新赋值。三种局部变量:auto变量static局部变量register变量

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1