1. 單片機指令RLC A帶進位的循環轉移,怎麼進位呀進位進到哪裡去呀可以舉一個例子嗎
先看 RL A,這條指令只是把 A 中的八位數,循環左移。
再看 RLC A,這條指令把 A 中的八位數,以及C,共九位數,循環左移。
例如:C = 1,A = 0011 0000,執行RLC A 後:
A 中的最高位 0,移到C;C 中原來的 1,移到 A 的最低位。
結果:C = 0,A = 0110 0001。
------------------
如果執行 RL A,則僅有 A 循環移位,C 就不變了。
結果:C = 1,A = 0110 0000。
2. 單片機循環移位指令中A=7AH,CY=1,執行指令RLC A,結果是怎麼算的
首先,RLC表示A帶進位標志(CY)循環左移一次,相當於乘以2;
進位標志CY=1,則A=7AH=123D(十進制的123)的帶進位標志用二進製表示為1 0111 1010 ,將其整體左移一位(就像是排頭走到最後一個,其他8個依次補位),
變為0 1111 0101,即十六進制的F5H=246D(即十進制的246),此時,第一個數 0 就是進位標志,即CY=0
所以,執行後結果為,(A)=F5H,CY=0。F5H=246D=123D×2
3. 請問C51單片機的循環左移和循環右移函數中的「循環」是指什麼
C51單片機的循環左移函數是,_crol_(變數名,n),循環右移函數是,_cror_(變數名,n),函數中的「循環」是指變數的8位二進制數依次向左移一位,或向右移一位。
你比如的,取8位數,讓1111 1110循環左移一位,就是在1111 1110、1111 1101、1111 1011、1111 0111、1110 1111,等等,每移位一次,8位數向左或向右移一位。繼續移位,就會循環重復的。
4. 51單片機C語言如何實現8個流水燈左移三次,後右移三次;如此循環
51單片機C語言實現循環8個流水燈左移三次,後右移三次。
常式:
#include<reg51.h>//51單片機頭文件
#include<intrins.h>//包含有左右循環移位子函數的庫
#defineuintunsignedint//宏定義
#defineucharunsignedchar//宏定義
sbitbeep=P2^3;
voiddelay(uintz)//延時函數,z的取值為這個函數的延時ms數,如delay(200);大約延時200ms.
{//delay(500);大約延時500ms.
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidmain()//主函數
{
uchara,i,j;
while(1)//大循環
{
a=0xfe;//賦初值
for(j=0;j<3;j++)for(i=0;i<8;i++)//左移三次
{
P1=a;//點亮小燈
beep=0;//開啟蜂鳴器
delay(50);//延時50毫秒
beep=1;//關閉蜂鳴器
delay(50);//再延時50毫秒
a=_crol_(a,1);//將a變數循環左移一位
}
a=0x7f;
for(j=0;j<3;j++)for(i=0;i<8;i++)//右移三次
{
P1=a;//點亮小燈
beep=0;//開啟蜂鳴器
delay(50);//延時50毫秒
beep=1;//關閉蜂鳴器
delay(50);//再延時50毫秒
a=_cror_(a,1);//將a變數循環右移一位
}
}
}
51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8031單片機,後來隨著Flash rom技術的發展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。
5. 單片機循環移位C語言,即讓如將二進制數,形如:(ABCD EFGH),移位後變為(HGFE DCBA)
你這個雖然有規律,屬於鏡像交換,簡單移位做不到。
下面用old代表原數,new代表新數
char old,new;//定義兩個變數
old=原數; // 將ABCDEFGH賦給old;如:old=0xf0;
new=0;
for(i=0;i<8;i++)
{
new<<=1;
if((old&0x01)==0x01) new|=0x01;
old>>=1;
}
執行後新數new,就是你要的鏡像交換的數,這時new就等於HGFEDCBA
用心回答,望你採納。
6. 單片機循環左移
增加一個全局變數,將循環常數給變數,再對變數做左循環,將變數賦值給P0,
uchar a,b, c;
在主循環中P0=_crol_(P0,1); //P0的值向左循環移動
修改為
c=_crol_(c,1); //P0的值向左循環移動
P0=c;