导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→VB与RS232通讯请教

* 48210: VB与RS232通讯请教

   guest 
guest发表的帖子 

 VB与RS232通讯请教
近日要做个计算机串口控制单片机的小系统,上位机程序用VB写,但是以前没有用过VB所以向各位请教。

协议如下:
发送十进制数“11”则P17变低电平(发光管点亮)
发送十进制数“12”则P17变高电平(发光管熄灭)
发送十进制数“13”则P16变低电平(发光管点亮)
发送十进制数“14”则P16变高电平(发光管熄灭)

上位机中用一个Check控件表示,打勾表示有效,即使发光管亮。实验中用了Check1和Check2分别控制P17和P16,VB实验程序如下:(波特率4800)
Private Sub Check1_Click()
If Check1.value = 1 Then
MSComm1.Output = send(0)
Else
MSComm1.Output = send(1)
End If
End Sub

Private Sub Check2_Click()
If Check2.value = 1 Then
MSComm1.Output = send(2)
Else
MSComm1.Output = send(3)
End If
End Sub

Private Sub Form_Load()
MSComm1.PortOpen = True
Dim buf As Byte
Dim send(4) As Byte
send(0) = 11
send(1) = 12
send(2) = 13
send(3) = 14
End Sub
VB调试时发现串口发送数据时有问题,如:MSComm1.Output = send(0)等都不行。

单片机实验程序如下:
ORG  0000H
LJMP START
ORG  0030H
START:
MOV  TMOD ,#20H;            定时器方式2
MOV  TH1,#0FAH;             置初值
MOV  TL1,#0FAH;             置初值
MOV  PCON ,#00H;           波特率不增倍
MOV  SCON,#50H;            串行方式1,REN=1允许接收
SETB  TR1;                 启动定时
RECEIVE:
MOV  P1,#0FFH
LOOP: JNB  RI,$;         没有收到原地等待
CLR RI;                    收完后置0
MOV A,SBUF;                将接收缓冲区中的数放A
CJNE  A,#11,NEXT01;        收到的数与00比较,相同转NEXT00,不同转NEXT01与其它数比较
NEXT00:CLR  P1.7;          上到00后执行动作
NEXT01:CJNE  A,#12,NEXT02
SETB P1.7
NEXT02:CJNE A,#13,NEXT03  与01比
CLR  P1.6
NEXT03:CJNE  A,#14,GOEND
SETB  P1.6
GOBACK:AJMP  LOOP
GOEND:END

按以上的程序调试发现无法实现计算机串口与单片机之间的通讯,请高手指点。


发表时间:2004年2月4日22:05:20

  
回复该帖

本主题共有 3 帖,分页:>>>>>该主题的所有内容[3]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  48217.[详细]還要對控件的屬性進行一些設置(比如:波特率、傳輸方式.......)
摘要:還要對控件的屬性進行一些設置(比如:波特率、傳輸方式.......)......(61字)
- [guest][791次] 2004年2月5日

  48402.[详细]nimeiyou 你没有与掉ASCii的 3
摘要:nimeiyou 你没有与掉ASCii的 3......(28字)
- [guest][951次] 2004年2月9日

[上一篇帖子]:换晶振的问题我把外接6M的晶振换成24M的,原来51单片机放出的方波频率回不回加快4倍?
[下一篇帖子]:我刚做的ftp10.0.6.107 N:dianzi /P P 都是电子和单片机的资料