两位倒计时器程序(单片机—汇编语言)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
两位倒计时器程序
ORG00H
JMP START
ORG30H
START:MOV P2,#00H;位选置低电平显示00
MOV P3,#0FH;键盘置P3.4低电平
MOV R4,#0;显示标志显示00
MOV DPTR,#TABLE;
SETB P0.7
K:MOV R3,#00H;按键按下或未弹起标志
JNB P3.0,W1;判断按键S1是否按下按下转判断S1按键是否弹起
JNB P3.1,W2;判断按键S2是否按下按下转判断S2按键是否弹起
JNB P3.2,INT;判断按键S3是否按下按下转倒计时设置子程序
JMP DISP;转显示和判断按键S4是否按下
W1:JB P3.0,IN1;判断按键S1是否弹起弹起转加1子程序设置 MOV R3,#1;设置按键S1未弹起标志
JMP DISP;转显示和判断按键S4是否按下
W2: JB P3.1,IN0;判断按键S2是否弹起弹起转减1子程序设置MOV R3,#2;设置按键S2未弹起标志
DISP: JNB P3.3,START ;判断按键S3是否按下按下转复位
MOV A,R4;
MOV B,#10
DIV AB
MOV21H,B
DISP1:SETB P2.1;显示十位
CLR P2.0
LCALL DEL;调用显示和延时子程序
DISP2:MOV A,21H;显示个位
SETB P2.0
CLR P2.1
LCALL DEL;调用显示和延时子程序
CJNE R3,#4,K1;判断按键S3是否按下否就转判断其他按键按下情况
DJNZ R2,DISP;倒计时显示延时:0.5msX2X200=200ms=0.2s
DJNZ R1,DISP;倒计时显示延时:0.5msX2X5+200ms=205ms=0.205s
AJMP INT;转倒计时设置子程序
K1:INC R3;判断按键按下或未弹起标志加1
CJNE R3,#3,K2;判断按键S2是否按下未弹起否就转判断其他按键按下情况 AJMP W2;转继续转判断S2按键是否弹起
K2: CJNE R3,#2,K;判断按键S1是否按下未弹起否就转判断其他按键按下情况AJMP W1;转继续转判断S1按键是否弹起
IN1: CJNE R4,#99,ADD1 ;判断当前值是否为99否就转加1子程序(加1子程序设置) AJMP START;复位
ADD1: INC R4;当前值加1(加1子程序)
AJMP K;转继续判断是否有按键按下
INT:MOV R3,#4;设置倒计时标志(倒计时子程序设置)
MOV R2,#200;置显示中循环次数
MOV R1,#5;置显示外循环次数
IN0: CJNE R4,#0,SUBB1 ;判断当前值是否为0否就转减1子程序(减1子程序设置) CJNE R3,#4,SUBB0 ;如果当前值为0判断S3是否按下否就S2按下转减1
AJMP START;转复位
SUBB0:MOV R4,#100;100-1=99(0-1=99)
SUBB1:DJNZ R4,DISP;当前值减在转显示(减1子程序)
CJNE R3,#4,K;判断S3是否按下否就转继续判断是否有按键按下
CLR P0.7;蜂鸣
MOV P2,#00H;位选置0开
MOV P1,#3FH;当前值显示00
MOV R3,#5;置蜂鸣延时次数标志
DELAY:MOV R7,#250
DELA: MOV R6,#20
DEL:MOVC A,@A+DPTR
MOV P1,A
MOV R5,#200
DJNZ R5,$;2机周X250X1us/机周=500us=0.5ms
CJNE R3,#5,EXIT;判断是否是蜂鸣的延时不是转中断返回
DJNZ R6,DEL;0.5msX10=5ms
DJNZ R7,DELA;5msX200=1000ns=1s
AJMP START;复位
EXIT: RET
TABLE:DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END