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