?? daima7.asm
字號:
ORG 2000H
DCW T1INT ;定義T1中斷入口
ORG 2080H
LD SP,#00C0H
DI
CLRB INT_PENDING
LDB INT_MASK,#01H ;開放T1溢出中斷
LDB IOC0,#86H ;將HSI.1作為時鐘源,復位T2
LOW: LDB AX,HSI_STATUS ;讀HSI狀態
LD BX,HSI_TIME ;讀HSI時間
JBS AX,1,FIRHI ;判斷是否有按鍵按下
SJMP LOW
FIRHI: LD REG1,TIMER1
CLR REG3
LDB IOC1,#04H
EI ;允許中斷
JBC P0,7,COUNT
LOAGAI: LDB AX,HSI_STATUS
LD BX,HSI_TIME
JBC AX,1,LOAGAI ;判斷有否抖動
LD REG4,REG3
LD REG2,TIMER1
LD REG5,TIMER2
INC REG5
SHR REG5,#01H
SJMP LOAGAI
T1INT: PUSHF ;T1溢出中斷服務子程序
INC REG
POPF
RET
END
利用T1和T2記錄開關按下的抖動時間和次數,用T1來記錄開關抖動時間,第一次抖動時刻存放在REG1寄存器中,最后一次抖動時間存放在REG2寄存器中,T1溢出次數存放在REG4寄存器中,那么抖動時間就可以計算了。用T2來記錄開關抖動次數,由于開關每次跳變都要使定時器T2計數,因此,開關的抖動次數應為T2的值再加1除2,所得到的結果存放在REG5中,開關接在HSI.1引腳。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -