<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

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

        51單片機仿真實例

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

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

        這是一個常用程序段—子程序—標準程序,通過端口掃描而獲得輸入數據或控制輸出數據,達到節省位或字節的目的—節約硬件資源。
        關于掃描,可以從位及其取反實現流水燈著手來理解?梢酝ㄟ^移位實現流水燈—掃描?梢酝ㄟ^字節數據(01H,02H,04H,08H,10H,20H,40H,80H—陽極管)的端口發送實現流水燈—掃描?梢酝ㄟ^數據表(DB 01H,02H,04H,08H,10H,20H,40H,80H—陰極管)實現流水燈—掃描?梢酝ㄟ^循環跳轉實現流水燈—掃描。掃描注意入比出查—獲得輸入要比較數據、發送輸出要檢查出口
        掃描獲取端口字節
        掃描輸出位移動產生動態效果(01、02、04、08、10、20、40、80),可以用字節表
        掃描輸出字符字節,通過延時可以變換字符以便造成數字進位效果
        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  C,0A0H   ;檢測P2.0口的狀態,將P2.0口的狀態(由按鍵狀態決定)傳送給位累加器C,位累加器C的地址是PSW(程序狀態字寄存器)的進位標志位CY(D7H\PSW.7)。P2.0口可以是開或關,也就是置1或0,高電平或低電平),按字節傳送數據。要通過位累加器C和其它存儲地址進行數據交換。該語句也可以寫成:MOV  C,P2.0,比較字節數據傳送MOV A,#00H或MOV  A,P1。
        PC→MOV  P1.0,C;等價于MOV  90H,C;將位累加器C地址中的值傳送給P1.0口(90H是其直接地址),也就是將P2.0口的狀態(由直接地址0A0H狀態決定)傳送給直接地址90H,P1.0
        PC→MOV  P1.1,C  ;等價于MOV  91H,C
        PC→MOV  P1.2,C  ;等價于MOV  92H,C
        PC→MOV  P1.3,C  ;等價于MOV  93H, 等等
        END ;偽指令,程序結束標志
         
        l  實例3—掃描實現數字移動變化的仿真
        l  實例4—雙數碼管雙端口數字進位仿真
         
        l  實例5—雙四數碼管組雙端口數字顯示—單端口掃描移動仿真—點陣
        雙四數碼管組雙端口數字顯示—單端口掃描移動仿真,可以被分解為
        a)  雙四數碼管組雙端口數字顯示—單端口無掃描無移動—>數字變化(依靠數表和指針),
        b)  雙四數碼管組雙端口數字顯示—單端口掃描移動—>數字不變化(依靠數表和指針),
        c)   雙四數碼管組雙端口數字顯示—單端口掃描移動—>數字變化(依靠數表和指針),
        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮