采用定時器和外部中斷方式,按第一個鍵(K1)開始計時,按第二個鍵(K2)計時停止,此時在八位數(shù)碼管上顯示測量的時間間隔數(shù)值(單位:秒)。
接線如下
之前用一位靜態(tài)數(shù)碼管做了這個實驗,想在這個基礎(chǔ)上修改但是不知道怎么才能實現(xiàn)顯示按下兩個按鍵時間間隔
循環(huán)顯示0到9(兩個外部中斷,兩個按鍵控制開始和暫停)
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H ;定義了一個數(shù)組
UP0:
MOV R7,#10 ;等下用來記錄循環(huán)了次數(shù),因為0-9有10個數(shù),所以賦值為10
MOV R2,#00H ;用來存儲偏移量
MOV DPTR,#TAB ;將數(shù)組的首地址用DPTR來記錄
UP:
MOV A,R2 ;將當前偏移量賦值給變量A
MOVC A,@A+DPTR ;MOVC A,@A+DPTR是讀取地址為A+DPTR存儲單元的內(nèi)容。
MOV P2,A ;讀取到的數(shù)組內(nèi)容賦值給P2引腳
LCALL DELAY1000MS ;LCALL的意思是調(diào)用,調(diào)用DELAY1000MS
INC R2 ;inc代表加一(偏移量加一)
DJNZ R7,UP ;將R7減一,非0則跳轉(zhuǎn)到UP,為0則執(zhí)行下一句(可以執(zhí)行10次)
SJMP UP0 ;SJMP是跳轉(zhuǎn)的意思,跳轉(zhuǎn)到UP0的位置
DELAY1000MS: ;這里往下是延時函數(shù)的部分,可以理解為執(zhí)行完下面這這語句用時1秒
PUSH 30H
PUSH 31H
PUSH 32H
MOV 30H,#8
MOV 31H,#1
MOV 32H,#236
NEXT:
DJNZ 32H,NEXT
DJNZ 31H,NEXT
DJNZ 30H,NEXT
POP 32H
POP 31H
POP 30H
RET
END
|