ORG 0000H
AJMP INIT
ORG 0023H
AJMP JIESHOU
INIT: MOV SP,#80H;栈底
MOV IP,#08H;定义中断级别
MOV TMOD,#20H;定时器T1为方式二
MOV SCON,#50H;串行口为方式一
MOV PCON,#00H;令SMOD=0
MOV TH1,#0F4H;给TH1重装初值
MOV TL1,#0F4H;波特率为2400
SETB TR1;启动T1
SETB ES
SETB EA
MOV P2,#32H
AJMP $
JIESHOU:PUSH PSW;可以连续接收上位机发来的数据
PUSH DPH
PUSH DPL
PUSH ACC
CLR ES;关中断不引起连续触发
CLR RI
MOV A,SBUF
CJNE A,#1H,KEY1
CLR P1.0
SETB P1.1
SETB P1.2
LJMP KEY
KEY1:CJNE A,#2H,KEY2
CLR P1.1
SETB P1.0
SETB P1.2
LJMP KEY
KEY2:CJNE A,#30H,KEY3
CLR A
MOV A,P2
LJMP KEY
KEY3:LJMP KEY7
KEY:MOV SBUF,A
WAIT: JNB TI,WAIT ;等待发送完
CLR TI ;清发送标志位
KEY7:SETB ES;恢复中断
POP ACC
POP DPL
POP DPH
POP PSW
CLR A
RETI
END
谢谢高手,
clr a ;相等送P2口状态
mov a, p2
mov sbuf,a
jnb ti,$
clr ti
key3:转向结束。
程序流程基本清晰,慢慢来多看看书,多多练习。
这是01单片机论坛的斑竹:光明使者"给我的说明现在问题解决了,
真是惭愧,也不知当时设置的时候是怎么想的,出现问题时在也没看过
这些设置,总是觉得主程序有问题,被斑竹一语道破,足以见得斑竹深厚扎实的
基础,希望大家引以为戒,另外,用C51的那个人,不要瞧不起别人
你都”稀了”干嘛不做点“干”事?照样没看出问题,
向所有提供帮助的人致敬