SOGO論壇
  登入   註冊   找回密碼
查看: 1259|回覆: 2
列印 上一主題 下一主題

[程式設計] 程式流程問題 [複製連結]

Rank: 7Rank: 7Rank: 7

狀態︰ 離線
跳轉到指定樓層
1
發表於 2009-7-7 15:46:35 |只看該作者 |倒序瀏覽
各位大大們請協助小弟,以下是一個顯示馬達轉速的程式,不知道各位大大知道哪個是顯示個位數十位數百位數及千位數的部分?另外整個程式流程圖我該怎麼畫呢?煩請各位大大協助小第一下.
count        equ        30H
old        equ        20H
new        equ        21H

        org        00H
        jmp        start
        org        0bH
        jmp        time_0

start:
        clr        p3.6
        mov        sp,#70H
        mov        count,#00H
        mov        r0,#00H
        mov        r1,#00H
        call        display

        mov        a,#00H
        mov        c,p3.7
        rlc        a
        mov        old,a


        mov        tmod,#01H
        setb        ea
        setb        et0
        setb        tr0

loop:
        mov        c,p3.5
        mov        p3.6,c
        mov        a,#00H
        mov        c,p3.7       
        rlc        a
        mov        new,a
        xrl        a,old
        jz        is_display


        mov        a,#00H
        mov        c,p3.7       
        rlc        a
        mov        new,a
        xrl        a,old
        jz        is_display


        mov        old,new
        inc        r0
        mov        a,r0
        anl        a,#00001111b
        cjne        a,#0aH,is_display
        mov        a,r0
        anl        a,#11110000b
        add        a,#10H
        mov        r0,a
        cjne        r0,#0a0H,is_display
        mov        r0,#00H
        inc        r1
        mov        a,r1
        anl        a,#00001111b
        cjne        a,#0aH,is_display
        mov        a,r1
        anl        a,#11110000b
        add        a,#10H
        mov        r1,a
        cjne        r1,#0a0H,is_display
        mov        r1,#00H


is_display:
        mov        a,count
        cjne        a,#19H,loop
        mov        count,#00H
        call        display
        mov        r0,#00H
        mov        r1,#00H

        jmp        loop


time_0:
        mov        tl0,#0b0H
        mov        th0,#3cH
        inc        count

        reti

display:

        mov        a,r1
        anl        a,#11110000B
        cjne        a,#00H,display1
        mov        a,r1
        add        a,#0F0H
        mov        r1,a
        cjne        r1,#0F0H,display1
        mov        r1,#0FFH
        mov        a,r0
        anl        a,#11110000B
        cjne        a,#00H,display1
        mov        a,r0
        add        a,#0F0H
        mov        r0,a


display1:





        mov        p2,r0
        mov        p1,r1

        ret



        end
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 2

狀態︰ 離線
2
發表於 2009-11-15 01:27:04 |只看該作者
;----------變數設定---------------------------
count        equ   30H
old           equ   20H
new        equ   21H
                org    00H
                jmp    start
;-----------TM0計時中斷-----------------------
                org      0bH
                call         time_0
        reti
;-----------程式開始-----------------------
start:
        mov    sp,#70H
start1
             clr       p3.6
                mov    count,#00H
                mov    r0,#00H
                mov    r1,#00H
;-----------資料顯示初值-----------------------
                call        display
;-----------PUSH輸入狀態-----------------------
               mov   a,#00H
                mov   c,p3.7
                rlc      a
                mov   old,a
;-----------TM0中斷致能-----------------------
                mov   tmod,#01H
                setb    ea
                call     time_0
loop:
;-----------輸(入/出)應該是啟動馬達or重置動作---------
        mov   c,p3.5
                mov   p3.6,c
;-----------輸入狀態掃描-----------------------
            mov   a,#00H
                mov   c,p3.7        
                rlc      a
                mov   new,a
                xrl     a,old
;-----------輸入狀態比對-----------------------
               jz       is_display
                mov         a,#00H
                mov   c,p3.7        
                rlc      a
                mov   new,a
                xrl     a,old
  ;-----------輸入狀態比對-----------------------
               jz      is_display
                mov  old,new
                inc    r0
                mov  a,r0
                anl    a,#00001111b
  ;-----------假如個位數+1<10顯示個位數-----------------------
                cjne  a,#0aH,is_display
                mov  a,r0
                anl    a,#11110000b
                add   a,#10H
                mov  r0,a
  ;-----------假如拾位數+1<10顯示拾位數和個位數=0-------------
              cjne  r0,#0a0H,is_display
                mov  r0,#00H
                inc    r1
                mov  a,r1
                anl    a,#00001111b
  ;-----------假如佰位數+1<10...........................-------------
                cjne  a,#0aH,is_display
                mov  a,r1
                anl    a,#11110000b
                add   a,#10H
                mov  r1,a
  ;-----------假如仟位數+1<10...........................-------------
               cjne  r1,#0a0H,is_display
                mov  r1,#00H
;-----------輸入狀態變化比對計時-----------------------
is_display:
                mov    a,count
  ;-----------未到預設計時LOOP-----------------------
               cjne    a,#19H,loop
;-----------已到預設計時顯示資料-----------------------
               mov    count,#00H
                call     display
                mov    r0,#00H
                mov    r1,#00H
                jmp    start1
;------------TM0計數出值-------------------
time_0:
        CLR    TF0                                        ;清除T0進位旗號
        CLR    TR0
        mov   tl0,#0b0H
        mov   th0,#3cH
                inc     count
        SETB  TR0
        ret
;-----------資料顯示前置0消除比對-----------------------
display:
        mov   a,r1
                anl     a,#11110000B
                cjne   a,#00H,display1
                mov   a,r1
                add    a,#0F0H
                mov   r1,a
                cjne   r1,#0F0H,display1
                mov   r1,#0FFH
                mov   a,r0
                anl     a,#11110000B
                cjne   a,#00H,display1
                mov   a,r0
                add    a,#0F0H
                mov   r0,a
;-----------資料輸出顯示-----------------------
display1:
        mov   P2,r0
        mov   p1,r1
        ret
        end

《 本帖最後由 wwww 於 2009-11-15 01:37 編輯 》
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 熱心助人

總評分: 威望 + 2   查看全部評分

Rank: 2

狀態︰ 離線
3
發表於 2009-12-25 02:16:28 |只看該作者
推上面的大大

解釋很清楚!!

不錯唷  繼續加油~!
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-11-23 06:28

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部