導航:首頁 > 操作系統 > 單片機右移指令亮燈

單片機右移指令亮燈

發布時間:2022-06-30 02:14:23

① 怎麼控制51系列單片機流水燈先左移再右移最好有分析

#include<reg52.h>
#include <intrins.h> 頭文件
#define uchar unsigned char 宏定義
uchar a,b;
uchar b=1;
uchar a=0xfe; 變數定義和初始化
void main() 主函數
{
EA=1;IT1=1;ET0=1;中斷允許設置
TH0=-5000/256;
TL0=-5000%256; 賦值
TMOD=0x01;

TR0=1; 啟動
while(1); 等待中斷產生

}

void timer0(void) interrupt 1 using 1 中斷函數
{
TH0=-5000/256;
TL0=-5000%256; 重新賦值
b=b+1; 計算時間

if(b==40) 0.5秒時間到
{
b=0; 清0
P1=a; P1口賦值 0XFE 二進制11111110 也就是第一盞亮其他滅
a=_crol_(a,1); 庫函數實現循環
P1=a; 把循環後的值重新付給P1口
}
}
以上只是單方向的循環 還缺少延時函數 加在賦值後面
雙向循環 可以用左移右移指令
賦值 P1口 A=A<<1 循環左移一位 A=A>>1 循環右移一位

② 如何實現51單片機的按鍵k1按下,LED流水燈向右移動,按鍵k2被按下,LED流水燈向左移動

51單片機實現方法:

按鍵控制標志位flag取反。

然後把下面的代碼放到循環里:

U8 temp0 = 1。

U8 temp1 = 0x80。

U8 i = 0。

if(flag == 1)。

{。

for(i=0;i<8;i++)。

{。

P1=temp0<<i。

}。

}。

else。

{。

for(i=0;i<8;i++)。

{。

P1=temp1>>i。

}。

}。

}。

對控制LED口的寄存器進行位操作,按k1左移,按K2就是右移了。

51單片機是對兼容英特爾8051指令系統的單片機的統稱。51單片機廣泛應用於家用電器、汽車、工業測控、通信設備中。因為51單片機的指令系統、內部結構相對簡單,所以國內許多高校用其進行單片機入門教學。

51單片機的特點:

同樣的一段程序,在各個單片機廠家的硬體上運行的結果都是一樣的,如ATMEL的89C51(已經停產)、89S51,PHILIPS,和WINBOND等,我們常說的已經停產的89C51指的是ATMEL公司的AT89C51單片機。

同時是在原基礎上增強了許多特性,如時鍾,更優秀的是由Flash(程序存儲器的內容至少可以改寫1000次)存儲器取代了原來的ROM(一次性寫入),AT89C51的性能相對於8051已經算是非常優越的了。


③ 單片機中移位指令D1燈到D8燈依次點亮怎樣編程

#include<reg52.h>
#include <intrins.h>
void main()
{
unsigned int a;
P0=0xfe;
while(1)
{
for(a=30000;a>0;a--);
P0=_crol_(P0,1);
}
}
其中使用這個#include <intrins.h>頭文件,就是後面P0=_crol_(P0,1) 要用的移位指令 。

④ 單片機 RRC右移 指令的用法

RRC指令就是帶進位累加器循環右移。舉例說明:

C =1,A=1100 1100B,

執行RRC A後,C=0,A=1110 0110B(A的最低位移給C,並且C原來的值移給A的最高位。)

SETB C(cy=1)

XCH A,R2(兩數交換R2=54H,A=C2H)

JB A.7 , ELSE(若A的最高位為1,則轉至else)

CLR C

ELSE: RRC A(帶進位位右移A=1110 0 001B=E1H Cy=0)

XCH A ,R2(兩數交換後,R2=E1H,A=54H)

RRC A(帶進位位右移A=0010 1 010B=2AH Cy=0)

所以,最終(R2)=E1H,(A)=2AH

(4)單片機右移指令亮燈擴展閱讀:

控制轉移類指令還包括以下:

1、無條件轉移指令 AJMP addrll (2位元組指令),2K(地址211)位元組范圍內的無條件跳轉指令。64K程序存儲器空間分為32個區,每區2K位元組,轉移的目標地址必須與AJMP下一條指令的地址高5位地址碼A15-A11相同。

指令執行時,先PC加2,然後把addrll送入PC.10~PC.0,PC.15~PC.11保持不變,程序轉移到目標地址。注意:轉移目標首地址必須在AJMP指令下一條指令地址(PC+2)的2KB范圍內。

2、長跳轉指令 LJMP addr16 (3位元組指令),64K位元組范圍內的無條件跳轉指令。指令執行時,把指令的第二和第三位元組分別裝入PC的高位和低位位元組中,無條件地轉向addr16指出的目標地址。

目標地址可以在64K程序存儲器地址空間的任何位置。注意:短跳轉、長跳轉指令中addrll、addr16直接寫上要轉向的目標地址標號(即符號地址)就可以。

3、相對轉移指令 SJMP rel (雙位元組),rel為8位帶符號二進制補碼數(-128~+127),實現程序的雙向轉移。在編寫程序時,直接寫上要轉向的目標地址標號就可以。

4、間接跳轉(散轉)指令JMP @A+DPTR (三位元組),由A中8位無符號數與DPTR的16位數內容之和來確定。以DPTR內容作為基址,A的內容作變址。

5、條件轉移指令 (雙位元組)

JZ rel ; 如果累加器為「0」,則轉移

JNZ rel; 如果累加器非「0」,則轉移

⑤ 單片機設置流水燈顯示效果,具體流水效果為兩位彩燈右移

咨詢記錄 · 回答於2021-12-10

⑥ 51單片機的c語言 左移右移怎麼用想用來控制流水燈,請幫忙寫個完整的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位
}
}
}

⑦ 單片機右移到左移,左移到右移的花樣流水燈程序問題

LED燈右移到最右邊後向左移時是這樣的:右移一位→第二個延時程序→第一個延時程序→右移右移一位→第二個延時程序→第一個延時程序,這樣不斷循環,循環到最左邊,就開始了右移的程序。
這樣左移的延遲大一點的!

⑧ 51單片機用右移做流水燈

你把i 定義成無符號型unsigned char i ,然後 if 語句裡面不要判斷P0,改成判斷 i

⑨ 關於單片機流水燈左移右移的問題

51單片機的左移右移,首先在開始要調用"intrins.h"的文件包,這個文件包含_cror_(右移),_crol_(左移);然後通過for語句來控制;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(k=250;k>0;k--);
理解這三句,第一句是指:m=20;m>0然後m--是真就執行:
for(n=20;n>0;n--)
for(k=250;k>0;k--);
這兩句,m--一直減,減一次,裡面就執行一次,這里是20次。
流水燈的左右移,第一用"intrins.h"的文件包,第二要要會定義賦值變數,第三延時,這是關鍵。

閱讀全文

與單片機右移指令亮燈相關的資料

熱點內容
麗水四軸加工中心編程 瀏覽:689
國產系統怎麼解壓 瀏覽:552
戰雙程序員 瀏覽:483
him觸摸編程軟體 瀏覽:931
植物大戰僵屍存檔怎麼轉移安卓 瀏覽:852
java棧的元素 瀏覽:737
程序員與籃球事件 瀏覽:675
app反編譯不完整 瀏覽:788
電腦上的文件夾怎麼調整 瀏覽:7
伺服器無響應是什麼原因呀 瀏覽:984
wd文檔里的app怎麼製作 瀏覽:513
電腦里的文件夾沒有了一般能恢復嗎 瀏覽:418
哪裡有配加密鑰匙的 瀏覽:210
伺服器開不了機怎麼把數據弄出來 瀏覽:958
gif動態圖片怎麼壓縮 瀏覽:521
黑猴子棒球壓縮文件解壓密碼 瀏覽:631
如何讓app適應不同的手機屏幕大小 瀏覽:10
蘋果手機如何給安卓手機分享軟體 瀏覽:761
蘋果電腦怎麼運行騰訊雲伺服器 瀏覽:59
明日之後沙石堡命令助手 瀏覽:261