打印

单片机并行转串行的问题

[复制链接]
1931|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
鲁西老汉|  楼主 | 2009-6-1 11:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假如从P0口采集到并行数据,通过P1.0串行输出

我是这样做的:
把P0口采集到的数据,赋给P1口,再通过一个右移语句,把P1口的数据
依次右移一位,刚好可以从P1.0口接收到串行数据。没有用别的外围器件。

我用示波器观察P1.0口的波形,跟输入的并行数据可以对上,
可是波形不是方波,有点像是锯齿波。

请问大家,是什么问题


注:我在新手区发了,可是没人回答,所以就来这里在问问
    请斑竹大人谅解。喜欢程序匠人的《匠人手机》^-^

相关帖子

沙发
gaohq| | 2009-6-1 14:03 | 只看该作者

这马屁拍的。。。。。

使用特权

评论回复
板凳
lbx_00| | 2009-6-1 14:38 | 只看该作者

移的速度太快了吧,硬件速度跟不上

使用特权

评论回复
地板
鲁西老汉|  楼主 | 2009-6-1 16:02 | 只看该作者

加了延时程序,

延时时间足够了,一直搞不清为什么,是不是跟P口内部结构有关系

使用特权

评论回复
5
whydo| | 2009-6-1 16:29 | 只看该作者

与P1。0的外围有关没

使用特权

评论回复
6
鲁西老汉|  楼主 | 2009-6-1 17:16 | 只看该作者

没接外围

外围没有任何器件,直接把P1.0引脚引到示波器上
源代码如下:
========================================
#include <reg51.h>
#define uchar unsigned  char
#define uint unsigned  int
uchar Input_Data; 

void delay(uint i)
{     
    uint m,n;
      for(m=0;m<i;m++)
      for(n=0;n<125;n++);
}

void txd(uchar getdata)

      uint i;
      for(i=0;i<8;i++) 
    { 
      P1=0xff;           
       P1=getdata;
     delay(200);
      getdata=getdata>>1;
     }
}


void main()
{   
    while(1) 
    {
    P0=0xff;
    Input_Data=P0;
    txd(Input_Data);
    }
}
=====================================================

使用特权

评论回复
7
lbx_00| | 2009-6-1 17:52 | 只看该作者

如果你是新手,可能示波器没有用好

示波器上有标准信号参考的,你先量一量这个参考信号,把示波器的设置搞好。

使用特权

评论回复
8
ayb_ice| | 2009-6-1 21:08 | 只看该作者

加强上拉

使用特权

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

本版积分规则

5

主题

24

帖子

0

粉丝