標題:
51單片機求助
[打印本頁]
作者:
sjztjk
時間:
2013-8-17 14:38
標題:
51單片機求助
本帖最后由 sjztjk 于 2013-8-17 15:20 編輯
最近做了個小程序試驗,結(jié)果不成功,求高手指點,謝謝!不成功現(xiàn)象為:按下S1時D1與D2同時亮,按下S2時D1與D2同時滅!
程序如下:
ORG 0 ;程序從0地址開始
START: MOV P2,#0FFH ;將P2口設計為輸入功能,即P2口全部為11111111高電平
;按鍵檢測程序=============================================================
LOOP: JNB P2.0,ON ;檢測P2.0口,若P2.0為低電平(S1按下),則跳至ON處執(zhí)行
JNB P2.1,OFF ;檢測P2.1口,若P2.1為低電平(S2按下),則跳至OFF處執(zhí)行
JNB P2.2,OFF2 ;檢測P2.2口,若P2.2為低電平(S3按下),則跳至OFF2處執(zhí)行
JMP LOOP ;跳至LOOP處形成一個循環(huán)
;開燈子程序===============================================================
ON: CLR P0.0 ;使P0.0清零,D1亮
CALL DELAY ;調(diào)用延時子程序
CLR P0.1 ;使P0.1清零,D2亮
ON1: JB P2.0,LOOP ;檢測P2.0口,若P2.0為高電平(S1放開),則跳至LOOP處執(zhí)行
JMP ON1 ;否則跳至ON1形成一個小循環(huán)
;關燈子程序===============================================================
OFF: SETB P0.0 ;使P0.0置位,即設定為1,D1滅
CALL DELAY ;調(diào)用延時子程序
SETB P0.1 ;使P0.1置位,即設定為1,D2滅
CLR P0.2 ;使P0.2清零,D3亮
OFF1: JB P2.1,LOOP ;檢測P2.1口,若P2.1為高電平(S2放開),則跳至LOOP處執(zhí)行
JMP OFF1 ;否則跳至OFF1形成一個循環(huán)
OFF2: SETB P0.2 ;使P0.2置位,即設定為1,D3滅
END ;程序結(jié)束
;1秒延時子程序(12MHz晶振)
DELAY: MOV R1,#50
DEL0: MOV R2,#91
DEL1: MOV R3,#100
DJNZ R3,$
DJNZ R2,DEL1
DJNZ R1,DEL0
RET
END
yawihe.JPG
(103.99 KB, 下載次數(shù): 152)
下載附件
2013-8-17 15:20 上傳
作者:
青蘋果
時間:
2013-8-18 14:53
1、你可以把延時程序加長,這樣就不會同時亮滅
2、程序最后面,如果你不想按鍵再次有效,可以寫成JMP $,而不是直接END;如果希望按鍵再次有效,可以像前面兩個按鍵那樣,加個小循環(huán)判斷,,,
作者:
livingliving
時間:
2015-4-10 09:15
雖然不懂,但還是要頂,畢竟每一位老手都是從新手蛻變而來的,贊一個。。。。。。
作者:
mm494408445
時間:
2015-11-1 12:48
頂上去,代碼問題一定可以解決
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1