打印

请各位讲解一下,这个变量t是什么状态?!

[复制链接]
1583|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gomcu|  楼主 | 2009-5-1 20:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近买了块板子在学习单片机,有一些细节不明白,望高人指点迷津!

其中
static unsigned char t;  // 请各位大虾看看,此时t的初值是多少?小弟不明白为什么是0,还是其他的值。


程序如下:

#include <reg52.h>  

sbit P00 = P0^0; 
sbit P01 = P0^1; 
sbit P02 = P0^2; 
sbit P03 = P0^3; 
sbit P04 = P0^4;
sbit P05 = P0^5;
sbit P06 = P0^6;
sbit P07 = P0^7;

bit ldelay=0;

void main(void)    // 主程序
{
unsigned char code ledp[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char ledi;        
RCAP2H =0x10; 
RCAP2L =0x00;    
TR2=1;      
ET2=1;    
EA=1;             
   while(1)  //主程序循环
   {        
    if(ldelay)     
      {
       ldelay=0;   
      P0=ledp[ledi];    
      ledi++;        
      if(ledi==9)ledi=0;    
      }
    }
}

timer2() interrupt 5  
{
static unsigned char t;  // 请各位大虾看看,此时t的初值是多少?小弟不明白为什么是0

TF2=0;            
t++;     
   {
   t=0;    
   ldelay=1;
    }
}

相关帖子

沙发
mugenwon| | 2009-5-4 16:52 | 只看该作者

个人意见

我是绝对不会这么搞的。静态变量我不会放在函数里面声明。而且这里t一点意义也没有。t++,然后又变成0,管它静态不静态还是哪里声明,就是个无用的东西!

使用特权

评论回复
板凳
九浩| | 2009-5-4 17:27 | 只看该作者

个人见解

t 没有自己定义初值,默认是0,你可尝试定义static unsigned char t=5;
这时t初值就是5.

使用特权

评论回复
地板
python_k| | 2009-5-5 01:59 | 只看该作者

你的定时中断程序timer2中有个判断自加后的t值等于某个常数,然后触发隔t个定时中断后显示数码管或者LED显示。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

11

帖子

0

粉丝