標(biāo)題:
請(qǐng)教單片機(jī)帶參函數(shù),參數(shù)超出數(shù)字范圍的結(jié)果
[打印本頁]
作者:
s08c820
時(shí)間:
2018-1-18 19:39
標(biāo)題:
請(qǐng)教單片機(jī)帶參函數(shù),參數(shù)超出數(shù)字范圍的結(jié)果
#include <reg52.h> //52系列單片機(jī)頭文件
下面這個(gè)簡單程序,延時(shí)函數(shù)的參數(shù)設(shè)置超過無符號(hào)整型0-65535的范圍后,在單片機(jī)執(zhí)行結(jié)果是led小燈一直亮,keil無報(bào)錯(cuò)。這是怎么回事??
#define uint unsigned int //宏定義
sbit led1=P1^0; //聲明單片機(jī)P1口的第一位
void delayms(uint); //聲明子函數(shù)
void main() //主函數(shù)
{
while(1) //大循環(huán)
{
led1=0; /*點(diǎn)亮第一個(gè)發(fā)光二極管*/
delayms(200); //延時(shí)200毫秒
led1=1; /*關(guān)閉第一個(gè)發(fā)光二極管*/
delayms(800); //延時(shí)800毫秒
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延時(shí)約xms毫秒
for(j=110;j>0;j--);
}
作者:
yzwzfyz
時(shí)間:
2018-1-18 20:48
對(duì)KELL來說它并不知道人的想法,當(dāng)你給它規(guī)定0-65535時(shí),它就開出兩個(gè)字節(jié)來存入這個(gè)數(shù),你硬件要把999999往里放,多出的部分只能被丟掉,放進(jìn)去的只能是 9999999 MOD 65536
作者:
wulin
時(shí)間:
2018-1-18 21:21
在這里如果數(shù)值大于65536實(shí)際得到的數(shù)是該數(shù)值除以65536的余數(shù),0xffff+1實(shí)際等于0,由于你這個(gè)數(shù)值超出65536不多,LED熄滅時(shí)間很短,肉眼觀察不出來,所有就認(rèn)為LED常亮。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1