|
想要實(shí)現(xiàn)的目的是先按下K1后按下K2顯示器就加一,反過來就減一?墒钦{(diào)了一個(gè)晚上感覺開關(guān)這里還是不對 求大神看一下!
ORG 0000H ;程序儲存器規(guī)劃
LJMP MAIN ;跳轉(zhuǎn)到主程序
ORG 0003H ;T0中斷
LJMP KEY1 ;轉(zhuǎn)向外部中斷0中斷服務(wù)程序
ORG 0013H ;T1中斷
LJMP KEY2 ;轉(zhuǎn)向外部中斷0中斷服務(wù)程序
ORG 0100H ;主程序
MAIN:
MOV SP, #5FH ;堆棧重新設(shè)置到從60H開始的片內(nèi)RAM區(qū)
SETB EA ;總中斷開關(guān)打開
SETB EX0 ;INT0中斷打開
SETB EX1 ;INT1中斷打開
SETB IT0 ;T0口下降沿觸發(fā)
SETB IT1 ;T1口下降沿觸發(fā)
;-----------------------------------------
MOV R1, #00 ;R0初始值設(shè)為00
MAIN1:
CALL JISHU ;調(diào)用JISHU計(jì)數(shù)部分
CALL PRINT ;調(diào)用PRINT顯示部分
JMP MAIN1
;-----------------------------------------
KEY1:
LCALL DELAY
JNB P3.3, JIAYI
JNB P3.2, TX1
RETI
JIAYI:
INC R1
CJNE R1, #101, TX1 ;若R1小于101則跳轉(zhuǎn)到TS1,大于則繼續(xù)
MOV R1, #100
TX1:RETI
;-----------------------------------------
KEY2:
JNB P3.2,JIANYI
JNB P3.3, TS1
LCALL DELAY
RETI
JIANYI:
DEC R1
CJNE R1, #255, TS1
MOV R1, #0
TS1:RETI
;-----------------------------------------
JISHU:
MOV DPTR, #TAB
MOV R0, #33H
MOV A, R1
MOV B, #100
DIV AB ;十位個(gè)位分離
MOVC A, @A + DPTR
MOV @R0, A
INC R0
MOV A, B ;B為余數(shù)
MOV B, #10
DIV AB
MOVC A, @A + DPTR
MOV @R0, A
INC R0
MOV A, B ;B為余數(shù)表示個(gè)位數(shù)
MOVC A, @A + DPTR
MOV @R0, A
RET
;-----------------------------------------
TAB: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H
;-----------------------------------------
PRINT:
MOV R0, #33H
MOV R5, #04H
MOV R4, #3
LOOP4:
MOV P0, @R0
MOV P2, R5
MOV A, R5
RR A
MOV R5, A
INC R0
DJNZ R7, $
DJNZ R7, $
ANL P2, #0
DJNZ R4, LOOP4
RET
;-----------------------------------------
DELAY:MOV 33H,#10
D1: MOV 31H,#200
D2: MOV 30H,#250
DJNZ 30H,$
DJNZ 32H,D2
DJNZ 33H,D1
RET
END
|
|