|
采用定時(shí)器和外部中斷方式,按第一個(gè)鍵(K1)開始計(jì)時(shí),按第二個(gè)鍵(K2)計(jì)時(shí)停止,此時(shí)在八位數(shù)碼管上顯示測(cè)量的時(shí)間間隔數(shù)值(單位:秒)。
接線如下
之前用一位靜態(tài)數(shù)碼管做了這個(gè)實(shí)驗(yàn),想在這個(gè)基礎(chǔ)上修改但是不知道怎么才能實(shí)現(xiàn)顯示按下兩個(gè)按鍵時(shí)間間隔
循環(huán)顯示0到9(兩個(gè)外部中斷,兩個(gè)按鍵控制開始和暫停)
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H ;定義了一個(gè)數(shù)組
UP0:
MOV R7,#10 ;等下用來記錄循環(huán)了次數(shù),因?yàn)?-9有10個(gè)數(shù),所以賦值為10
MOV R2,#00H ;用來存儲(chǔ)偏移量
MOV DPTR,#TAB ;將數(shù)組的首地址用DPTR來記錄
UP:
MOV A,R2 ;將當(dāng)前偏移量賦值給變量A
MOVC A,@A+DPTR ;MOVC A,@A+DPTR是讀取地址為A+DPTR存儲(chǔ)單元的內(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í)函數(shù)的部分,可以理解為執(zhí)行完下面這這語(yǔ)句用時(shí)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
|
評(píng)分
-
查看全部評(píng)分
|