首先要谢谢你提供帮助,才学习单片机不久,还有很多不了解的东西要学习,在这里也有人说过我的程序有结构上的问题,但这是我能想到的唯一办法了,
上下位机的波特率应该没问题,明天换个晶振式式看,另外连续发送的不是1H,2H,3H,而是从上位机,连续发送32H,33H,34H,到单片机,需要他来控制单片机将P0,P1,P2
的状态送回计算机,换成P2,P1端口就可以了,都会急死了,电脑程序方面我做了0.5--2秒
间隔可调的连续发送周期(发送32H,33H,34H,),时间长短没有影响,1.2.3S是电脑程序中按钮
发送出来的,每点机一次就发送一次,其它时间在不停的发送32.33.34,是不是连续发送的原因,我现在都糊涂了,整了45天了,没结果还望大侠百忙中多多指教
向所有提供帮助的人致敬
ORG 0010H
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(11.0592晶振)
SETB TR1;启动T1
SETB ES
SETB EA
AJMP $;等待
JIESHOU:PUSH PSW;可以连续接收上位机发来的数据
PUSH DPH
PUSH DPL
PUSH ACC
CLR ES;关中断不引起连续触发
CLR RI
MOV A,SBUF;保存收到的数据
CJNE A,#32H,KEY1;如果单片机收到32H则将P0状态送回计算机
MOV A,P0
LJMP KEY
KEY1:CJNE A,#33H,KEY2;如果单片机收到33H则将P0状态送回计算机
MOV A,P1
LJMP KEY
KEY2:CJNE A,#34H,KEY3 ;如果单片机收到34H则将P0状态送回计算机
MOV A,P2
LJMP KEY
KEY3:CJNE A,#1H,KEY4 ;如果单片机收到1H,P0状态=FEH并送回计算机
MOV P0,#0FEH
LJMP KEY
KEY4:CJNE A,#2H,KEY5;如果单片机收到1H,P0状态=FDH并送回计算机
MOV P0,#0FDH
LJMP KEY
KEY5:CJNE A,#3H,KEY;如果单片机收到1H,P0状态=FBH并送回计算机
MOV P0,#0FBH
LJMP KEY
KEY:MOV SBUF,A
WAIT:JNB TI,WAIT ;等待发送完
CLR TI
KEY7:SETB ES;恢复中断
POP ACC
POP DPL
POP DPH
POP PSW
RETI
END
发表时间:2004年7月14日23:18:02