51单片机按键计数问题求助,汇编
发布网友
发布时间:2022-06-16 22:35
我来回答
共1个回答
热心网友
时间:2023-11-08 21:28
假设晶振频率12MHz,P2.5控制蜂鸣器
ORG 0000H
LJMP START
ORG 000BH;T0中断
LJMP T0INT;
START:
MOV SP,#80H ;初始堆栈值
MOV TMOD,#01H ;定时器0工作于方式1
MOV TH0,#0FEH ;定时器0定时时间=500uS
MOV TL0,#00CH ;设置定时初值
SETB ET0 ;使能定时器0中断
SETB EA ;开总中断
SETB P2.5
MOV R1,#0
DISP:
MOV A,R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
K_1:
JB P3.0,K_1
CALL DELAY
JB P3.0,K_1
INC R1
JNB P3.0,$
CJNE R1,#10,DISP
MOV R1,#0
MOV YSJS1,#0
MOV YSJS2,#10
SETB TR0;定时器0启动
SJMP DISP
DELAY:
MOV R6,#20
L1:
MOV R7,#248
DJNZ R7,$
DJNZ R6,L1
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;定时器0中断服务程序
T0INT: MOV TH0,#0FEH ;定时器0定时时间=500uS
MOV TL0,#00CH ;设置定时初值
CPL P2.5 ;驱动蜂鸣器
DJNZ YSJS1,QT0 ;
DJNZ YSJS2,QT0 ;鸣响1.28秒
CLR TR0 ;
SETB P2.5
QT0: RETI ;
YSJS1 EQU 30H ;
YSJS2 EQU 31H ;
END