全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1287
推到 Plurk!
推到 Facebook!

幫忙一下...我剛學8051...卡住ㄌ

答題得分者是:阿信
小強
一般會員


發表:36
回覆:39
積分:15
註冊:2005-03-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-18 23:53:42 IP:203.72.xxx.xxx 未訂閱
我要先接每隔一ㄍ8ㄍ燈都閃爍3次然後0.5秒左4ㄎ又4ㄎ交替閃爍4次然後一值循環 以下我寫的...第一點就卡住ㄌ.....燈不滅...誰能交我滅燈ㄉ方法 ORG 00H MOV A,#00H LOOP: MOV P1,A ACALL DELAY CJNE A,#00H,LOOP SJMP LOOP DELAY: MOV R6,#250 S1: MOV R7,#200 DJNZ R7,$ DJNZ R6,S1 RET END
48932005
初階會員


發表:3
回覆:42
積分:29
註冊:2003-09-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-19 00:27:56 IP:211.74.xxx.xxx 未訂閱
引言: 我要先接每隔一ㄍ8ㄍ燈都閃爍3次然後0.5秒左4ㄎ又4ㄎ交替閃爍4次然後一值循環 以下我寫的...第一點就卡住ㄌ.....燈不滅...誰能交我滅燈ㄉ方法 ORG 00H MOV A,#00H LOOP: MOV P1,A ACALL DELAY CJNE A,#00H,LOOP SJMP LOOP DELAY: MOV R6,#250 S1: MOV R7,#200 DJNZ R7,$ DJNZ R6,S1 RET END
這種問題其實應該要自己DEBUG才對....
小強
一般會員


發表:36
回覆:39
積分:15
註冊:2005-03-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-19 00:31:10 IP:203.72.xxx.xxx 未訂閱
剛剛又找一下網頁run一下,可以熄ㄌ,往下一階段進行,部會在請教各位
小強
一般會員


發表:36
回覆:39
積分:15
註冊:2005-03-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-19 01:09:11 IP:203.72.xxx.xxx 未訂閱
又卡住ㄌ...加入.....延遲就不作動

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-19 01:28:28 IP:59.113.xxx.xxx 未訂閱
不知道你在寫啥,也不知道你的問題何在.. 善用kiel C等軟體的Debug功能,自己除錯看看吧. 不行的話,把你的程式與問題詳細說明,再po上來吧. ------------------------------------ 生命的目的,在幻化出多采多姿的組合。 生活的意義,在捕捉住稍縱即逝的感動。 ------------------------------------
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
小強
一般會員


發表:36
回覆:39
積分:15
註冊:2005-03-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-19 01:46:44 IP:203.72.xxx.xxx 未訂閱
我有用你說那ㄍ除錯但是不行ㄟ,我現在卡在只要加上延遲時間整個程式都錯,或者有誰知到哪ㄍ網站有範例讓我參考~第一次自己寫....思落感真大
小強
一般會員


發表:36
回覆:39
積分:15
註冊:2005-03-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-19 02:00:19 IP:203.72.xxx.xxx 未訂閱
我這樣寫不對嗎?有誰能指證我我位啥燈部會熄滅或亮? ORG 00H MOV A,#FFH LOOP: MOV P1,A MOV A,#00H MOV P1,A RR A ACALL DELAY SJMP LOOP DELAY: MOV R6,#250 S1: MOV R7,#200 DJNZ R7,$ DJNZ R6,S1 RET END

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-19 02:22:51 IP:59.113.xxx.xxx 未訂閱
你改成這樣試試吧!!
       ORG       00H
       JMP       START
       ORG       30H
START:
       MOV       P1,#FFH
       CALL      DELAY
  
       MOV       P1,#00H
       CALL      DELAY
       JMP       START
DELAY: 
       MOV       R5,#25
S1:    MOV       R6,#40
S2:    MOV       R7,#249
       DJNZ      R7,$
       DJNZ      R6,S2
       DJNZ      R5,S1
       RET
       END 
這個程式功能只有閃爍循環,其他功能你自己增加修改吧! ------------------------------------ 生命的目的,在幻化出多采多姿的組合。 生活的意義,在捕捉住稍縱即逝的感動。 ------------------------------------ 發表人 - ㊣ 於 2005/03/19 11:44:30
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
小強
一般會員


發表:36
回覆:39
積分:15
註冊:2005-03-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-03-19 11:26:02 IP:203.72.xxx.xxx 未訂閱
請問那位正的大大 JMP START ORG 30H 位啥跳到開死完下還有一ㄍORG 30H ORG 30H代表是??? 我有點搞不懂? 能交我小弟媽...我剛學有些語法根本不懂

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-03-19 11:39:41 IP:59.113.xxx.xxx 未訂閱
ORG 30H----->程式由30H開始堆疊 ------------------------------------ 生命的目的,在幻化出多采多姿的組合。 生活的意義,在捕捉住稍縱即逝的感動。 ------------------------------------
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
阿信
版主


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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-03-19 12:44:07 IP:211.21.xxx.xxx 未訂閱
小強你好    您的程式有些問題  小弟不客氣指證了    以下是你的原本的程式 
        ORG 00H
        MOV A,#FFH        ;A=#FFH
LOOP: 
        MOV P1,A        ;P1=A=#FFH
        MOV A,#00H        ;A=#00H
        MOV P1,A        ;P1=A=#00H
        RR A                ;A=#00H,做RR A後 還是#00H
        ACALL DELAY        ;Delay
        SJMP LOOP        ;所以P1=#00H 維持了一個Delay Time    ;-----------------        ;第二次 
LOOP: 
        MOV P1,A        ;P1=A=#00H
        MOV A,#00H        ;A=#00H
        MOV P1,A        ;P1=A=#00H
        RR A                ;A=#00H,做RR A後 還是#00H
        ACALL DELAY        ;Delay
        SJMP LOOP        ;所以P1=#00H 又維持了一個Delay Time
;-----------------    第三次 第四次 以後都一樣 P1永遠等於#00H    
關於程式縮排 請參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=7326 另外請教你的電路是輸出0亮還是1亮 及你使用的晶體震盪頻率是幾MHz 寫一個範例程式碼 給你參考 重點在程式流程的觀念 你的程式有一個問題是 LED狀態不可以存在A暫存器 因為A暫存器是公用的 不可以把它霸住
    ;R1        :紀錄LED的狀態
;R2        :LED閃爍次數的計數器
;R5,R6,R7:Delay用的計數器            ORG 00H                
        jmp Start
;---------------------------------
        ORG 30H                
Start:        
        call Init
Loop:
        call LED_RR        ;LED右旋
        call LED_Flash        ;LED閃爍
        jmp Loop
;---------------------------------
Init:
        mov A,#01H        ;LED的初始狀態
        mov R1,A
        ret
;---------------------------------
LED_RR: ;LED右旋
        mov A,R1        ;P1=R1
        mov P1,A        ;
        rr A
        mov R1,A        
        call Delay
        call Delay
        ret
;---------------------------------
LED_Flash: ;LED閃爍
        mov a,#03H        ;閃3次
        mov R2,a        ;
LED_Flash_Loop1:
        mov a,#FFH        ;全亮半秒
        mov P1,a        ;
        call Delay        ;
        mov a,#00H        ;全滅半秒
        mov P1,a        ;
        call Delay        ;
        djnz R2,LED_Flash_Loop1            mov a,#04H        ;左右交替亮4次
        mov R2,a        ;
LED_Flash_Loop2:
        mov a,#F0H        ;左邊亮半秒
        mov P1,a        ;
        call Delay        ;
        mov a,#0FH        ;右邊亮半秒
        mov P1,a        ;
        call Delay        ;
        djnz R2,LED_Flash_Loop2
        ret
;---------------------------------
DELAY: 
        MOV        R5,#25
S1:
        MOV        R6,#40
S2:
        MOV        R7,#249
        DJNZ        R7,$
        DJNZ        R6,S2
        DJNZ        R5,S1
        RET
;---------------------------------
        END    
本來只想寫虛擬碼的 寫一寫整個程式都出來了XD
小強
一般會員


發表:36
回覆:39
積分:15
註冊:2005-03-14

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-03-19 13:17:03 IP:203.72.xxx.xxx 未訂閱
阿信兄,謝謝大大指導..我會認真的了解
系統時間:2024-05-09 4:02:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!