求大大幫忙!組合語言8051程式控制



贊助商連結


ben147
2010-11-16, 12:40 AM
各位大大

小弟目前正在做使用8051組合語言來使用超音波控制的自走車

現階段已經做出前進 轉彎

想再加入一定距離會自動停止的功能  以免碰撞(使用超音波發射器)

試過很多次都失敗  請大大們給我點建議如何加入此功能的程式或需再加上其他原件


       ORG     00H     ;開頭位置
START:
MOV40H,#10
MOV41H,#2

SETBP1.0;馬達直行
CLRP1.1
SETBP1.2
CLRP1.3

;==========================
;========主程式迴圈=========
;==========================
LOOP:


L2:
CALLWAVED

MOVA,P2;P2=>A
CPLA;A反相
ANLA,#00000111B;取3位元
CJNEA,#7,M1;A=7時(111)
MOV40H,#10
MOV41H,#2

SETBP1.0;車子往前
CLRP1.1
SETBP1.2
CLRP1.3
JMPM8
M1:
CJNEA,#2,M2;A=2時(010)
MOV40H,#10
MOV41H,#2

SETBP1.0;車子往前
CLRP1.1
SETBP1.2
CLRP1.3
JMPM8
M2:
CJNEA,#3,M3;A=3時(011)
MOV40H,#10
MOV41H,#2

SETBP1.0;車子往前
CLRP1.1
SETBP1.2
CLRP1.3
JMPM8
M3:
CJNEA,#6,M4;A=6時(110)
MOV40H,#10
MOV41H,#2

SETBP1.0;車子往前
CLRP1.1
SETBP1.2
CLRP1.3
JMPM8
M4:
CJNEA,#1,M5;A=1時(001)
MOV40H,#10
MOV41H,#2

CLRP1.0;車子右轉
CLRP1.1
SETBP1.2
CLRP1.3
CALLDELAY
JMPM8
M5:
CJNEA,#4,M7;A=4時(100)
MOV40H,#10
MOV41H,#2

SETBP1.0;車子左轉
CLRP1.1
CLRP1.2
CLRP1.3
CALLDELAY
JMPM8

M7:

CJNEA,#0,M8;A=0時(000)
DJNZ40H,M8
MOV40H,#10
DJNZ41H,M8
MOV41H,#2
CLRP1.0;車子停
CLRP1.1
CLRP1.2
CLRP1.3

JMPM8
M8:


JMPLOOP






WAVED:
CLRP3.0;選擇訊號00
CLRP3.1
CALLDELAY
MOV R6,#5
WL1:MOV R7,#5
WL2:JNBP2.7,WD1;有超音波訊號則跳WD1
DJNZ R7,WL2
DJNZ R6,WL1
SETBP2.0;P2.0設為1,右邊LED暗
JMPWAV2
WD1:
CLRP2.0;P2.0設為0,右邊LED亮
WAV2:
SETBP3.0;選擇訊號01
CLRP3.1
CALLDELAY
MOV R6,#5
WL3:MOV R7,#5
WL4:JNBP2.7,WD2;有超音波訊號則跳WD2
DJNZ R7,WL4
DJNZ R6,WL3
SETBP2.1;P2.1設為1,中間LED暗
JMPWAV3
WD2:
CLRP2.1;P2.1設為0,中間LED亮


WAV3:
CLRP3.0;選擇訊號10
SETBP3.1
CALLDELAY
MOV R6,#5
WL5:MOV R7,#5
WL6:JNBP2.7,WD3;有超音波訊號則跳WD3
DJNZ R7,WL6
DJNZ R6,WL5
SETBP2.2;P2.2設為1,左邊LED暗
JMPWAVOK
WD3:
CLRP2.2;P2.2設為0,左邊LED亮
WAVOK:
RET



; ======================
; ==廷時副程式R5來定時==
; ======================
DELAY:  MOVR5,#2
DL0:MOV R6,#60
DL1:MOV R7,#60
DL2:DJNZ R7,DL2
DJNZ R6,DL1
DJNZ R5,DL0
RET

END8051的問題

------------------------------------------------------------------------------------------

以上是原先正常動作的程式  前進 右轉 左轉  一開始設定成自走一小段距離

請問該如何加入及怎麼加入我的的功能呢?

下面附加我的圖片

贊助商連結


rushoun
2010-11-18, 10:24 PM
該不會是作業吧?還是說不知是誰留下的程式?
指令碼跟資料之間沒有空白的組合語言真是難以閱讀,更別說請網友幫忙了。
超音波不是應該有發射器跟接收器?電路好像沒看到超音波接收器(還是現在超音波收/發都已經做在一起了,太久沒碰了)。
CX20106是紅外線接收器用的前置放大器,不知道接這電路,是要跟什麼東西配合的?紅外線遙控器嗎?
建議您先用一組超音波就好,確定可行後,再一個一個加上去,會比較好做。
也許用C語言來寫,會比較易讀些。
建議到雷兒電子電機工程協會那邊問問,會比較容易得到答案。

DDSC
2010-11-18, 11:10 PM
建議到雷兒電子電機工程協會那邊問問,會比較容易得到答案。

他有去問了,不過貼錯區,貼到 X86討論區去了 :D

k2
2010-11-19, 02:40 AM
CX20106是紅外線接收器用的前置放大器,不知道接這電路,是要跟什麼東西配合的?紅外線遙控器嗎?

樓主的CX20106是應該是要鎖定40khz的超音波信號用的,
不過常用的LM567比較便宜又好用範例電路也一堆。另外樓主用的超音波接收器,
不知道是否有內建放大器,如果沒有先加放大電路再到CX20106吧。
之前玩自走車用的碰撞偵測是用紅外線,發射端用LM555震盪38khz信號,
驅動紅外線LED發射紅外線,接收端用一般家電用的38Khz紅外線模組,
一顆約NT2~30元,內建檢波放大電路只要外加一顆提升電阻,便宜又好用。

zz1001
2011-04-28, 12:46 PM
请大家提供组合语言的电子书,让我下载,感谢大家的热心

rushoun
2011-04-29, 12:37 AM
请大家提供组合语言的电子书,让我下载,感谢大家的热心

內地的朋友,這討論文應該是樓主貼錯,您就別病急亂投醫,google搜索到就貼文吧?
話說電子書,您內地那裡不是最多,我也常用超星程式看內地那邊下載的簡體電子書呀!
台灣這裡實在不多,DDSC (http://www.haifeng.idv.tw/leo/cgi-bin/forums.cgi?forum=225)站長那裡不知道有無?

DDSC
2011-04-29, 11:29 AM
我都給他了。
台灣有關ASM方面的討論真的很貧,只有1,2知名站內設有專區。
最近2個月應該會再掃3本相關書出來:
瑩圃
組合語言程式館-週邊控制
組合語言程式館實務(含繪圖)
組合語言程式館-數學運算