chenhongsheng:
我先顶了实现功能:用VB编一个界面,界面如下:实现功能:用VB编一个界面,界面如下:计算机任意发送一个十六进制0-FFH,单片机对应接收一个十六进制0-FFH,用单片机P2口依次接上八个指示灯,以观看其输出结果(亮代表1,灭代表0).上位机程序(发送):计算机'******************************************'初始化串口'******************************************IfMSComm1.PortOpen=TrueThenMSComm1.PortOpen=FalseMSComm1.CommPort=1MSComm1.Settings="9600,N,8,1"MSComm1.Handshaking=comNoneMSComm1.EOFEnable=FalseMSComm1.DTREnable=FalseMSComm1.RTSEnable=FalseMSComm1.InputLen=1MSComm1.RThreshold=1MSComm1.InBufferSize=1MSComm1.OutBufferSize=1MSComm1.SThreshold=0MSComm1.InBufferCount=0MSComm1.OutBufferCount=0MSComm1.InputMode=comInputModeBinary'******************************************'计算机根据用户输入数据发送数据给单片机'******************************************PrivateSubButton_SEND_Click()DimXAsStringDimNumAsVariantDimoutbyte(0)AsByteIfText_SEND.Text=""ThenX=MsgBox("发送数据不能为空",16)ExitSubEndIfIfNotMSComm1.PortOpenThenMSComm1.PortOpen=TrueEndIfNum=str(Text_SEND.Text)outbte(0)=CByte(Num)MSComm1.OutBufferCount=0'...清空输出寄存器MSComm1.Output=outbyte '...发送数据EndSub下位机程序(接收):单片机;*****************************************;CPU:AT89C51 晶振:11.0592MHz ;***************************************** BUFFER EQU 7FH ORG 0000H JMP MAIN ORG 0023H JMP RECEIVEMAIN: MOV SP,#30H MOV BUFFER,#00H MOV PCON,#00H ;波特率不倍增 MOV SCON,#40H ;串行通讯为方式1,即1起始位+8数据位+停止位,无校验位 MOV TMOD,#20H ;定时器T1为方式1 MOV TH1,#0FDH MOV TL1,#0FDH ;波特率为9600bit/s SETB REN ;允许接收 SETB ES ;使能单片机串行中断 SETB EA ;打开总中断 SETB TR1 ;启动定时T1LOOP: MOV A,BUFFER CPL A MOV P2,A ;实时将接收缓存值BUFFER取反输出 JMP LOOPRECIVE: PUSH ACC CLR RI MOV A,SBUF MOV BUFFER,A ;读取计算机发送过来的数据到BUFFER RETI END