两位倒计时器程序(单片机—汇编语言)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档