资源描述:
《两位倒计时器程序(单片机—汇编语言)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、两位倒计时器程序 ORG 00H JMP START ORG 30HSTART:MOV P2,#00H ;位选置低电平 显示00 MOV P3,#0FH ;键盘置P3.4低电平 MOV R4,#0 ;显示标志 显示00 MOV DPTR,#TABLE; SETB P0.7K: MOV R3,#00H ;按键按下或未弹起标志 JNB P3.0,W1 ;判断按键S1是否按下 按下转判断S1按键是否弹起
2、 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是否弹起 弹起
3、转减1子程序设置 MOV R3,#2 ;设置按键S2未弹起标志DISP:JNB P3.3,START;判断按键S3是否按下 按下转复位 MOV A,R4 ; MOV B,#10 DIV AB MOV 21H,BDISP1:SETB P2.1 ;显示十位 CLR P2.0 LCALLDEL ;调用显示和延时子程序 DISP2:MOV A,21H ;显示个位 SETB P2.0 CLR P2.
4、1 LCALLDEL ;调用显示和延时子程序 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 CJ
5、NE 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 ;
6、当前值加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
7、;转复位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:M
8、OV R6,#20DEL: 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