c51编程左移和右移
答:>>=、<<=是标准的C语言操作符。不仅限于使用在C51中。其中:>>=是右移等操作符,比如a>>=1可以理解为a=a>>1,即将变量右移一个位数后的结果再赋值给a <<=是左移等操作符,比如a<<=1可以理解为a=a>>1,即将变量右移一个位数后的结果再赋值给a.左移和右移是针对数的二进制来操作的:...
答:C51单片机的循环左移函数是,_crol_(变量名,n),循环右移函数是,_cror_(变量名,n),函数中的“循环”是指变量的8位二进制数依次向左移一位,或向右移一位。你比如的,取8位数,让1111 1110循环左移一位,就是在1111 1110、1111 1101、1111 1011、1111 0111、1110 1111,等等,每移位一次,...
答:左移函数_crol_();右移函数_cror_();这两指令都在头文件<intrins.h>
答:delay02s( ); // 延时0.2s j= j<<1; // 左移1位 } j=0x80; // 设置右移初始值j为0x80 for (i=0;i<8;i++){ P1= ~ j;delay02s( );j= j>>1; // 右移1位 } } }
答:<< 符号表示左移,最高位进入进位标志C,也就是下面用到的CY 这一段程序的主要功能就是将一个8位数变为串行方式发送出去,每次循环依次把TEMP中的各位从高到低发送,其中利用了进位标志来暂存最高位
答:单片机右移分为算术右移和逻辑右移。(左移没有这个问题,0x01<>"解释成算术右移,即最高位是符号位(0x80最高位正好是1),保持不变。最后导致结果不对。led要定义为unsigned char就应该也对了。
答:acc<<1因该是循环左移,包括:循环中不含标志位C的左移或右移和循环中包含C的左移或右移操作。不包含:那就是0001,0011即0x13 包含:那首先要知道进位标志C是几:如果是1:0001,0011即0x13 如果是0:0001,0010即0x12 取最高位问题:一个8bit的二进制数与上1000,0000(你想任何数&0就是0...
答:6];void dischg(){uchar tmp;tmp=disdat[5]disdat[5]=disdat[4];disdat[4]=disdat[3];disdat[3]=disdat[2];disdat[2]=disdat[1];disdat[1]=disdat[0];disdat[0]=tmp;}void t0isr() interrupt 1//秒计时{TH0=0x3c;TL0=0xb0;time++;time%=2;if(time==0)dischg()...
答:void main(){ aa=0xde;while(1){ P1=aa;delayms(500);aa=aa<<1; //右移一位,移8次出去,还在往右移动,都移动出界了哈哈!} } 在程序里面写个判断语句移动完成后,在从新开始移动程序如下:int main(void){ aa=0xde;while(1){ P1=aa;delayms(500);aa=aa<<1;if(P1 == 0x00)...
答:给个四路:定意一个变量;if(按键1按下)变量为1;if(按键2按下)变量为2;if(变量==1){ 左移控制;} else if(变量==2){ 右移控制;}
网友评论:
孟须15271972365:
关于c51的 左移右移 -
36158任婵
: P0=P0>>1等于P0>>=1.用>>=简写一个变量,简化程序.警告可能多了不必要的东西,
孟须15271972365:
C51中循环左移右移什么指令 -
36158任婵
: 左移函数_crol_(); 右移函数_cror_(); 这两指令都在头文件<intrins.h>
孟须15271972365:
C程序中,左移“<<”、右移“>>” 的具体用法是什么? -
36158任婵
: C语言中,“<<”为左移运算符,“>>”为右移运算符. 具体使用方法如下: 1、左移运算符(<<)将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0).例:a = a << 2 将a的二进制位左移2位,右补0,左移1位后a = a * 2;若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2.2、右移运算符(>>)将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃.操作数每右移一位,相当于该数除以2.例如:a = a >> 2 将a的二进制位右移2位. 左补0 or 补1 得看被移数是正还是负.
孟须15271972365:
C51的编程中 CY = ACC & 0x80怎么理解 -
36158任婵
: 带CY位的循环左移ACC & 0x80 CY(保存ACC的最高位) 0XXXXXXX 10000000 01XXXXXXX 10000000 1 CY = ACC & 0x01;表示带CY位的循环右移ACC & 0x01 CY(保存ACC的最低位)XXXXXXX0 00000001 0XXXXXXX1 00000001 1
孟须15271972365:
单片机c51流水灯一亮一闪依次左移编程 -
36158任婵
: 下面是采用定时器定时1S(时钟晶振是11.0592MHz)的流水灯程序.采用左移函数_crol_(),此函数包含在intrinsic.h的头文件内.有不懂得再问,需要汇编的话,留言,再写给你. #include<reg52.h> #include<intrins.h> unsigned int a,temp; ...
孟须15271972365:
如何用C51单片机实现P0口接两个按键,P1口接8个LED灯.key1按下左移动1位点亮LED key2按下右移动1位点LED -
36158任婵
: 给个四路: 定意一个变量; if(按键1按下)变量为1; if(按键2按下)变量为2;if(变量==1) {左移控制; } else if(变量==2) {右移控制; }
孟须15271972365:
关于C语言的左移(<<)和右移(>>) -
36158任婵
: 左移比较简单,右边补0(移几位就补几个0),左边丢掉. 右移比较复杂,右移分两种: (1)逻辑右移,左边补0(移几位补几位),右边移出去的丢掉. (2)算术右移,左边补最高位(即原来的最高位是0就补0,是1就补1,因为最高位代表符号,这样可以保证负数不会变成正数),右边丢掉.
孟须15271972365:
在PLC程序中移位,循环移位,还有什么左移,右移的,是什么意思哦 -
36158任婵
: 这些移位指令用来实现对一个状态字或双字进行移位操作,就是将输入的内容向右或向左逐位移动,循环移位指令是将输入参数的内容循环的向左或向右移动,空出的位用输入参数移出的位来填补.应用上举个例子: 轮流点亮灯 用1代表点亮,用0代表熄灭. 首先点亮第一个灯, 1.00000001 现在点亮第二个,用循环右移指令后: 2.00000010 反复执行就可以了
孟须15271972365:
51单片机如何在一个工程中同时加入循环左移和循环右移, -
36158任婵
: 这个问题很简单,因为循环左移和循环右移并不相互排斥,可以单独存在,不仅仅在一个工程中,在用一个文件或者同一个程序段中都是可以的.比如. #include<reg51.h> #include<intrins.h> void delay(int a) { int i,j; for(i=0;i<a;i++) for(j=0;j<110;j++); } main() { unsigned char led1=0xfe,led2=0x7f; while(1){P0=_crol_(led1); P1=_cror_(led2); delay(100); }}