久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機仿真實例

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

l  示例6掃描與判斷(單端口)位掃描與字節(多端口)掃描

這是一個常用程序段—子程序—標準程序,通過端口掃描而獲得輸入數據或控制輸出數據,達到節省位或字節的目的—節約硬件資源。
關于掃描,可以從位及其取反實現流水燈著手來理解。可以通過移位實現流水燈—掃描。可以通過字節數據(01H,02H,04H,08H,10H,20H,40H,80H—陽極管)的端口發送實現流水燈—掃描。可以通過數據表(DB 01H,02H,04H,08H,10H,20H,40H,80H—陰極管)實現流水燈—掃描。可以通過循環跳轉實現流水燈—掃描。掃描注意入比出查—獲得輸入要比較數據、發送輸出要檢查出口
掃描獲取端口字節
掃描輸出位移動產生動態效果(0102040810204080),可以用字節表
掃描輸出字符字節,通過延時可以變換字符以便造成數字進位效果
ORG 0000H
START:
dbuf     equ  30h  ;置存儲區首址
temp     equ  40h  ;置緩沖區首址
         org 00h
         mov 30h,#2 ;存入數據
         mov 31h,#0
         mov 32h,#1
         mov 33h,#0
         mov 34h,#7
         mov 35h,#1
         mov r0,#dbuf
         mov r1,#temp
         mov r2,#6     ;六位顯示器
         mov dptr,#segtab ;段碼表首地址
dp00:    mov a,@r0    ;取要顯示的數據
         movc a,@a+dptr ;查表取段碼
         mov @r1,a     ;段碼暫存
         inc r1
         inc r0
         djnz r2,dp00                                                          
disp0:   mov r0,#temp    ;顯示子程序
         mov r1,#6      ;掃描6次
         mov r2,#01h    ;從第一位開始
dp01:    mov a,@r0
         mov p2,a   ;段碼輸出
         mov a,r2   ;取位碼
         mov p1,a   ;位碼輸出
         acall delay  ;調用延時
         mov a,r2
         rl a
         mov r2,a
         inc r0
         djnz r1,dp01
         sjmp disp0
segtab:  db 0C0H,0F9H,0A4H,0B0H,99H,92H  ;共陽極管
         db 82H,0F8H,80H,90H,88H,88H,83H
delay:   mov r4,#29h         ;延時子程序
aa1:     mov r5,0ffh
aa:      djnz r5,aa
         djnz r4,aa1
         ret
         end
???????????????????????
************************************************************************
還可以用其他程序形式進行掃描,像循環、遞增或遞減判斷程序等。掃描技術可以用于點陣顯示,液晶板(LCD)顯示。這些都需要字符編碼、顯示延時、掃描端口以充分利用資源(節約資源)。
 
 
l  實例1—關于動態顯示—LED閃爍
 
ORG 0000H
  START: 
    MOV  A,#0FFH   ;字節傳送
    MOV  P3,A  ;字節傳送
       MOV  P1,A
       MOV C, 0A0H ;位傳送
    JNB  0A0H,GUAN ;判斷位電平低為真,則轉移;直接地址位為0轉移
       MOV  P1,#00H ;  P1口先賦#0FFH,再賦#00H,則產生閃爍
RET
GUAN : 
       MOV  P3,#00H ;P3口先賦#0FFH,再賦#00H,則產生閃爍,也可以使用取反指令
     RET   ;可以產生閃爍效果
 END 
其他方法(如:延時子程序)也可以實現動態顯示。
 
l  實例2—單個LED燈-單個按鍵的仿真
ORG  0000H   ;這是偽指令,機器并不執行,用于程序的交流。指令執行的起始地址,十進制用D表示,十六進制用H表示,二進制用B表示。一個字節(8位機、16位機、32位機、64位機)一次執行。也可以按位來執行,也就是一個bit。
ORG  00000000B與ORG  0000H作用相同。注意8位(bit)一個字節。16位的處理器需要用0000 0000H 表示。16或32位以上,使用操作系統(Wince、Linux等)更有效,可以利用大量的、底層的、專業化、標準化的面向控制的庫函數(如:API等)。
START:  ;這是偽指令,機器并不執行。只是為了匯編語言講故事的可理解性
   MAIN:    ;偽指令,主程序,用于區別子程序
   PC→MOV  A#00H   ;將立即數00000000B(常數0D)傳送給累加器ACC(專用寄存器,可用于存放計算結果等)。要通過累加器A和其它存儲地址進行數據交換。注意PC是自動移位(自動+1)到下一個語句的地址。使用該語句實質上是讓PC具有初始位置。
PC→MOV  P1   ;將累加器中的數(常數0D)傳送給端口P1(P1口8位全部置0,低電平, P1端口各位處于關閉狀態,LED燈處于系統響應的準備狀態),按字節傳送數據。特別記憶:PC→表示指針所指地址,并會自動加1。
PC→MOV  C0A0H   ;檢測P2.0口的狀態,將P2.0口的狀態(由按鍵狀態決定)傳送給位累加器C,位累加器C的地址是PSW(程序狀態字寄存器)的進位標志位CY(D7H\PSW.7)。P2.0口可以是開或關,也就是置1或0,高電平或低電平),按字節傳送數據。要通過位累加器C和其它存儲地址進行數據交換。該語句也可以寫成:MOV  CP2.0,比較字節數據傳送MOV A,#00H或MOV  A,P1。
PC→MOV  P1.0C等價于MOV  90HC;將位累加器C地址中的值傳送給P1.0口(90H是其直接地址),也就是將P2.0口的狀態(由直接地址0A0H狀態決定)傳送給直接地址90HP1.0
PC→MOV  P1.1C  等價于MOV  91HC
PC→MOV  P1.2C  等價于MOV  92HC
PC→MOV  P1.3C  等價于MOV  93H 等等
END ;偽指令,程序結束標志
 
l  實例3—掃描實現數字移動變化的仿真
l  實例4—雙數碼管雙端口數字進位仿真
 
l  實例5—雙四數碼管組雙端口數字顯示—單端口掃描移動仿真—點陣
雙四數碼管組雙端口數字顯示—單端口掃描移動仿真,可以被分解為
a)  雙四數碼管組雙端口數字顯示—單端口無掃描無移動—>數字變化(依靠數表和指針),
b)  雙四數碼管組雙端口數字顯示—單端口掃描移動—>數字不變化(依靠數表和指針),
c)   雙四數碼管組雙端口數字顯示—單端口掃描移動—>數字變化(依靠數表和指針),
關閉窗口
主站蜘蛛池模板: 毛片视频网址 | 二区三区av| 精品成人免费视频 | 久久成人18免费网站 | 亚洲精品国产a久久久久久 午夜影院网站 | 一级免费毛片 | 亚洲精品在 | 日韩中文在线 | 99一区二区 | 爱爱视频网 | 狠狠婷婷综合久久久久久妖精 | 一级黄色毛片免费 | av天空| 久久精品视频网站 | 国产高清在线精品一区二区三区 | 日韩中文电影 | 中文字幕在线看 | 国产免费让你躁在线视频 | 在线免费观看视频你懂的 | 伊色综合久久之综合久久 | 91亚洲国产 | 久久久123 | 日本精品一区二区三区在线观看 | 成人综合视频在线 | 四虎伊人 | 国产一区不卡 | 欧美激情精品久久久久 | 亚洲精品中文字幕中文字幕 | 午夜欧美 | 三区在线| 在线一区观看 | 国产小视频在线 | 激情视频网站 | 亚洲综合视频一区 | 国产精品久久久久久久 | 国产成人精品高清久久 | 少妇淫片aaaaa毛片叫床爽 | 国产在线精品一区二区 | 欧美日韩中文在线观看 | 欧美人妖网站 | 亚洲精品久久久一区二区三区 |