導航:首頁 > 操作系統 > 51單片機匯編程序

51單片機匯編程序

發布時間:2022-03-12 01:25:25

A. 51單片機 匯編語言

;P1 IS KEY
;P0 IS LED
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
JB P1.0,MAIN1
MOV A,#0FEH
SJMP MLED
MAIN1:
JB P1.1,MAIN2
MOV A,#0FCH
SJMP MLED
MAIN2:
JB P1.2,MAIN3
MOV A,#0F8H
SJMP MLED
MAIN3:
JB P1.3,MAIN4
MOV A,#0F0H
SJMP MLED
MAIN4:
JB P1.4,MAIN5
MOV A,#0E0H
SJMP MLED
MAIN5:
JB P1.5,MAIN6
MOV A,#0C0H
SJMP MLED
MAIN6:
JB P1.6,MAIN7
MOV A,#80H
SJMP MLED
MAIN7:
JB P1.7,MAIN
MOV A,#0
MLED:
MOV P0,A
LJMP MAIN
END

B. 51單片機匯編程

寄存器壓棧和出棧的時候,不能直接寫寄存器的名字,比如:PUSH R3
POP R3應該寫成PUSH 3和POP 3。還有就是
CCC: DEC R2
JZ BACK;我想你的意思是想做一個當R2=0時的跳轉操作。但是JZ和JNZ指令只能判斷ACC的值是否=0,你這個JZ在DEC R2後面,根本就沒有對ACC的操作,所以是不會有你想像的結果的。

C. 51單片機匯編程序的問題

單片機的程序都是死循環。
區別在於,這個循環內有沒有事做,循環做什麼事。
你上面的程序,最後死循環在原地。定時器中斷10次後也不再中斷。

D. C51單片機匯編語言

你用的是跳轉指令進入程序段,而不是子程序調用,所以不能用RET返回,只能同樣跳回去

用LCALL或者ACALL命令調用子程序時會把當前的程序地址壓入堆棧當前點,在遇到RET指令時就會把保存的斷點地址彈回PC寄存器,繼續調用之前的執行,但是JMP系列指令不會保存斷點地址,所以RET時就會把堆棧當前點數據裝入PC,上電後RAM中未初始化的單元都是0,所以就會把0裝入PC,於是程序就回到0地址了。

E. 關於51單片機匯編語言程序

ORG 0000H
LJMP MAIN
ORG 000BH
LCALL TIMER0
ORG 1000H
MAIN:
LCALL INIT
WAIT :
CJNE R0,#10,WAIT
MOV R0,#0
RRC A
MOV P1,A
SJMP WAIT
INIT
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#B0H
SETB EA
SETB ET0
SETB TR0
MOV A,#01H
MOV P1,A
RET
TIMER0:
MOV TH0,#3CH
MOV TL0,#B0H
INC R0
RETI

F. 51單片機匯編語言

ORG 00H
LJMP MAIN
ORG 30H
MAIN:
MOV R2,#0
MOV R0,#40H
MOV R1,#30H
MOV DPTR,#2000H
LOOP1:
MOVX A,@DPTR
MOV B,#2
MUL AB
ADD A,@R1
DEC A
MOV @R0,A
INC R0
INC R1
INC DPTR
CJNE R2,#10,LOOP1
MOV R2,#0
MOV R1,#40H
MOV DPTR,#3000H
LOOP2:
MOV A,@R1
MOVX @DPTR,A
INC R0
INC R1
INC DPTR
CJNE R2,#10,LOOP2
SJMP $
END(未完)

G. 51單片機匯編自鎖程序

也許是按鍵抖動,外加一個上拉電阻和一個104對地電容試試吧

H. 用匯編語言編寫一個51單片機的程序

首先搞清LED管是高電平導通還是低電平導通。
如果是低電平導通,P1賦0x00時,發光管全亮,0xff時,全滅。
具體程序:
#define uint unsigned int
#define uchar unsigned char
void delay(uint time_out)
{
uint i,j;
for(i=0;i<time_out;i++)
{
for(j=0;j<110;j++)
{;}
}
}

void main(){
while(1)
{
P1=0xfe; //第1個管亮
delay(500);
P1=0xfd; //第2個管亮
delay(500);
P1=0xfb; //依次類推
delay(500);
P1=0xf7;
delay(500);
P1=0xef;
delay(500);

P1=0xdf;
delay(500);

P1=0xbf;
delay(500);

P1=0x7f;
delay(500);
}
}

程序大致如此,delay函數負責延遲500ms.有問題自己再調試調試

I. 51單片機匯編

0x40的寫法,也是正確的。

毛病出在下面:

程序開始,把堆棧設置在40H,再調用子程序,系統就自動把返回地址,存入了堆棧。

但是,在子程序中,卻把堆棧內的返回地址,給清零了。

那麼,RET指令一執行,就又從0000H開始執行。

J. 51單片機的匯編編程

ORG 0000H
MOV DPTR,#2000H
MOV R0,#2AH ;#2AH * #60H=#1000H
MOV R1,60H
CLR R2
CLR R3

LOOP:CLR A
MOVC A,@A+DPTR
CJNE A,#41H,QUET ;與A的ASCII碼#41H比較,不等->轉移
MOV A,R2
INC A
MOV A,R2
JC JIAYI ;溢出一次,R3+1
LJMP QUET
JIAYI:INC R3
LJMP QUET

QUET:INC DPTR
DJNZ R0,LOOP
DJNZ R1,LOOP

MOV DPTR,#2010H
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
END

閱讀全文

與51單片機匯編程序相關的資料

熱點內容
如何驗證web伺服器是否正常工作 瀏覽:132
全球最大的加密貨幣網站 瀏覽:284
解壓文件為什麼有問號 瀏覽:389
php考試系統模板 瀏覽:431
pdf導出圖片模糊 瀏覽:610
我的世界編玩邊學伺服器地址 瀏覽:456
基於單片機的火災報警系統 瀏覽:166
上海追星用什麼app 瀏覽:425
海馬m5壓縮機維修 瀏覽:98
抖音怎麼給自己喜歡的加密 瀏覽:247
中國五大加密貨幣 瀏覽:263
程序員手疼7年查6處骨腫瘤 瀏覽:39
python列表對象的創建與刪除 瀏覽:467
python刪除excel表格中的一行 瀏覽:521
android資料庫的增刪改查 瀏覽:632
雲伺服器2g4g有什麼區別 瀏覽:324
顯示文件夾所有文件的文件名函數 瀏覽:213
可以在網站寫代碼的編譯器 瀏覽:76
王者換伺服器怎麼不用重玩 瀏覽:328
武漢編譯ipfs雲存儲器 瀏覽:52