第四章 系统软件程序设计
****************; ;*1秒延时子程序*; ;****************; DELAY:MOV R1,#0AH DELAY0:MOV R2,#0C8H DELAY1:MOV R3,#0F8H NOP
DELAY2:DJNZ R3,DELAY2 DJNZ R2,DELAY1 DJNZ R1,DELAY0 RET
;***************; ;键盘扫描子程序; ;***************; READKEY: MOV A,#0FFH MOV P3,A MOV A,P3 JNB ACC.0,K1 JNB ACC.1,K2 JNB ACC.3,K3 RET K1:
MOV P0,#0FFH MOV P2,#0FFH LCALL XX LCALL YY
;判断K1键是否按下 ;判断K2键是否按下 ;判断K3键是否按下
;关断倒计时显示装置- 16 -
SJMP READKEY K2:
MOV P0,#0FFH MOV P2,#0FFH LCALL XX LCALL YY1 SJMP READKEY K3:
MOV P0,#0FFH MOV P2,#0FFH LCALL XX LCALL YY2 SJMP READKEY XX:
MOV 20H,#03H LCALL BB RET
;******************; ;*黄灯进行5秒闪烁*; ;******************; BB: SETB P1.1 SETB P1.4 LCALL DELAY CLR P1.1 CLR P1.4 LCALL DELAY DJNZ 20H,BB RET YY:
;关断倒计时显示装置
;关断倒计时显示装置
- 17 -
MOV P1,#0F6H MOV A,#0FFH MOV P3,A MOV A,P3 JNB ACC.0,YY LCALL QW YY1:
MOV P1,#0F3H 灯
MOV A,#0FFH MOV P3,A MOV A,P3 JNB ACC.1,YY1 LCALL QW YY2:
MOV P1,#0DEH 灯
MOV A,#0FFH MOV P3,A MOV A,P3 JNB ACC.3,YY2 LCALL QW RET
;****************; ;*中断处理程序*; ;****************; ORG 0200H Liu: DEC 88H MOV A,88H
;四个路后均变成红灯
;判断K1键是否仍然按下
;东西方向亮绿灯,南北方向亮红
;判断K2键是否仍然按下
;南北方向亮绿灯,东西方向亮红
;判断K3键是否仍然按下
;中断程序入口地址
- 18 -
CJNE A,#01H,BN MOV 88H,#15H LCALL DISP BN:
MOV TH1,#9EH MOV TL1,#58H RETI
;************; ;*显示子程序*; ;************; DISP: DEC 33H MOV A,33H CJNE A,#01H,DIR1 MOV 33H,#3DH DIR1: MOV B,#0AH DIV AB 位数
MOV DPTR,#TAB MOVC A,@A+DPTR MOV 30H,A MOV A,B
MOVC A,@A+DPTR MOV 31H,A MOV A,30H MOV P0,A MOV A,31H MOV P2,A LCALL DELAY
;判断循环次数是否为1 ;重新给循环次数赋值
;重新给定时器T1赋初值
;重新给倒计时数赋初值
;提取出倒