控制/MCU
P1.0开关接5V时,右转弯灯闪亮,P1.1开关接5V时左转弯灯闪亮。P1.0、P1.1 开关同时接5V或接地时,转弯灯均不闪亮。
P1.0开关接5V时,右转弯灯闪亮,P1.1开关接5V时左转弯灯闪亮。
P1.0、P1.1 开关同时接5V或接地时,转弯灯均不闪亮。
程序框图
P1.0,P1.1分别接拨动开关JP40的某两位,P1.4~P1.7依次接LED指示灯JP32的某四位,连续运行本程序;应看到转弯灯正确闪亮,在用单步方式调试本程序时需修改延时子程序(例如可把延时程序第一个字节改成返回指令22H)。
ORG 0C30H
0C30 7590EF PX00: MOV P1,#0FFH;初始化
0C33 E590 PX03: MOV A,P1
0C35 F5F0 MOV B,A
0C37 5403 ANL A,#03H
0C39 B40126 CJNE A,#01H,PX01 ;满足只是P1.0为高条件吗?
0C3C 200012 JB 00H,PX04 ;闪烁标志位
0C3F C294 CLR P1.4
0C41 C295 CLR P1.5;开右灯
0C43 D296 SETB P1.6
0C45 D297 SETB P1.7;关左灯
0C47 7A20 MOV R2,#20H
0C49 120213 LCALL DELY;延时
0C4C D200 SETB 00H ;置标志位
0C4E 020C33 LJMP PX03;继续查状态
0C51 D294 PX04: SETB P1.4
0C53 D295 SETB P1.5
0C55 D296 SETB P1.6;关灯
0C57 D297 SETB P1.7
0C59 7A20 MOV R2,#20H
0C5B 120213 LCALL DELY;延时
0C5E C200 CLR 00H ;清标志位
0C60 8133 AJMP PX03;继续查状态
0C62 B40227 PX01: CJNE A,#02H,PX02 ;满足只是P1.1为高条件
;吗?
0C65 200112 JB 01H,PX05;判标志位
0C68 D294 SETB P1.4
0C6A D295 SETB P1.5;开左灯
0C6C C296 CLR P1.6
0C6E C297 CLR P1.7;关右灯
0C70 7A20 MOV R2,#20H ;延时
0C72 120213 LCALL DELY
0C75 D201 SETB 01H ;置标志位
0C77 020C33 LJMP PX03;继续查状态
0C7A D294 PX05: SETB P1.4
0C7C D295 SETB P1.5
0C7E D296 SETB P1.6;关灯
0C80 D297 SETB P1.7
0C82 7A20 MOV R2,#20H
0C84 120213 LCALL DELY;延时
0C87 C201 CLR 01H ;清标志位
0C89 020C33 LJMP PX03;继续查状态
0C8C D294 PX02: SETB P1.4
0C8E D295 SETB P1.5
0C90 D296 SETB P1.6;关灯
0C92 D297 SETB P1.7
0C94 020C33 LJMP PX03;继续
ORG 0213H
0213 C002 DELY: PUSH 02H
0215 C002 DEL2: PUSH 02H
0217 C002 DEL3: PUSH 02H ;延时
0219 DAFE DEL4: DJNZ R2,DEL4
021B D002 POP 02H
021D DAF8 DJNZ R2,DEL3
021F D002 POP 02H
0221 DAF2 DJNZ R2,DEL2
0223 D002 POP 02H
0225 DAEC DJNZ R2,DELY
0227 22 RET
全部0条评论
快来发表一下你的评论吧 !