VB用串口发送的数据,在单片机怎么写程序也是发送同样的数据?
VB程序PrivateSubCommand1_Click()DimW(1)AsByteW(0)=Int(1)MSComm1.Output=WMSComm1.OutBuff...
VB程序Private Sub Command1_Click()
Dim W(1) As Byte
W(0) = Int(1)
MSComm1.Output = W
MSComm1.OutBufferCount = 0 '情空发送缓冲区
End Sub
那么请问单片机怎么写程序也串口发送同样的数据?其实我主要是要用电脑VB的串口发送的数据和单片机发送的数据相同就可以了,给个例子都可以。谢谢 展开
Dim W(1) As Byte
W(0) = Int(1)
MSComm1.Output = W
MSComm1.OutBufferCount = 0 '情空发送缓冲区
End Sub
那么请问单片机怎么写程序也串口发送同样的数据?其实我主要是要用电脑VB的串口发送的数据和单片机发送的数据相同就可以了,给个例子都可以。谢谢 展开
2个回答
展开全部
不同的单片机不一样,单片机是直接操作硬件的,要对特殊功能寄存器进行设置,不同的单片机寄存器不同,主要工作就是设置波特率,串口设置,串口中断程序,以及CRC校验程序(CRC校验可以没有),51单片机貌似不支持硬件奇偶校验,奇偶校验程序要自己写,程序不复杂但是要比VB长得多,因为单片机没有系统。。。
追问
我使用AT89S52的单片机,怎么写?现在我的程序是void main(void)
{int i; TMOD=0x20; //TMOD=0010 0000B,定时器T1工作于方式2
SCON=0x40; //SCON=0100 0000B,串口工作方式1
PCON=0x00; //PCON=0000 0000B,波特率9600
TH1=0xfd; TL1=0xfd; TR1=1; //启动定时器T1
while(1) {Send(i); }}void Send(unsigned char dat)
{SBUF=dat;while(TI==0) ;TI=0;
}
展开全部
C51单片机的程序:
1、初始化程序:
TMOD=0X20; TH1=0Xfd; TL1=0Xfd;SM0=0; SM1=1; REN=1; TR1=1; EA=1; ES=1;
2、发送程序:
void comdata_send()//串口发送数据
{
unsigned char i;
SBUF=0x2A;
while(!TI);
TI=0;
}
3、接收数据:
void comdata_receive() interrupt 4
{ if(RI)
{ RI=0;
RS485_data=SBUF;
}
}
VB程序:
1、初始化程序:
MSComm1.CommPort = 1 '串口号
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeText
MSComm1.RThreshold = 1 '接收中断允许
MSComm1.SThreshold = 1 '发送中断允许
MSComm1.PortOpen = True
2、接收发送程序:(FunNum = 1,接收,2时发送)
Dim buf$
Dim st As String
FunNum = FunNum + 1
If FunNum = 3 Then FunNum = 1
If FunNum = 1 Then
If MSComm1.InBufferCount > 0 Then
MSComm1.InputLen = 1
buf = MSComm1.Input '取得缓冲区内的首字符
End If
End If
If FunNum = 2 Then
st = "*"
MSComm1.Output = Trim(st)
End If
1、初始化程序:
TMOD=0X20; TH1=0Xfd; TL1=0Xfd;SM0=0; SM1=1; REN=1; TR1=1; EA=1; ES=1;
2、发送程序:
void comdata_send()//串口发送数据
{
unsigned char i;
SBUF=0x2A;
while(!TI);
TI=0;
}
3、接收数据:
void comdata_receive() interrupt 4
{ if(RI)
{ RI=0;
RS485_data=SBUF;
}
}
VB程序:
1、初始化程序:
MSComm1.CommPort = 1 '串口号
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeText
MSComm1.RThreshold = 1 '接收中断允许
MSComm1.SThreshold = 1 '发送中断允许
MSComm1.PortOpen = True
2、接收发送程序:(FunNum = 1,接收,2时发送)
Dim buf$
Dim st As String
FunNum = FunNum + 1
If FunNum = 3 Then FunNum = 1
If FunNum = 1 Then
If MSComm1.InBufferCount > 0 Then
MSComm1.InputLen = 1
buf = MSComm1.Input '取得缓冲区内的首字符
End If
End If
If FunNum = 2 Then
st = "*"
MSComm1.Output = Trim(st)
End If
更多追问追答
追问
请问:如果vb和单片机都要求发送相同数字1,怎么改?
追答
主要的程序给你了,你自己修改一下吧!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询