#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uchar z);
uchar prem;
void main()
{
prem=0xfe;
P0=prem;
while(1)
{
prem=_cror_(prem,1);
delay(100);
P0=0XFF;
delay(100);
P0=prem;
}
}
void delay(uchar z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=100;j>0;j--);
}
在这个程序中把下面的delay函数中的uint改成uchar有很大区别,为什么?
改过之后delay函数不起作用了 为什么
在这个程序里范围未超啊,才100,而且为什么delay()里用的是uchar型,我用的是8052单片机
追答你这是在做流水灯吗?实际上我用仿真器仿真了一下,用uchar和uint还真相差不大。不过延时时间太短,假如12MHZ晶振,初步估算delay(100)延时仅82ms,视觉上是看不出来的。建议用delay(uint)的,且至少delay(1000)才能看出效果。
另外,在改下面的函数定义时void delay(uint z),不要忘了上面第五句函数说明也要改啊。只改下面,不改上面也会出现奇怪的现象。(呵呵,我一开始就犯了这个错)
上面我会说的是改i,j的数据类型,你把delay()里德数据类型改成uchar延迟时间就很长,改成uint数据类型后延迟时间就很短,你试试
追答那就对了,你改的是delay函数里的i,j的类型,那相差就远了。我仿真试一下,i,j用uchar,整个while循环约20ms,而i,j用unit,整个循环约80ms。
在双重循环
for(i=z;i>0;i--)
for(j=100;j>0;j--);
中,for(j=100;j>0;j--);循环体本身是空的,因此for(j=100;j>0;j--);运行的时间与j的类型就有很大的关系。而且这个for(j=100;j>0;j--)循环还要被运行100次。差不多就是这个原因啦。
单片机中unsigned char 和unsigned int的区别
不同的环境占得字节数可能不同;unsigned int是一个无符号整型数据,而unsigned char则是无符号字符型数据,他们在计算机里所占字节数和int,char完全一样;区别在于unsigned int 与int ( = signed int)型数据范围不同,
单片机中unsigned char 和unsigned int的区别
uchar是一个8位无符号数,表示范围0到255,而uint是十六位无符号数,表示范围0到65535.但是要注意的是8位单片机当中字宽仅有8位,如果用keil编译器的话,假如采用uchar类型数据,它会给你分配一个寄存器(8位);但是如果采用uint的话,必须要两个寄存器才能完全表达数据的大小。单片机从寄存器取操作...
单片机中unsigned char 和unsigned int的区别,做流水灯实验,延时函数问 ...
unsigned char,8位,最大值255,unsigned int,16位,最大值65535,j的最大值只有255,所以永远不会满足j<1827的条件,当然就一直循环不结束了。
...语言对于200这个数,unsigned char 与unsigned int 有什么区别?
单片机语言对于200这个数,unsigned char 与unsigned int 有什么区别?定义成前者,只用一个字节来存放200,而定义成后者,需要用2个字节存放。仅此而己。但是,在写程序时,如果变量小于256,最好定义成前者,这样,可以节省一个RAM单元。而定义成后者,因高8位(高位字节)是0,等于浪费一个RAM单元。因...
C语言 unsigned char 和unsigned int什么区别和联系?分别多少位?求简介...
unsigned char为无符号字符类型,而unsigned int为无符号整数类型。unsigned char为8位,多数情况下unsigned int为32位。但随系统的不同它的位数可能变化,有时是与系统位数对齐的,也就是说对8位的系统,它是8位,16位系统则为16位,32位的系统则为32位。
单片机编程中经常使用unsigned char这个数据类型?而且还用它来保持...
因为单片机的内存小, unsigned char是一个字节,int比前者占空间大,而很多情况下,一个字节来定义变量已经足够使用,比如只要变量大小在0~255之间时,用unsigned char占一个字节,用int虽然也可以囊括0~255,但是占的内存空间就很大。为了节约内存,所以就经常使用unsigned char ...
单片机的unsigned char jp()是什么意思?
单片机中unsigned char 与 unsigned int的区别如下: unsigned char 是无符号字符,数据长度是8位
keil编程时的unsigned int 跟unsigned char什么区别啊
没影响,但是我们一般在数值不超过65535的时候是用uchar型的,不然浪费存储空间.楼上的说的有错,uint型是占两个字节取值范围 0~65535,而不是四个字节.uchar 占一个字节 取值 0~255,
unsigned char,unsigned int ,char的区别
字节)int字节数因编译器不同而不同,可能是2B(TC),可能是4B(VC);char一般用来定义一个字符,实际上存储的是该字符的ASCII码,也可以表示一个数字,你可以用printf(“%d”,c);来输出字符c表示的ASCII码值;单片机c中,使用unsigned char可以减少内存消耗,因为单片机内存容量有限。
C语言中 unsigned char和unsigned int的区别
首先就是大小都不一样的啊。。int类型的值可以比char类型的值大的多的。。unsigned char只能到256,而unsigned int却可以达到65536的。。这是针对32位机来说。