标题:
请教单片机带参函数,参数超出数字范围的结果
[打印本页]
作者:
s08c820
时间:
2018-1-18 19:39
标题:
请教单片机带参函数,参数超出数字范围的结果
#include <reg52.h> //52系列单片机头文件
下面这个简单程序,延时函数的参数设置超过无符号整型0-65535的范围后,在单片机执行结果是led小灯一直亮,keil无报错。这是怎么回事??
#define uint unsigned int //宏定义
sbit led1=P1^0; //声明单片机P1口的第一位
void delayms(uint); //声明子函数
void main() //主函数
{
while(1) //大循环
{
led1=0; /*点亮第一个发光二极管*/
delayms(200); //延时200毫秒
led1=1; /*关闭第一个发光二极管*/
delayms(800); //延时800毫秒
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}
作者:
yzwzfyz
时间:
2018-1-18 20:48
对KELL来说它并不知道人的想法,当你给它规定0-65535时,它就开出两个字节来存入这个数,你硬件要把999999往里放,多出的部分只能被丢掉,放进去的只能是 9999999 MOD 65536
作者:
wulin
时间:
2018-1-18 21:21
在这里如果数值大于65536实际得到的数是该数值除以65536的余数,0xffff+1实际等于0,由于你这个数值超出65536不多,LED熄灭时间很短,肉眼观察不出来,所有就认为LED常亮。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1