專注電子技術(shù)學(xué)習與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

Proteus--51系列匯編

作者:未知   來源:會員上傳   點擊數(shù):  更新時間:2014年05月20日   【字體:


















 
 單鍵控制多燈延時閃爍—延時子程序
ORG 0000H     ; 程序開始 
MAIN:
  MOV  C,80H  ;P0.0口的狀態(tài)傳遞給位累加器C
  JNB   80H,GUAN   ;按位操作;按P0.0口的狀態(tài)為0獲得跳轉(zhuǎn),否則順序執(zhí)行
  MOV P1,#00H ;按P0.0口為1,得到順序執(zhí)行本指令;p1,p2,p3全部置低電平
  MOV P2,#00H 
  MOV P3,#00H 
  ACALL  DELAY     ; 調(diào)延時子程序
GUAN :   按P0.0口的狀態(tài)為0獲得的跳轉(zhuǎn)執(zhí)行指令—子程序
CPL  C   ;反轉(zhuǎn)P0.0口的狀態(tài)0為1
  MOV  P0.1,C   ; 按P0.0口的狀態(tài)反轉(zhuǎn)為1,顯示P0.1口
  MOV P1,#0FFH   ; 把p1,p2,p3全部置高電平
  MOV P2,#0FFH; 
  MOV P3,#0FFH; 
  ACALL  DELAY   ; 調(diào)延時子程序 
AJMP MAIN   ; 延時結(jié)束后,短轉(zhuǎn)移跳轉(zhuǎn)到MAIN,重新開始 ,改變了的P0.0口的狀態(tài)便起作用了 
ORG 0200H  ; 從200H開始存放
 
DELAY:      ; 延時子程序 — 這是一個非常有用、而且常見的一個子程序
  MOV R5,#04H    ;將16進制數(shù)04H傳遞給寄存器R5
F3:
  MOV R6,#0FFH  ;將16進制數(shù)0FFH傳遞給寄存器R6
F2:
  MOV R7,#0FFH  ;將16進制數(shù)0FFH傳遞給寄存器R7
F1:
  DJNZ  R7, F1 ;寄存器R7減1非0跳轉(zhuǎn)到F1,直到減為0順序執(zhí)行下一指令
  DJNZ  R6, F2 ;寄存器R6減1非0跳轉(zhuǎn)到F2,直到減為0順序執(zhí)行下一指令
  DJNZ  R5, F3 ;寄存器R5減1非0跳轉(zhuǎn)到F3,直到減為0順序執(zhí)行下一指令
  RET       ; 子程序結(jié)束,返回子程序入口處 
END
程序說明
每個口用字節(jié)賦值指令一次性的開關(guān)各個Pi口的外接器件。特別注意延時指令,在單片機的應(yīng)用中,經(jīng)常會使用延時特性。參見如下所述。
注意延時的本質(zhì)實際上是單片機在空運轉(zhuǎn),因此可以使用一個跳轉(zhuǎn)或多個跳轉(zhuǎn)的空運轉(zhuǎn),以便控制更長的延時。寄存器是與運算器直接打交道的存儲單元。
基本的延時子程序為
DELAY:
  MOV R5,#04H
F1:
  DJNZ  R5, F1
RET
 LED循環(huán)問題(跑馬燈、流水燈)
一種方式位輸出加延時子程序,二種方式字節(jié)輸出加延時子程序,三種方式字節(jié)數(shù)據(jù)表加延時子程序。
 
a)  單個按鍵與多個LED燈數(shù)碼管(位操作輸入與字節(jié)操作輸出)數(shù)表
 單輸入與多輸出的電子線路—靜態(tài)特性
在單個LED燈的基礎(chǔ)上,添加多個LED燈或者用LED組燈來替代單個添加。從單個LED到LED組的硬件添加,再通過指令變化,可以感受到、可以發(fā)現(xiàn)數(shù)碼管的應(yīng)用方法,也可以體會到引用數(shù)組—數(shù)據(jù)表的好處。
 
多輸出電子線路的控制指令—動態(tài)特性
通過硬件的變化,指令集—程序也在隨著變化?梢园l(fā)現(xiàn),添加延時指令,可實現(xiàn)LED閃爍;也就是用多燈。通過用位賦值指令并延時單個LED的開關(guān)時間,實現(xiàn)流水燈現(xiàn)象。也可以對每個口用位指令賦值,順序開關(guān);可以用字節(jié)指令送數(shù)據(jù),LOOP循環(huán)實現(xiàn)跑馬燈。還可以用數(shù)據(jù)組格式—數(shù)表格式,通過掃描實現(xiàn),等等。
關(guān)閉窗口

相關(guān)文章