chenhongsheng:
我先頂了實(shí)現(xiàn)功能:用VB編一個(gè)界面,界面如下:實(shí)現(xiàn)功能:用VB編一個(gè)界面,界面如下:計(jì)算機(jī)任意發(fā)送一個(gè)十六進(jìn)制0-FFH,單片機(jī)對(duì)應(yīng)接收一個(gè)十六進(jìn)制0-FFH,用單片機(jī)P2口依次接上八個(gè)指示燈,以觀看其輸出結(jié)果(亮代表1,滅代表0).上位機(jī)程序(發(fā)送):計(jì)算機(jī)'******************************************'初始化串口'******************************************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'******************************************'計(jì)算機(jī)根據(jù)用戶輸入數(shù)據(jù)發(fā)送數(shù)據(jù)給單片機(jī)'******************************************PrivateSubButton_SEND_Click()DimXAsStringDimNumAsVariantDimoutbyte(0)AsByteIfText_SEND.Text=""ThenX=MsgBox("發(fā)送數(shù)據(jù)不能為空",16)ExitSubEndIfIfNotMSComm1.PortOpenThenMSComm1.PortOpen=TrueEndIfNum=str(Text_SEND.Text)outbte(0)=CByte(Num)MSComm1.OutBufferCount=0'...清空輸出寄存器MSComm1.Output=outbyte '...發(fā)送數(shù)據(jù)EndSub下位機(jī)程序(接收):單片機(jī);*****************************************;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數(shù)據(jù)位+停止位,無校驗(yàn)位 MOV TMOD,#20H ;定時(shí)器T1為方式1 MOV TH1,#0FDH MOV TL1,#0FDH ;波特率為9600bit/s SETB REN ;允許接收 SETB ES ;使能單片機(jī)串行中斷 SETB EA ;打開總中斷 SETB TR1 ;啟動(dòng)定時(shí)T1LOOP: MOV A,BUFFER CPL A MOV P2,A ;實(shí)時(shí)將接收緩存值BUFFER取反輸出 JMP LOOPRECIVE: PUSH ACC CLR RI MOV A,SBUF MOV BUFFER,A ;讀取計(jì)算機(jī)發(fā)送過來的數(shù)據(jù)到BUFFER RETI END