2008-05-11, 07:58 PM
|
#1
|
註冊會員
|
(MCS-51)89C52的一些程式問題!?
-------------------- 閱讀本主題的最佳解答--------------------
;主程式
;
;
ORG 0000H
AJMP MAIN
;
ORG 0003H ;INT0中斷服務副程式起始處
AJMP INT0_INT
;
ORG 0013H ;INT1中斷服務副程式起始處
AJMP INT1_INT
;
MAIN: MOV SP,#30H
MOV TCON,#00000000B ;設定INT0及INT1為低準為觸發
MOV IP,#00000001B ;INT0設定為高優先權
SETB EA ;致能所有的中斷
SETB EX0 ;起始INT0中斷
SETB INT0 ;將INT0設為輸入端
SETB EX1 ;起始INT1
SETB INT1 ;將INT1設為輸入端
;
MOV A,#00000000B
LOOP: MOV P1,A
ACALL DELAY
CPL A
AJMP LOOP
;
;
;
INT0_INT: PUSH A
PUSH PSW
CLR RS1
SETB RS0
MOV R2,#07
MOV A,#11111100B
LEFT: MOV P1,A
ACALL DELAY
RL A
DJNZ R2,LEFT
POP PSW
POP A
RETI
;
;
;
INT1_INT: PUSH A
PUSH PSW
SETB RS1
CLR RS0
MOV R2,#07
MOV A,#01111111B
RIGHT: MOV P1,A
ACALL DELAY
RR A
DJNZ R2,RIGHT
POP PSW
POP A
RETI
;
;
;
DELAY: MOV R0,#248
DEL1: MOV R1,#200
DEL2: DJNZ R1,DEL2
DJNZ R0,DEL1
RET
;
END
現在我的動作要求為
一個七段顯示器
利用外部中斷INT0,INT1
INT0中斷執行 1 -> 2 -> 3 ->.......-> 9 優先數較低
INT1中斷執行 9 -> 8 -> 7 ->.......-> 1 優先數較高
主程式中斷執行閃爍
因此必須將8個LED燈改為七段顯示器
但程式部分就不太清楚該如何改
試過一些方法及書籍都不得其解
因接觸不深效果有限
煩請高手能舉手之勞幫解
敝人也會繼續試試
多謝幫忙
|
|
|
送花文章: 258,
收花文章: 118 篇, 收花: 436 次
|