打印

请问怎么来判断串口在发送数据

[复制链接]
楼主: jack.king
手机看帖
扫描二维码
随时随地手机跟帖
21
jack.king|  楼主 | 2007-9-6 18:17 | 只看该作者 回帖奖励 |倒序浏览

to gyt


   这个图纸不是我设计的.
   我只是看了这个测量温度的板.然后把它画了出来
   就是不知道是什么回事才特意来请教大家的

使用特权

评论回复
22
gyt| | 2007-9-6 18:38 | 只看该作者

不要用这个线路

两个单片机之间的通讯不要用这个线路,用你自己做过的已经成熟的线路。

使用特权

评论回复
23
jack.king|  楼主 | 2007-9-6 20:36 | 只看该作者

to gyt

谢谢你gyt
    我想问下您看过了哪个图纸觉得哪个图觉得怎么样?
    我怎么觉得有点跟常规的不同啊!
   P0口都没有用到都是用的其他的脚
      

使用特权

评论回复
24
gyt| | 2007-9-7 10:14 | 只看该作者

我觉得这个图不太好

P0口没有使用可能是留着做显示之类的东东

使用特权

评论回复
25
jack.king|  楼主 | 2007-9-7 15:01 | 只看该作者

我去改东西啊

是不是直接把TXD和RXD对接.让后也同时接地就可以了吧?

使用特权

评论回复
26
gyt| | 2007-9-7 21:44 | 只看该作者

没错

就是这样

使用特权

评论回复
27
yingyuping| | 2007-9-9 21:33 | 只看该作者

cn

使用特权

评论回复
28
jack.king|  楼主 | 2007-9-9 23:01 | 只看该作者

用示波器很好测量


  这几天实验下.用示波器很好测量.
    但是新的问题又出现了.就是因为发送程序好象要发几次才能接受
    并且用T2计数器产生波特率好象不行
   只能用T0和T1才是正确
   也许是我把程序错了吧
   但是用T0和T1是正确的.
   
                            T2CON|=0x34;//选择成了波特率发生器方式(RCLK+TCLK=1,TR2=1)//控制寄存器
                         TH2=0xf3;
             TL2=0xf3;
              RCAP2H=0xf3;       //陷阱积存器
                         RCAP2L=0xf3;   
                        SCON=0x50;//方式1(9为UART)
                       ET2=1;
                      EA=1;
                    ES=1;

使用特权

评论回复
29
qjy_dali| | 2007-9-9 23:47 | 只看该作者

逻辑分析仪也不错,嘿嘿

使用特权

评论回复
30
CONWH| | 2007-9-10 03:23 | 只看该作者

怎么还没有搞定?

使用特权

评论回复
31
gyt| | 2007-9-10 08:47 | 只看该作者

如果是同一种单片机相互通讯

不用T2也一样的。不会有误差。

使用特权

评论回复
32
jack.king|  楼主 | 2007-9-10 12:26 | 只看该作者

不是同一种单片机但是是一个公司的


   我用的是S82和S8253之间通讯
    我用T0和T1产生波特率时候是正常的.有数据发送
  用示波器去测量也是用电平变化.
   但是我改成用T2产生波特率的时候.就没有数据接受了.
     示波器上的变化也只有一点.
   设置T2的程序如下:
 T2CON|=0x34;//选择成了波特率发生器方式(RCLK+TCLK=1,TR2=1)//控制寄存器
 TH2=0xf3;
 TL2=0xf3;
 RCAP2H=0xf3;       //陷阱积存器
 RCAP2L=0xf3;   
 SCON=0x50;//方式1(9为UART)
 ET2=1;
 EA=1;
 ES=1;
        

使用特权

评论回复
33
gyt| | 2007-9-10 18:38 | 只看该作者

波特率是多少?

使用特权

评论回复
34
lika9527| | 2007-9-10 19:19 | 只看该作者

串口

串口收发相连   看能否收到就行了啊

使用特权

评论回复
35
地下水| | 2007-9-10 19:53 | 只看该作者

指示灯和串口调试助手

  指示灯的闪烁还要程序控制,看串口通讯正确率最好是用调试助手。。。

使用特权

评论回复
36
hq_y| | 2007-9-10 19:57 | 只看该作者

做串口的电路一般是在串口上挂led然后使用串口工具监听数

使用特权

评论回复
37
jack.king|  楼主 | 2007-9-10 23:34 | 只看该作者

谢谢各位的意见我就去实验下.

谢谢各位的意见我就去实验下.
TO:gyt
   波特率是2400(6MZ)
    请问在什么范围的波特率才是正常的呢?

使用特权

评论回复
38
lyctlidong| | 2007-9-11 09:41 | 只看该作者

同意

我同意在串口中断里面加上LED指示灯,很直观嘛。

使用特权

评论回复
39
jack.king|  楼主 | 2007-9-11 19:31 | 只看该作者

接受程序若放到中断里面就没有效果


   谢谢各位的意见我意见把LED装上去了.并且是正确的.
  但是我把接受程序放到中断程序里面的时候就是错误的了.
   不知道什么原因
  程序如下(这个程序是正常的.并且是正确若把接受程序放到串口中断里就没有效果了):
/**********************************************************/
void jieshou(void)
     {  j=1;
        while(1)         //开始接受数据
        {
           while(1)    //等待接受完信号.  
        {
      if(RI)
        {    
       RI=0;
       break;
         }
        } 
       ACC=SBUF;
       temp8=ACC;
      // re_data();
        j++;
        if(j==7)
       break;
        }
     }
/*******************************************************************/
void main(void)
  {
                 TMOD=0x20;
     TH1=0xf3;
     TL1=0xf3;
     SCON=0xd0;
     PCON=0x80;
     TR1=1;
     EA=1;
     led_display(0x01,0x6f);delay(100);
     while(1)
                 {
      diss();
      cleardog();
     led_display(0x02,0x6f);delay(100);
    jieshou();//接受数据(若用中断则不用这个函数了)
     }
  }
/***********************************************/
void serial(void) interrupt 4 using 3//若把接受程序变成这样就没有效果了

     {  j=1;
        while(1)         //开始接受数据
        {
           while(1)    //等待接受完信号.  
        {
      if(RI)
        {    
       RI=0;
       break;
         }
        } 
       ACC=SBUF;
       temp8=ACC;
      // re_data();
        j++;
        if(j==7)
       break;
        }
     }

使用特权

评论回复
40
dreambird| | 2007-9-11 20:11 | 只看该作者

是有点慢,一个星期了

使用特权

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

本版积分规则