单片机定时器中断实验
实验 定时器中断实验
一. 实验器件
二. 实验目的
1. 理解定时器中断的应用原理及使用效果。
四. 工作现象
系统上电后,数码管SM1显示0,K4键使显示数值加1,K3键使显示数值减1。该数值代表定时器倒计时的时间,单位为秒。K1键使定时器开始计时,当倒计时时间到0时,8只流水灯闪烁同时蜂鸣器报警。其中使用了定时器T0的中断来获取50ms的定时时间。
六. 实验源程序 ;伪定义 LED EQU P1
SM1OUT BIT P0.2 SM EQU P2 SPK EQU P0.4
MCUDATA EQU 30H
T0NUM1 EQU 31H T0NUM2 EQU 32H
KEY1 BIT P3.2 KEY3 BIT P3.4 KEY4 BIT P3.5
DLY1 EQU 40H DLY2 EQU 41H DLY3 EQU 42H
DLY4 EQU 43H DLY5 EQU 44H DLY6 EQU 45H
;AT89S51,12M晶振 ORG 0000H SJMP START ORG 000BH LJMP T0ZD
;T0中断初始化 START:SETB SM1OUT SETB EA SETB ET0
MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV T0NUM1,#20
;初始化 CLR A
MOV MCUDATA,A
MOV T0NUM2,MCUDATA MOV DPTR,#SMTAB MOVC A,@A+DPTR MOV SM,A CLR SM1OUT
;按键查询
SEEK:JNB KEY1,DLYK1 JNB KEY3,DLYK3 JNB KEY4,DLYK4 SJMP SEEK ;KEY1键去抖动
DLYK1:LCALL DLY15MS JB KEY1,SEEK SJMP KEY1DO ;KEY3键去抖动
DLYK3:LCALL DLY15MS JB KEY3,SEEK SJMP DECDATA ;KEY4键去抖动
DLYK4:LCALL DLY15MS JB KEY4,SEEK SJMP INCDATA
;KEY3键减1显示
DECDATA:MOV A,MCUDATA JZ ENDDEC DEC MCUDATA MOV A,MCUDATA MOVC A,@A+DPTR MOV SM,A JNB KEY3,$ ENDDEC: SJMP SEEK
;KEY4键加1显示
INCDATA:MOV A,MCUDATA XRL A,#09H JZ ENDINC INC MCUDATA MOV A,MCUDATA
MOVC A,@A+DPTR MOV SM,A JNB KEY4,$ ENDINC: SJMP SEEK
;KEY1处理过程
KEY1DO:MOV A,MCUDATA JZ TOSPK
MOV T0NUM2,MCUDATA SETB TR0 SJMP $ TOSPK:LCALL SPKDO SJMP $
;定时器中断子程序 T0ZD:CLR TR0
MOV TH0,#3CH MOV TL0,#0B0H DJNZ T0NUM1,ENDT0 MOV T0NUM1,#20 DEC MCUDATA MOV A,MCUDATA MOVC A,@A+DPTR MOV SM,A
DJNZ T0NUM2,ENDT0 LCALL SPKDO ENDT0:SETB TR0
RETI ;中断返回
;蜂鸣器报警子程序 SPKDO: CLR SPK
MOV LED,#00H MOV R6,#40 SPKON: LCALL DLY15MS DJNZ R6,SPKON SETB SPK
MOV LED,#0FFH MOV R6,#40 SPKOFF:LCALL DLY15MS DJNZ R6,SPKOFF SJMP SPKDO RET
;延时子程序,约15MS DLY15MS:MOV DLY1,#20 LOP1:MOV DLY2,#20 LOP2:MOV DLY3,#20 LOP3:DJNZ DLY3,LOP3 DJNZ DLY2,LOP2 DJNZ DLY1,LOP1 RET;子程序返回
;数码显示编码数据
SMTAB: DB 21H,0AFH,32H,2AH,0ACH DB 68H,60H,2FH, 20H,28H END
;该程序已经过测试,运行稳定可靠。