DJNZ R4, LOOP1 JB P3.7,$
AJMP Q ;进入循环 C2: MOV R4, #10
MOV P1, #0A4H ;数码管显示2 LCALL DELAY
M2: MOV R2, #08H;右移 MOV A, #0C0H LOOP2: MOV P2, A RR A ACALL V
DJNZ R2, LOOP2 DJNZ R4,M2 JB P3.7,$ AJMP Q
C3: MOV P1, #0B0H ;数码管显示3 LCALL DELAY MOV R4, #10
M3: MOV R2, #07H MOV R3, #08H MOV A, #55H LOOP3: MOV P2, A RL A ACALL V
DJNZ R2, LOOP3 LP1: RR A ACALLV
MOV P2, A DJNZ R3, LP1 DJNZ R4, M3 JB P3.7,$ AJMP Q
C4: MOV P1,#99H ;数码管显示4 LCALL DELAY MOV R4, #10
M4: MOV R2, #08H MOV A, #05H
LOOP4: MOV P2, A单片机原理及其接口技术课程设计
9
RR A ACALL V
DJNZ R2, LOOP4 DJNZ R4, M4 JB P3.7,$ AJMP Q
C5: MOV P1,#92H ;数码管显示5 LCALL DELAY MOV R4, #5H
M5: MOV R2, #08H MOV A, #03H
LP51: MOV P2, A RL A ACALL V
DJNZ R2, LP51 MOV R2, #8H MOV A, #11H
LP52: MOV P2, A RR A ACALL V
DJNZ R2, LP52 MOV R2, #07H MOV R3, #08H MOV A, #42H
LP53: MOV P2,A RL A ACALL V DJNZ R2,LP53 LP2: RR A ACALL V MOV P2,A DJNZ R3,LP2 MOV R2,#08H MOV A,#31H
LP54: MOV P2,A RR A ACALL V
DJNZ R2,LP54 DJNZ R4,M5 JB P3.7,$ AJMP Q V: CLR C
MOV R0,P0单片机原理及其接口技术课程设计
10
CJNER0,#0F9H,DELAY;P3.5低电平时延时长,流水灯速度慢
CJNER0,#0A4H,DELAY2 ;P3.6低电平时延时短,流水灯速度快 ACALL DELAY1 RET;子程序返回
DELAY: MOV R1,#5 ;延时0.2s D1: ACALL DELAY2 DJNZ R1, D1 RET
DELAY1:MOV R6,#250 ;延时0.1s D2: MOV R7,#198 NOP
DJNZ R7,$ DJNZ R6, D2 RET
DELAY2: MOV R6,#250 ;延时0.05s DL3: MOV R7,#18 NOP
DJNZ R7,$ DJNZ R6,DL3 RET
END ;程序结束单片机原理及其接口技术课程设计
11
6程序调试
本程序第一次在Keil 51软件中编译没有错误但烧录到单片机后功能未得到实现,检查原因为单片机不能检查按键有效按下,经过调整问题解决。第二次错误仍然是效果没有实现,检查原因为A累加器的勿用,使A累加器中的内容不为我们预期的数据,导致我们的LED显示和数码管显示接不正确,解决方法是将错误使用的A累加器换做R0寄存器。经过调试和纠错,我们的实物效果得到正确显示。
7实物效果展示