線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1443
推到 Plurk!
推到 Facebook!

89C2051的小問題(組合語言)

答題得分者是:阿信
antonny-lee@yahoo.com.tw
一般會員


發表:4
回覆:1
積分:1
註冊:2005-04-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-30 15:11:27 IP:218.165.xxx.xxx 未訂閱
事先申明,小弟是初學者,如果問題太過膚淺請多包函   小弟有一個homework是關於製作音樂盒的,寫程式時遇到bug      1.程式開端一定要用宣告嗎??宣告的作用是什麼??       若程式使用宣告真的會使程式變比較短嗎?? 2.使用按鈕控制P3.0 ,P3.1 這樣的語法對嗎??(P0.1為Speak, P1.4~P1.7接7447 => 七段顯示器)
 
    START0: MOV    30H,#00     ;取樂譜碼指標,以30H為開端,每次00個BITES
            JB     P3.0,$      ;按選歌鈕
             MOV    30H,P3.0    ;令30H,取決於P3.0外部指令
    GET:    MOV    30H,#00H    ;選取歌曲
             XRL    30H,#01H    ;比對30H,為01H
            MOV    P1,#00010000B    ;七段顯示器秀1,但不影響喇叭
             JZ     SING1       ;若相等跳SING1
           XRL    30H,#02H    ;比對30H,為02H
           MOV    P1,#00100000B    ;七段顯示器秀2,但不影響喇叭 
             JZ     SING2       ;若相等跳SING2
           XRL    30H,#03H    ;比對30H,為03H
           MOV    P1,#00110000B    ;七段顯示器秀3,但不影響喇叭
             JZ     SING3       ;若相等跳SING3
           JMP    GET         ;跳回GET,選錯可以從頭SING1~SING3更新
    SING1: JB     P3.1,$      ;<======SING1開始,等待按鈕按下 
            CALL   DELAY1      ;等DELAY1秒數 
            JNB    P3.1,$      ;等待按鈕放開 
            MOV    DPTR,#DATA1 ;正式取音符程式歌曲1取DATE1
發表人 - antonny-lee@yahoo.com.tw 於 2005/04/30 16:09:42 發表人 - antonny-lee@yahoo.com.tw 於 2005/04/30 16:14:14
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-30 23:36:51 IP:220.228.xxx.xxx 未訂閱
你有編譯過嗎 有語法錯誤耶 第三行:沒有把一個Bit放進一個Byte的指令    邏輯錯誤~ 第四行第五行... :把#00H給30H  又判斷30H是否為#01H、#02H... 這不就像把水桶的水倒光  然後再檢查還有多少水是一樣的道理嗎 (根本不用檢查 一定沒水的 不是嗎)    程式風格: 記憶體的使用 最好宣告一個名字    ; =======================================    程式 簡單一點 可以一個按鍵控制一首音樂 假設 第一首:P3.0 第二首:P3.1 第三首:P3.2
Start0:
        mov 30H,#00H  
        jb P3.0,Start0 ;3個按鈕都放開才會到Start1
        jb P3.1,Start0
        jb P3.2,Start0
Start1:
        jnb P3.0,Get1 ;判斷第一首的按鈕
        jnb P3.1,Get2 ;判斷第二首的按鈕
        jnb P3.2,Get3 ;判斷第三首的按鈕
        jmp Start1    ;都沒按 作迴圈
;------------------------------------------
Get1:
        mov P1,#00010000B ;顯示1
        jmp Sing1
Get2:
        mov P1,#00100000B ;顯示2
        jmp Sing2
Get3:
        mov P1,#00110000B ;顯示3
        jmp Sing3
;------------------------------------------
Sing1:
; Sing1的程式
------------------- 美好的事物 稍縱即逝
antonny-lee@yahoo.com.tw
一般會員


發表:4
回覆:1
積分:1
註冊:2005-04-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-01 00:15:59 IP:218.165.xxx.xxx 未訂閱
感謝大大的指教, 小弟在Complier時並無法看到這一段錯誤, 因為小弟就讀夜間部,老師指定一定要用組合語言,且只能用二個按鈕, 控制選歌與啟動,很丟臉的小弟於complier之後秀出很多bug, 再次感謝大大的點醒,我會再努力的
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-01 16:36:15 IP:220.228.xxx.xxx 未訂閱
初學都會這樣 別太在意 如果兩個按鈕 要另外再用一個記憶體 來存選到哪一首 ------------------- 美好的事物 稍縱即逝
系統時間:2024-05-02 18:47:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!