『壹』 51單片機中如何用匯編語言編寫流水燈
流水燈就是51單片機控制led燈依次點亮的控制方式。具體程序如下:
ORG 0000H;復位啟動
AJMP START;
ORG 001BH;T1中斷
AJMP T1INT;
;定義變數========================
YSJSEQU 30H;延時計數器
LEDEQU 31H;LED控制緩沖器
;主程序==========================
START:MOV LED,#0FEH;初始化數據
MOV YSJS,#0;
MOV TMOD,#10H;定時器1工作於方式1,16位定時器
MOV TL1,#0B0H;設置定時初值
MOV TH1,#3CH;定時時間=50mS
SETB ET1;使能定時器1中斷
SETB TR1;啟動定時器1
SETB EA;開總中斷
MOV P1,LED;初始化流水燈
LOOP:JMP LOOP;循環等待中斷
T1INT:PUSH PSW;定時器1中斷程序
PUSH ACC;保護現場
MOV TH1,#3CH;定時時間=50mS
MOV TL1,#0B0H;
INC YSJS;
PUSH ACC;保護ACC
MOV A,YSJI;
CJNE A,#2,QT1;50mS*2=100mS
MOV P1,LED;
MOV A,LED;
RL A;累加器A的值循環左移1位
MOV LED,A;
MOV YSJS,#0;
QT1:POP ACC;恢復現場
POP PSW;
RETI;返回主程序
END;匯編程序結束
(1)51單片機匯編教程擴展閱讀:
實現流水燈的三個方法:
第一種,匯流排方法實現流水燈。這是一種比較笨但又最易理解的方法,採用順序程序結構,用位指令控制P1口的每一個位輸出高低電平,加上延時函數,即可控制每個LED燈的亮滅。
第二種,移位方法實現流水燈採用循環程序結構編程。首先在程序開始給P1.0口送一個低電平,其它位為高。然後延時一段時間再讓低電平往高位移動,這樣就實現「流水」的效果了。
第三種,庫函數實現流水燈。利用左移函數進行。
『貳』 51單片機 用匯編語言怎麼編程:幾個有符號數的比較大小
51單片機中,沒有專門的有符號數比較指令,只能通過一些變通的方法來實現,比如:
比較30H和40H中有符號數的大小,結果放在R2中,大於則為1,等於為0,小於為128:
CMPDAT:
MOV A,30H
JB ACC.7,CMPF1
MOV B,A
MOV A,40H
JB ACC.7,CMPZ2 ;30H正,40H負所以30H>40H
CJNE A,B,CMPZ1 ;均為正,比較大小
MOV R2,#0
RET
CMPZ1:
JC,CMPZ2
CMPZ11:
MOV R2,#128
RET
CMPZ2:
MOV R2,#1
RET
CMPF1:
ANL A,#7FH
MOV B,A
MOV A,40H
JNB ACC.7,CMPF3 ;30H負,40H負
SJMP CMPZ11 ;30負,40H正,所以30H<40H
CMPF3:
ANL A,#7FH
CJNE A,B,CMPF10 ;兩個均為負數
MOV R2,#0
RET
CMPF10:
JC CMPZ2 ;30H<40H(負數小者大)
SJMP CMPZ11 ;30H>40H
『叄』 在89C5151單片機中怎麼編寫匯編語言
單片機中當然不能編寫匯編程序了啊,先應該在編譯環境中編譯,常用的是偉幅編譯軟體,把編譯生成的HEX文件再燒到單片機中去,就可以實現控制了。學單片機匯編需要兩個重要軟體,一個是編程軟體WAVE(偉幅)另還要模擬軟體Proteus 7 Professional。
『肆』 51單片機匯編語言按鍵如何編程
編程時,要把整個程序,分解成一個一個模塊。
一個模塊,只包括一個功能。
那麼,KEY 模塊:
讀出按鍵、消除抖動、讀取鍵值,返回鍵值。
鍵值包括:00H、08H... 20H,FFH(無鍵)。
這個 KEY 模塊,到這就完了。
按鍵如何處理,則是另外的模塊。
樓主流程圖,包羅萬象,好像是個主程序。不好弄。