1、P3.4 定时器0P3.5 定时器1堆栈栈底为50H内部RAM:30H 当前位置值31H 第一呼叫值32H 第二呼叫值35H37H 软件延时的计数值38H 辅助闪烁值20H.0 呼叫值的方向标志位20H.1 判断呼叫次数的标志位20H.2 软件计数溢出位四、软件系统设计 定时器中断略2程序清单 PRE EQU 30H N EQU 31H M EQU 32H TIME1 EQU 35H TIME2 EQU 36H TIMES EQU 37H LEDMASK EQU 38H Q BIT 20H.0 SIGN BIT 20H.1 TIMEOUT BIT 20H.2 ORG 0000H AJMP MA
2、IN ORG 000BH AJMP TT0 ORG 0013H AJMP RING ORG 001BH AJMP TT1MAIN: MOV PRE,#0 ;置初始位置 ACALL LIGHT ;灯亮 CLR SIGN ;呼叫标志位清零START: MOV SP,#50H SETB P3.3 SETB IT1 SETB EAWAIT: SETB EX1 CLR SIGNWAIT1: JNB SIGN,WAIT1 ;等待第一呼叫RING_N: MOV A,N CJNE A,PRE,CON1 ;判是否到打第一呼叫位 LCALL SPARK ;到站灯闪烁 AJMP WAITCON1: MOV A,N
3、CJNE A,PRE,3+$ ;判上行或下行 JC DOWN1 INC PRE ACALL LIGHT ACALL DEL MOV A,N CJNE A,PRE,BREAK ;判是否查询第二呼叫 LCALL SPARK DOWN1: DEC PRE AJMP CON1+9BREAK: JB SIGN,CON1 ;第二呼叫子程序 MOV A,MA_M: CJNE A,PRE,COMP1 SETB SIGN LCALL SPARK AJMP CON1COMP1: MOV R0,#0 ;比较第二呼叫是否与行车方向同向 JB Q,COMP3COMP2: JC COMP4 AJMP COMP5COMP3
4、: INC R0 AJMP COMP2COMP4:COMP5: CJNE R0,#0,COMP6 AJMP CON2COMP6: CJNE R0,#2,CLRSCLRS: SETB SIGN SETB EX1CON2: JB Q,M_N_DM_N_U: MOV A,M ;上行时比较M、N CJNE A,N,3+$ JC M_U1N_U1: INC PRE ;上行先到N CJNE A,PRE,N_U1 ACALL SPARKM_U2:上行后到M ACALL LIGH CJNE A,PRE,M_U2M_U1: INC PRE ;上行先到M CJNE A,PRE,M_U1N_U2:上行后到N CJN
5、E A,PRE,N_U2M_N_D:下行比较 M、N JC N_D1M_D1: DEC PRE ;下行先到M CJNE A,PRE,M_D1N_D2:下行后到N CJNE A,PRE,N_D2N_D1:下行先到N CJNE A,PRE,N_D1M_D2:下行后到M CJNE A,PRE,M_D2LIGHT: MOV A,PRE ;位置灯亮 CJNE A,#0,6+$ MOV P1,#11111110B CJNE A,#1, 6+$ MOV P1,#11111101B CJNE A,#2,6+$ MOV P1,#11111011B CJNE A,#3,6+$ MOV P1,#11110111B
6、CJNE A,#4,6+$ MOV P1,#11101111B CJNE A,#5,6+$ MOV P1,#11011111B CJNE A,#6,6+$ MOV P1,#10111111B CJNE A,#7,6+$ MOV P1,#01111111B RETRING: CLR EA ;外部中断1子程序 PUSH ACC PUSH PSW PUSH 00H ACALL RINGS POP 00H POP PSW POP ACC RETIRINGS: MOV A,P3 ANL A,#7 CPL SIGN JNB SIGN,TO_M MOV N,ATOTO: LCALL LEDTO_M: MOV
7、 M,A ;第二呼叫转入此处 CLR EX1 CJNE A,N,7+$ CJNE A,PRE,3+$ MOV Q,C AJMP TOTOLED: MOV A,#1 ;LCD显示 MOV DPTR,#0FF21H MOVX DPTR,A INC DPTR JNB SIGN,L_MDL3: ADD A,#4 MOVC A,A+PC ACALL DLAY DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90HDLAY: MOV R7,#02H ;软件延时子程序DL1: MOV R6,#0FFHDL2: DJNZ R6,DL2 DJNZ R7,DL1L_M
8、: MOV A,M AJMP DL3SPARK: MOV TMOD,#01H ;闪烁子程序 MOV TH0,#0F6H MOV TL0,#3CH MOV TIME1,#20 MOV TIME2,#10 MOV A,P1 CPL A MOV LEDMASK,A MOV TIMES,#5 SETB ET0 SETB TR0 CLR TIMEOUTL1: JNB TIMEOUT,L1 CLR TR0TT0: PUSH PSW ;定时器0子程序 DJNZ TIME1,TO_2 MOV A,LEDMASK XRL P1,A DJNZ TIME2,TO_2 DJNZ TIMES,TO_2 SETB TIM
9、EOUTTO_2: MOV TH0,#0F6HDEL: MOV TMOD,#10H MOV TH1,#0F6H MOV TL1,#3CH MOV TIME2,#20 SETB ET1 SETB TR1L11: JNB TIMEOUT,L11 CLR TR1TT1:定时器1子程序 DJNZ TIME1,TO_22 DJNZ TIME2,TO_22TO_22: MOV TH1,#0F6H END五不足之处和改进方法:有时当遇非紧急事件时也可能引起电梯的停机。六自评分和收获体会:通过老师的耐心讲解和同学们的热心帮助使我真正掌握里这个设计的本质并使我对单片机有了更深层次的了解和认识,在获取知识的同时也增进了同学间的友谊。同时我发现了自己的许多不足之处,发现了自己的知识的缺陷,另外,通过这个设计,使我对单片机在实际中的应用有了更深刻的了解
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1