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