打印
[AVR单片机]

在串口调试窗口中看不到数据是为啥?

[复制链接]
2192|6
手机看帖
扫描二维码
随时随地手机跟帖
沙发
Karlshen|  楼主 | 2010-1-10 00:07 | 只看该作者
#include<iom16v.h>
#include<macros.h>

#define uint unsigned int
#define uchar unsigned char

void delay_ms(uint t)
{
    uint i,j;
  for(i=0;i<t;i++)
        for(j=0;j<256;j++);
}

void port_init()
{
      DDRA = 0x00;
    PORTA = 0xff;
    DDRB = 0xff;
    PORTB = 0xff;
    DDRC = 0x00;
    PORTC = 0xff;
    DDRD = 0x02;
    PORTD = 0xff;
}

void urat_init()
{
    UCSRA |= (1<<U2X);
  UCSRB |= (1<<RXEN) | (1<<TXEN);
  //UCSRC |= (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
  UBRRL = 0x0c;
  UBRRH = 0x00;
}

void   urat_transmit(uchar dat)
{
    while(!(UCSRA & (1<<UDRE)));
  UDR = dat;
}

uint urat_receive()
{
    uint temp;
  while(!(UCSRA & (1<<RXC)));
  temp = UDR | 0x100;
  return temp;
}

uint main()
{
    uint temp = 0;
    uint i = 0;
    uchar j = 0;
    port_init();
    delay_ms(250);
    urat_init();
   
    while(1)
    {      
          delay_ms(1);
        i++;
          if( i>1000)
        {
            urat_transmit(j);
            j++;
            i = 0;
        }
        temp = urat_receive();
        if(temp > 0xff)
        {
              PORTB = ~( temp & 0xff);
        }
    }
    return 0;
}

使用特权

评论回复
板凳
Karlshen|  楼主 | 2010-1-10 00:08 | 只看该作者
程序给出,什么问题?

使用特权

评论回复
地板
Karlshen|  楼主 | 2010-1-11 23:11 | 只看该作者
高手都休假去了?:P

使用特权

评论回复
5
928315| | 2010-1-18 09:10 | 只看该作者
这东西问题多了,线接错了。。TXD -RXD ,接对没有
电脑上的波特率与单片机的波特率是否一致。。

urat_transmit(0X55);
用示波器打下传输脚就知道了。如果数据传输出来了,信号是一高一低的方波形式。。。

简单看了下,你配置串口是在倍速模式下,好像不是普通的方式。是不是这里出问题了。。。我没有用过这种方式。。。

使用特权

评论回复
6
928315| | 2010-1-18 09:13 | 只看该作者
port_init(),测试的时候把这个去掉吧。。

使用特权

评论回复
7
maomao2126| | 2010-1-18 09:51 | 只看该作者
线接错的可能性比较大

使用特权

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

本版积分规则

81

主题

734

帖子

1

粉丝