打印

这是我人生的第一个程序-8251,渴望大家给予指导!

[复制链接]
2005|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccjchen|  楼主 | 2007-3-8 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在使用了简单的三线通信,即8251的rxd通过max232后与电脑的txd相连,8251的txd通过max232后与电脑的rxd相连;接地信号相连;然后是电脑自己的rts,cts相连,dsr,dtr相连;8251自己的rts,cts相连,dsr,dtr相连;8251的其他引脚都有信号,为什么txd还是没信号?不能发也不能收,用过去的汇编却通信正常。
#define _TEST_C_
#include "reg52.h"
#include "stdlib.h"
#include "absacc.h"
#include "intrins.h"
#include "test.h"
#include "math.h"
#define uchar unsigned char
#define uint  unsigned int
#define COM8251 XBYTE[0x8701]
#define DAT8251 XBYTE[0x8700]
uchar data_temp[10]={0xAA,0x10,0x22,0x32,0x00};
 uchar m=0,n=0,k;  uchar s;
void  wait(uchar p,q);              
void main(void) 
{  
   wait(11,82);//8251工作速度慢,每送一个控制字,等待一会儿延时2ms
    COM8251 = 0x00;
    wait(11,82);
    COM8251 = 0x00;
    wait(11,82);
    COM8251 = 0x00;
    wait(11,82);
    COM8251 = 0x40;//以上为8251复位部分
    wait(11,82);
    COM8251 = 0x4e;//9600baud,1停止位,无校验,8位数据,X16
    wait(11,82);
    COM8251 = 0x37;  
    while(1)
    {
           DAT8251 = data_temp[m];//写 
           m++;
          if (m==4)
        {
            m = 0;
        }
    }
}
void  wait(uchar p,q)
{
   uchar  i,j;                //(2*j+3)*i+4
   for (i=p;i>0;i--)
      for (j=q;j>0;j--);
}

相关帖子

沙发
mxh0506| | 2007-3-8 12:21 | 只看该作者

有点问题

看程序你的8251应该是挂在数据总线上的,它必须能配合总线的时序才行
何来速度慢需要等2ms之说?

使用特权

评论回复
板凳
ccjchen|  楼主 | 2007-3-8 12:56 | 只看该作者

我把延时去了,照样不能收发啊

我的8251控制字写的对吗,还有while里面的小发送程序写的对吗

使用特权

评论回复
地板
ccjchen|  楼主 | 2007-3-8 16:06 | 只看该作者

这种情况怎么回事?

发送时8251TXD有正确波形,可是从max232出来后,就没有波形了。 开始时用万用表测试,max232各引脚电压完全正常。从max232出来以后,应该波形一样,只是幅度变化啊?

使用特权

评论回复
5
ccjchen|  楼主 | 2007-3-8 22:50 | 只看该作者

谢谢各位大哥大姐们的帮助

出来了,他妈的电脑com口是坏的,别的没问题 
谢谢各位兄弟姐妹的关心和帮助

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝