回复
在你程序基础上改的,自己研究吧。
ORG 0000H
jmp main
ORG 0023H
jmp SIN
main:
MOV SP,#30H
MOV TMOD, #21H ; 定时计数器0工作于方式1,1工作于方式2
MOV TH1, #0FDH ; 波特率9600
MOV TL1, #0FDH
MOV SCON, #50H ; 置串口为方式1,允许接收
SETB TR1
SETB EA ; 开中断
SETB ES ; 允许串口中断
LOOP:
JMP LOOP
ret
SIN:
JNB RI,$
MOV A,SBUF
CLR RI
CJNE A,#18H,GR ;如果收到18H,即"↑",蜂鸣器响
CLR P1.4
LCALL DELAY_1
SETB P1.4
RETI
GR:
CJNE A,#19H,RED ;如果收到19H,即"↓",红、绿灯一起亮
CLR P1.6
CLR P1.5
LCALL DELAY_1
SETB P1.6
SETB P1.5
SETB ES
RETI
RED:
CJNE A,#1AH,GREEN ;如果收到1AH,即"→",红灯亮
CLR P1.5
LCALL DELAY_1
SETB P1.5
RETI
GREEN:
CJNE A,#1BH,ENT0 ;如果收到1BH,即"←",绿灯亮
CLR P1.6
LCALL DELAY_1
SETB P1.6
ENT0:
RETI ;中断返回
DELAY_1:
MOV R0, #0FFH
LOOP2:
MOV R1, #0FFH
LOOP1:
NOP
NOP
DJNZ R1, LOOP1
DJNZ R0, LOOP2
RET
END
发表时间:2007年4月9日20:41:32