5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 653|回复: 3
打印 上一主题 下一主题

病急乱投医,版主别删啊,!~

[复制链接]
跳转到指定楼层
楼主
发表于 2010-5-20 10:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用串口的时候遇到了奇怪的问题,不得已借此宝地发帖求救,还望宝地英雄相救,,,,,
............................................................
我用的是stc89c52的单片机
自己用vb做一个发送数据的程序,单片机接收。
我想要的结果是:vb发200过来,单片机用全局变量comflag记录下来
然后等待1秒,vb再发0-3的某个数字,单片机先判断comflag的值,如果是200则
将第二次收到的数字赋给全局变量n

现在很奇怪的是,用串口调试助手,这个没问题,可是,用我自己写的vb程序就不行,但奇怪的是,vb发的数,单片机全能收到,,,,就是不进入下面的判断,,,,

vb代码:
Private Sub Command1_Click()

'...发送数据
If MSComm1.PortOpen = False Then
MsgBox ("串口没有打开!")
Else

Dim Num As Integer
Dim outbte(0) As Byte
Num = Val(200)
outbte(0) = CByte(Num)
'----------发送识别码------------------
MSComm1.OutBufferCount = 0 '...清空输出寄存器
    Dim ByteArray() As Byte
    '定义动态数组
    ReDim ByteArray(1)
    '重定义数组大小
    ByteArray(0) = 0
    ByteArray(1) = CByte(Num)
    MSComm1.Output = ByteArray
    Sleep 1000 '............延时50ms
'-----------发送器件编码---------------
MSComm1.OutBufferCount = 0 '...清空输出寄存器
   
    '定义动态数组
    ReDim ByteArray(1)
    '重定义数组大小
    ByteArray(0) = 0
    Num = Val(Text5.Text)
    ByteArray(1) = CByte(Num)
    MSComm1.Output = ByteArray
'MSComm1.Output = &H0 '...发送数据
End If
End Sub

单片机代码:

#include<reg52.h>
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
int n=0,TH,TL;
void send_char(uchar txd)     //串口传出一// 传送一个字符
{
ES=0;
SBUF = txd;
while(!TI);    // 等特数据传送
TI = 0;
ES=1;     // 清除数据传送标志
}
void main()
{
TMOD = 0x20;// 定时器1工作于8位自动重载模式, 用于产生波特率
TH1 = 0xFD; // 波特率9600
TL1 = 0xFD;
   SCON = 0x50; // 设定串行口工作方式
PCON = 0x00;
EA=1;
ES=1;
TR1 = 1;        // 启动定时器1
    while(1)
{
  P2=n;
}
}
/////////////////串行口中断///////////////////////////////////
void fun_Uart() interrupt 4 using 1
{
int receive;
static int comflag;
ES=0;
while(RI==0);        //读串口数据
RI=0;
receive=SBUF;
P1=SBUF;

if(receive>=200)
comflag=receive;

else
{
   // P0=receive;
if(comflag==200)
{
  n=receive;
  comflag=0;
}
/* if(comflag==201)
{
  TH=SBUF;
  P1=TH;
  comflag=0;
}
if(comflag==202)
{
  TL=SBUF;
  P1=TL;
  comflag=0;
}*/
}
  ES=1;
}

欢迎继续阅读楼主其他信息

主题

  • 没有相关信息
  • 没有相关信息
  • 没有相关信息
沙发
 楼主| 发表于 2010-5-20 11:44 | 只看该作者
......:em17:
3
发表于 2010-5-20 11:47 | 只看该作者
什么东西?
4
发表于 2010-5-20 11:56 | 只看该作者
我好久写过这些东西了,自己调试看看吧。是不是数据类型不匹配。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /2 下一条

快速回复 返回顶部 返回列表