ORG 0000H
LJMP START
ORG 0023H ;串口中断入口
LJMP SINT
START: MOV A,#00H ;主程序
MOV P0,#00H
MOV TMOD,#21H ;T1方式2,T0方式1
MOV TH1,#0FDH ;定时器T1波特率
MOV TL1,#0FDH
SETB TR1
MOV SCON,#0C0H ;方式三的波特率
MOV PCON,#00H ;SMOD为0波特率不加倍
SETB REN ;允许串口通讯
SETB EA ;开中断
SETB ES
N7: CJNE A,#01H,N1 ;查询从上位机接收到得十六进制数
LJMP K1
N1: CJNE A,#02H,N2
LJMP K2
N2: CJNE A,#03H,N3
LJMP K3
N3: CJNE A,#04H,N4
LJMP K4
N4: CJNE A,#05H,N5
LJMP K5
N5: CJNE A,#06H,N6
LJMP K6
N6: CJNE A,#07H,N7
LJMP K7
K1: SETB P0.2 ;前进
MOV TH0,#(65536-250)/256
MOV TL0,#(65536-250)/256
SETB TR0
CLR P0.0
L0: JBC TF0,L1
SJMP L0
L1: JB P0.0,M1
SETB P0.0
MOV TH0,#(65536-750)/256
MOV TL0,#(65536-750)/256
LJMP M2
M1: CLR P0.0
MOV TH0,#(65536-250)/256
MOV TL0,#(65536-250)/256
CJNE A,#01H,N7
M2: LJMP L0
K2: SETB P0.3 ;后退
MOV TH0,#(65536-250)/256
MOV TL0,#(65536-250)/256
SETB TR0
CLR P0.1
L2: JBC TF0,L3
SJMP L2
L3: JB P0.1,M3
SETB P0.1
MOV TH0,#(65536-750)/256
MOV TL0,#(65536-750)/256
LJMP M4
M3: CLR P0.1
MOV TH0,#(65536-250)/256
MOV TL0,#(65536-250)/256
CJNE A,#02H,N8
M4: LJMP L2
N8: LJMP N7
K3: SETB P0.3 ;右转
SETB P0.5
LJMP N7
K4:
SETB P0.4 ;左转
MOV TH0,#(65536-250)/256
MOV TL0,#(65536-250)/256
SETB TR0
CLR P0.1
L4: JBC TF0,L5
SJMP L4
L5: JB P0.1,M5
SETB P0.1
MOV TH0,#(65536-750)/256
MOV TL0,#(65536-750)/256
LJMP M6
M5: CLR P0.1
MOV TH0,#(65536-250)/256
MOV TL0,#(65536-250)/256
CJNE A,#04H,N9
M6: LJMP L4
N9: LJMP N7
K5: CLR P0.0 ;停止
CLR P0.1
CLR P0.2
CLR P0.3
CLR P0.4
CLR P0.5
CLR TR0
LJMP N7
K6: ;前灯
CPL P0.6
LJMP N7
K7: ;鸣笛
LOOP: LCALL DEY1MS
CPL P0.7
SJMP LOOP
SINT: JNB RI,$ ;中断服务程序
CLR RI
MOV A,SBUF
RETI
DEY1MS: MOV R0,#01H ;延时子程序
L21: MOV R1,#0FAH
L20: NOP
NOP
DJNZ R1,L20
DJNZ R0,L21
RET
END
LJMP START
ORG 0023H ;串口中断入口
LJMP SINT
START: MOV A,#00H ;主程序
MOV P0,#00H
MOV TMOD,#21H ;T1方式2,T0方式1
MOV TH1,#0FDH ;定时器T1波特率
MOV TL1,#0FDH
SETB TR1
MOV SCON,#0C0H ;方式三的波特率
MOV PCON,#00H ;SMOD为0波特率不加倍
SETB REN ;允许串口通讯
SETB EA ;开中断
SETB ES
N7: CJNE A,#01H,N1 ;查询从上位机接收到得十六进制数
LJMP K1
N1: CJNE A,#02H,N2
LJMP K2
N2: CJNE A,#03H,N3
LJMP K3
N3: CJNE A,#04H,N4
LJMP K4
N4: CJNE A,#05H,N5
LJMP K5
N5: CJNE A,#06H,N6
LJMP K6
N6: CJNE A,#07H,N7
LJMP K7
K1: SETB P0.2 ;前进
MOV TH0,#(65536-250)/256
MOV TL0,#(65536-250)/256
SETB TR0
CLR P0.0
L0: JBC TF0,L1
SJMP L0
L1: JB P0.0,M1
SETB P0.0
MOV TH0,#(65536-750)/256
MOV TL0,#(65536-750)/256
LJMP M2
M1: CLR P0.0
MOV TH0,#(65536-250)/256
MOV TL0,#(65536-250)/256
CJNE A,#01H,N7
M2: LJMP L0
K2: SETB P0.3 ;后退
MOV TH0,#(65536-250)/256
MOV TL0,#(65536-250)/256
SETB TR0
CLR P0.1
L2: JBC TF0,L3
SJMP L2
L3: JB P0.1,M3
SETB P0.1
MOV TH0,#(65536-750)/256
MOV TL0,#(65536-750)/256
LJMP M4
M3: CLR P0.1
MOV TH0,#(65536-250)/256
MOV TL0,#(65536-250)/256
CJNE A,#02H,N8
M4: LJMP L2
N8: LJMP N7
K3: SETB P0.3 ;右转
SETB P0.5
LJMP N7
K4:
SETB P0.4 ;左转
MOV TH0,#(65536-250)/256
MOV TL0,#(65536-250)/256
SETB TR0
CLR P0.1
L4: JBC TF0,L5
SJMP L4
L5: JB P0.1,M5
SETB P0.1
MOV TH0,#(65536-750)/256
MOV TL0,#(65536-750)/256
LJMP M6
M5: CLR P0.1
MOV TH0,#(65536-250)/256
MOV TL0,#(65536-250)/256
CJNE A,#04H,N9
M6: LJMP L4
N9: LJMP N7
K5: CLR P0.0 ;停止
CLR P0.1
CLR P0.2
CLR P0.3
CLR P0.4
CLR P0.5
CLR TR0
LJMP N7
K6: ;前灯
CPL P0.6
LJMP N7
K7: ;鸣笛
LOOP: LCALL DEY1MS
CPL P0.7
SJMP LOOP
SINT: JNB RI,$ ;中断服务程序
CLR RI
MOV A,SBUF
RETI
DEY1MS: MOV R0,#01H ;延时子程序
L21: MOV R1,#0FAH
L20: NOP
NOP
DJNZ R1,L20
DJNZ R0,L21
RET
END



