单片机中unsigned char 和unsigned int的区别

时间:2013.06.04 发布人:zhjq2866

单片机中unsigned char 和unsigned int的区别

已解决问题

谷歌zhjq2866用户在2013.06.04提交了关于“骐达单片机中unsigned char 和unsigned int的区别”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-11-13T10:23:40。#include<reg52.h>
#include<intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
voiddelay(ucharz);
ucharprem;
voidmain()
{
prem=0xfe;
P0=prem;
while(1)
{
prem=_cror_(prem,1);
delay(100);
P0=0XFF;
delay(100);
P0=prem;
}

}
voiddelay(ucharz)
{
uinti,j;
for(i=z;i>0;i--)
for(j=100;j>0;j--);
}
在这个程序中把下面的delay函数中的uint改成uchar有很大区别,为什么?希望大家能够帮助她。

详细问题描述及疑问:#include<reg52.h>
#include<intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
voiddelay(ucharz);
ucharprem;
voidmain()
{
prem=0xfe;
P0=prem;
while(1)
{
prem=_cror_(prem,1);
delay(100);
P0=0XFF;
delay(100);
P0=prem;
}

}
voiddelay(ucharz)
{
uinti,j;
for(i=z;i>0;i--)
for(j=100;j>0;j--);
}
在这个程序中把下面的delay函数中的uint改成uchar有很大区别,为什么?期待您的答案,谢了,下次有事儿别忘了找我 !

希望以下的回答,能够帮助你。

第1个回答

用户名:19990331215问答909aiau  

说起这个来要扯出来的东西就比较多了。uchar是一个8位无符号数,表示范围0诗夫强黄另纪植到255,而uint是十六位无着符号数,表示范围0到65535.但是要注意的是8位单片机当中字宽仅有8位,如果用keil编译器的话,假如采用uchar类型**,它会给你分配一个寄存器(8位);但是如果采划字审志精占城苗谈用uint的话,必须要两个寄存器才能完全表达**的大小。单片机从寄存器取操作数,你说哪个更快一些?当然十六位的数是如何进行操作数寻址如果用C的话其实关心必要性不大~
OK?