打印

找错。。。为什么我的RS485程序不对!!

[复制链接]
1349|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
P60914047|  楼主 | 2011-7-24 11:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <iom16v.h>
#include <macros.h>
#define  uchar unsigned char
#define  uint  unsigned int

#define  mclk   8000000

void usart_init(void)//Fosc=8M, 格式N81
{
        /* 设置波特率*/
       
        UCSRB=0;//禁止发送和接收
        UBRRH=0;
        UBRRL=51;
        /* 接收器与发送器使能*/
        UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
        /* 设置帧格式: 8 个数据位, 1 个停止位*/
        UCSRC = (1<<URSEL)|0x06;
       
        DDRD|=0x02; //0000 0010 后两位1位txd PD1  0为RXD PD0
       
       
}

/*延时函数*/
void delay(uint ms)  //延时秒                                                   
{                                                                           
    uint i,j;                                                            
        for(i=0;i<ms;i++)                                                   
        {                                                               
           for(j=0;j<1141;j++);                                          
    }
}

void port_init()      //初始化端口                                 
{                                                                     
                                                           
   DDRC = 0xff;                                                         
   DDRD = 0xff;//设置PA、PC、PD端口均为输出                                
                                                            
   PORTC = 0x00;                                                            
   PORTD = 0x02;
}

void uart_sendB(uchar data)
{
   while(!(UCSRA&(BIT(UDRE)))) ;
   UDR=data;
  }  

void main()
{   uchar i;
    port_init();
    usart_init();
  while(1)
  {
    for(i=0;i<10;i++)
    {
         PORTC|=BIT(6) ; //RS485始终为发送状态
         delay(50);
     uart_sendB(i);
     delay(500);
         PORTC&=(~BIT(6));
    }
  }
}

相关帖子

沙发
P60914047|  楼主 | 2011-7-24 11:49 | 只看该作者
顺便说一下,这里的PC6口为485的使能端

使用特权

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

本版积分规则

0

主题

12

帖子

1

粉丝