導航:首頁 > 操作系統 > 單片機c語言移位

單片機c語言移位

發布時間:2022-12-29 03:38:59

單片機C語言流水燈移位指令

//沒有編譯過,大概思路就這樣
#define P_LED P1; //定義到你自己的埠

void main(void)
{
unsigned char circledata=0x01,i=0;
while(1)
{
for(i=0;i<4;i++) //顯示範圍 P_LED.0:P_LED3
{
P_LED=circledata<<i;
Delay_ms(1000);//根據自己的晶振寫延時1S的函數
}
circledata=0xfe;
for(i=3;i>=0;i--) //顯示範圍 P_LED.3:P_LED.0
{
P_LED=circledata<<i;
Delay_ms(1000);//根據自己的晶振寫延時1S的函數
}
}
return;
}

⑵ 請教單片機c語言移位問題

移位分為左移位和右移位,看你的系統精度,就是操作數是幾位的,通常案例計算是以8位較多,按左右方向移動數字,不夠的位數補上0就OK了。

⑶ 單片機 移位操作 右移 C語言

C51系列單片機中_crol_指令是循環左移函數,_cror_是循環右移函數,這是51中特有的指令,別的類型單片機就不能使用了。易於程序的移植和通用性考慮個人比較推薦用<< 左移, 右移>>這兩個C中的移位符號。

⑷ 單片機 移位操作 右移 C語言

先說第一個問題:
比如用查表法將結果保存到變數i中,查表變數為x,則i=table[x],記住c語言裡面數組是從0開始的,比如說上面的0x01就是table[0],0x02是table[1],以此類推。
再說第二個問題:
比如說從p1.0口發送出去,則可以寫為
sbitout=p1^0;//定義out為p1.0口,這樣今後好寫程序
chari;
for(i=0;i<8;i++)
{
out=data&0x80;//因為高位在前,將它寫成二進制就明白了
data<<=1;
}
上面的程序就能搞定了;
應該是所有的單片機都有cy位(不知道浮點dsp有沒有);
c語言中左移和右移之後低位或高位自動補零,cy位也保持為零(視編譯器而定,這個得看編譯器手冊),有些編譯器提供了循環移位的函數;
還有什麼不明白的補充問題就是

⑸ 單片機循環移位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
用心回答,望你採納。

⑹ 單片機C語言右移指令怎麼用

用這種移位語句,就是這種結果。
你試試:_crol_()和_cror_()移位函數。
需要先加上頭文件:
#include<intrins.h>

⑺ 用單片機移位實現,該怎麼寫程序啊,用C語言,主要是移位部分不會寫

這個就是跑馬燈程序嘛,你看看 我寫的:
#include <REGX52.H>
#include <intrins.H> 這個是調用單片機頭文件裡面的函數,你自己查查書籍啊,要調用的話就要寫這個頭文件 本程序 調用的移位函數啦 就是左右移動函數
#define uchar unsigned char
#define uint unsigned int
uchar aa ;
void delay(uint z ) //延時程序,延時准確為1MS;
{

uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--) ;

}
void main()
{

uint i,j;
while(1)
{

aa=0xfe;因為要亮一個燈撒 所以就是1111 1110呀 這就是0xfe的含義啊
for(i=8;i>0;i--) //左移程序
{
P2=aa;
delay(500) ;
aa=_crol_(aa,1);這個就是調用函數的使用方法,這個是左移動一位,意思是把aa左移一位 在賦值給aa哦,這樣再P2=aa;不就把移動的數據傳到P2口了嗎,懂了吧

}
aa=0x7f;這個因要亮一個等 也是一樣的道理0111 1111是吧 就是0x7f 啦
for(i=7;i>0;i--) //右移程序
{
P2=aa;
delay(500) ;
aa=_cror_(aa,1);這里用法還是與左移動一樣的道理 ,
}
}
}

⑻ 單片機程序中數組中的值怎麼實現位左(右)移(C語言)

data
=
nBitmapDot[i]
>>
1;
//
nBitmap[i]右移一個二進制位,與
data
=
nBitmapDot[i]
/
2;
同效。
data
=
nBitmapDot[i]
<<
1;
//
nBitmap[i]左移一個二進制位,與
data
=
nBitmapDot[i]
*
2;
同效。
要說明的是移位操作(<<

>>)效率更高。

⑼ 單片機 移位操作 右移 C語言

aa=_crol_(aa,1); //左移一位
aa=_cror_(aa,1); //右移一位

可以打開:intrins.h,查看。

⑽ C語言和單片機中的左移右移

# include "reg51.h" // 包含頭文件
#define uchar unsigned char
void delay02s(void) // 延時0.2s子程序
{
unsigned char i,j,k;
for ( i=2;i>0;i-- )
for (j=200;j>0;j-- )
for (k=250;k>0;k-- );
}

void main (void) // 主函數
{
uchar i,j;
while (1) // 死循環
{
j=0x01; // j初始化為0x01,左移初始值
for(i=0;i<8;i++) // for循環語句,完成8個循環
{
P1= ~ j; // 對變數j 中的值按位取反後,從P1口輸出
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語言移位相關的資料

熱點內容
冒險島什麼伺服器好玩 瀏覽:541
如何在伺服器上做性能測試 瀏覽:791
命令序列錯 瀏覽:257
javaif的條件表達式 瀏覽:576
手機app上傳的照片怎麼找 瀏覽:531
雲伺服器面臨哪些威脅 瀏覽:746
c語言各種編譯特點 瀏覽:177
路由器多種加密方法 瀏覽:604
程序員阻止電腦自動彈出定位 瀏覽:168
如何做伺服器服務商 瀏覽:761
su剖切命令 瀏覽:726
devc編譯背景 瀏覽:211
學習單片機的意義 瀏覽:51
音頻演算法AEC 瀏覽:911
加密貨幣容易被盜 瀏覽:82
蘋果平板如何開啟隱私單個app 瀏覽:704
空調壓縮機一開就停止 瀏覽:528
如何下載虎牙app 瀏覽:847
日語年號的演算法 瀏覽:955
dev裡面的編譯日誌咋調出來 瀏覽:298