首页 | 供应信息 | 采购信息 | PDF资料 | 技术资料 | 行业资讯 | 产品展示 | 人才市场 进入会员区
   技术文章分类:单片机/DSP 嵌入式系统 测试仪表 电源技术 接口电路 存储器 传感与控制 通信网络 无线通信 模拟技术 显示与光电 EDA/PLD 汽车电子 消费电子 电子综合
   电子综合工具:PDF资料大全 电子缩略语 IC型号替换 IC厂家 电子电路图 技术参数 设计应用 解决方案
技术资料 行业资讯 PDF资料 IC价格 IC替换 缩略语 IC供应 IC采购
  您所在的位置: IC37首页 > 技术问答 > 单片机 > 请教各位一个变量赋值的问题

  请教各位一个变量赋值的问题 

/ ADC end-of-conversion ISR

// Here we take the ADC sample, add it to a running total <accumulator>, and

// decrement our local decimation counter <int_dec>.When <int_dec> reaches

// zero, we calculate the new value of the global variable <result>,

// which stores the accumulated ADC result.

//

void ADC_isr (void) interrupt 15

{

static unsigned int_dec=256;// integrate/decimate counter

// we post a new result when

// int_dec = 0

static long accumulator=0L;// heres where we integrate the

// ADC samples

ADCINT = 0;// clear ADC conversion complete

// indicator

accumulator += ADC0;// read ADC value and add to running

// total

int_dec--;// update decimation counter

if (int_dec == 0) {// if zero, then decimate

int_dec = 256;// reset counter

result = accumulator >> 4;// Shift to perform the divide operation

accumulator = 0L;// dump accumulator

}

}

我的问题是:int_dec 和 accumulator 这两个变量的赋值是不是应该放在中断服务程序的外面?


作者:不辣的皮特  2005-1-13 9:49:00

  回复1  没人回答我39516

没人回答我
作者:不辣的皮特  2005-1-13 12:07:00

  回复2  一个变量声明为静态变量时,如果有初始化,则初始化只执行一次39517

放在外边,就是全局变量。

放在里边,就是局部变量。

一个变量声明为静态变量时,如果有初始化,则初始化只执行一次。

这个在普通函数里是这样规定的。

在中断服务函数里,是否是这样,我就不清楚了。

我想应该是一样的吧。


作者:computer00  2005-1-13 12:34:00

  回复3  不会吧?39518

那里可以找到这方面的详细介绍呢?


作者:不辣的皮特  2005-1-13 13:24:00

  回复4  看C语言的书39519

如果每次都重新初始化,那就失去了静态变量的意义了。


作者:computer00  2005-1-13 13:34:00

  回复5  very good39520

very good
作者:lovehefeng  2005-1-13 13:37:00

  回复6  感谢39521

感谢
作者:不辣的皮特  2005-1-13 18:00:00

  回复7  computer00说的是正确的,但要补充些才完善39522

如果 int_dec 和 accumulator 只在这个函数中用到,则就应该放在内部(这是规矩);如果还有其它程序也要用到,则就要放在外部,中断服务程序内用到的还要声明为volatile属性。

中断服务函数与普通函数是一样的。


作者:李冬发  2005-1-13 18:20:00

  回复8  谢谢 李先生 的指点39523

谢谢 李先生 的指点
作者:不辣的皮特  2005-1-13 23:26:00


我要投稿 注册会员
客服咨询热线:0755-26000950 0755-26007355
 相关技术问答
·请人开发项目,有意者请进(..  2005-1-12
·IC卡插反,程序就死  2005-1-12
·干扰,不知道什么地方的干扰..  2005-1-12
·还望大侠帮忙  2005-1-12
·CPLD是否能代替一个4-..  2005-1-12
·help  2005-1-12
·一百脚多的CPLD如何焊接..  2005-1-12
·可以在线修改的数据该放在哪..  2005-1-12
·在线编程isp期间,89s..  2005-1-13
·小女子刚搞单片机,又有问题..  2005-1-13
·哪种单片机可以用串口下载程..  2005-1-13
·4×4的键盘扫描的问题  2005-1-13
·[原创]《会8051,就会..  2005-1-13
·有可以替换62256的3V..  2005-1-13
·求助:寻求带标准16C55..  2005-1-13
·伟福仿真器出现这样的问题,..  2005-1-13
·我的数字钟程序,请指点其中..  2005-1-13
·单片机学习计划(请指教)  2005-1-13
·谁开发过epson c41..  2005-1-13
·各位高手帮忙推荐一下适合做..  2005-1-13
 
 热门IC
L9790  XC95288XV-6PQ208C  LTC4061EDD-4.4  MAX521BCAG  L6911DTR  HD64950CP  KM424C257Z-6  SN74AS250ANT  LPC47N227  AS7C1025-15JC  CSM11349AN  FA7616N  MB4108A  MC10EP116FA  GBU8G  XCV600E-8HQ240C  ADS5204IPFB  TAPC64013ABLL3A  S87C196MH  XC9536-PC44  LH5164D-10L  MAX1791EUB  IDT7007L25PF  HFBR-1414  ADP3415LRM-REEL  MC14LC5447ADWR2  UPD1913C  1N4728A  NC7SV57P6X  J392  E6V1S3  HD74LVC74FPEL  TS80C51RA2-MCB  PVA3054N  AN6383SB  RTL8110SBL  AT25640N-10SC-2.7  DBL339  HD74LS192P  M25P10-AVMN6T  SP204ET  L78M05ABDT-TR  MC74HC541ADW  BA6772FS  TLC876IDW  IRU1117CD  IMZ1  UPC1881CT  EL2142CN  HCF4040BE