幫忙一下...我剛學8051...卡住ㄌ |
答題得分者是:阿信
|
小強
一般會員 發表:36 回覆:39 積分:15 註冊:2005-03-14 發送簡訊給我 |
|
48932005
初階會員 發表:3 回覆:42 積分:29 註冊:2003-09-13 發送簡訊給我 |
|
小強
一般會員 發表:36 回覆:39 積分:15 註冊:2005-03-14 發送簡訊給我 |
|
小強
一般會員 發表:36 回覆:39 積分:15 註冊:2005-03-14 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
不知道你在寫啥,也不知道你的問題何在.. 善用kiel C等軟體的Debug功能,自己除錯看看吧.
不行的話,把你的程式與問題詳細說明,再po上來吧. ------------------------------------
生命的目的,在幻化出多采多姿的組合。
生活的意義,在捕捉住稍縱即逝的感動。
------------------------------------
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
小強
一般會員 發表:36 回覆:39 積分:15 註冊:2005-03-14 發送簡訊給我 |
|
小強
一般會員 發表:36 回覆:39 積分:15 註冊:2005-03-14 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
你改成這樣試試吧!!
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 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
ORG 30H----->程式由30H開始堆疊 ------------------------------------
生命的目的,在幻化出多采多姿的組合。
生活的意義,在捕捉住稍縱即逝的感動。
------------------------------------
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
阿信
版主 發表:111 回覆:983 積分:813 註冊:2005-03-10 發送簡訊給我 |
小強你好 您的程式有些問題
小弟不客氣指證了 以下是你的原本的程式
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |