单片机中为什么 void delay(uchar z) 与void delay(uint z)延时时间不同

#define uint unsigned int #define uchar unsigned char void delay(uchar z) { uchar x,y; for(x=z;x>0;x--) for(y=110;y>0;y--)} void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--)} 为什么延时时间相差很大
最新回答
西柚

2024-12-01 07:05:32

因为形参变量类型不同,UINT需要占用两个8位(16位)内存空间,而
51单片机
只能进行8位运行,对于16位的数没有直接可用的指令,需要一段不小的程序来处理,所以花费时间就长了。
安非他命

2024-12-01 10:31:39

当然不同,unsigned
char
z
这里是字符型变量,编译成执行代码后,代码量较小,执行时间相应要小。unsigned
int
z
这里是整型量,编译成执行代码后,代码量要长不少,执行时间当然要长不少了。
四月的杨柳

2024-12-01 16:43:47

unsigned
int
和unsigned
char
的变量分配地址空间不一样,虽然执行一样代码过程。当然时间会有差别。
浮世

2024-12-01 08:56:08

你定义的
uchar
是字符变量
最大只能到
255,超出部分就会溢出,而舍去,,不过你要是在255ms以内延时的话,,这两个都对,,要是超过255ms,就要使用第二个了!!!