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

[复制链接]
2626|3
 楼主| gomcu 发表于 2009-5-1 20:50 | 显示全部楼层 |阅读模式
最近买了块板子在学习单片机,有一些细节不明白,望高人指点迷津!<br /><br />其中<br />static&nbsp;unsigned&nbsp;char&nbsp;t;&nbsp;&nbsp;//&nbsp;请各位大虾看看,此时t的初值是多少?小弟不明白为什么是0,还是其他的值。<br /><br /><br />程序如下:<br /><br />#include&nbsp;&ltreg52.h&gt&nbsp;&nbsp;<br /><br />sbit&nbsp;P00&nbsp;=&nbsp;P0^0;&nbsp;<br />sbit&nbsp;P01&nbsp;=&nbsp;P0^1;&nbsp;<br />sbit&nbsp;P02&nbsp;=&nbsp;P0^2;&nbsp;<br />sbit&nbsp;P03&nbsp;=&nbsp;P0^3;&nbsp;<br />sbit&nbsp;P04&nbsp;=&nbsp;P0^4;<br />sbit&nbsp;P05&nbsp;=&nbsp;P0^5;<br />sbit&nbsp;P06&nbsp;=&nbsp;P0^6;<br />sbit&nbsp;P07&nbsp;=&nbsp;P0^7;<br /><br />bit&nbsp;ldelay=0;<br /><br />void&nbsp;main(void)&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;主程序<br />{<br />unsigned&nbsp;char&nbsp;code&nbsp;ledp[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};<br />unsigned&nbsp;char&nbsp;ledi;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />RCAP2H&nbsp;=0x10;&nbsp;<br />RCAP2L&nbsp;=0x00;&nbsp;&nbsp;&nbsp;&nbsp;<br />TR2=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />ET2=1;&nbsp;&nbsp;&nbsp;&nbsp;<br />EA=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;while(1)&nbsp;&nbsp;//主程序循环<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(ldelay)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldelay=0;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P0=ledp[ledi];&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ledi++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ledi==9)ledi=0;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />timer2()&nbsp;interrupt&nbsp;5&nbsp;&nbsp;<br />{<br />static&nbsp;unsigned&nbsp;char&nbsp;t;&nbsp;&nbsp;//&nbsp;请各位大虾看看,此时t的初值是多少?小弟不明白为什么是0<br /><br />TF2=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />t++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;t=0;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;ldelay=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}
mugenwon 发表于 2009-5-4 16:52 | 显示全部楼层

个人意见

我是绝对不会这么搞的。静态变量我不会放在函数里面声明。而且这里t一点意义也没有。t++,然后又变成0,管它静态不静态还是哪里声明,就是个无用的东西!
九浩 发表于 2009-5-4 17:27 | 显示全部楼层

个人见解

t&nbsp;没有自己定义初值,默认是0,你可尝试定义static&nbsp;unsigned&nbsp;char&nbsp;t=5;<br />这时t初值就是5.
python_k 发表于 2009-5-5 01:59 | 显示全部楼层

你的定时中断程序timer2中有个判断自加后的t值等于某个常数,然后触发隔t个定时中断后显示数码管或者LED显示。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部