打印
[AVR单片机]

请教HOLT-HI3282配置问题,已经瘪了很久了

[复制链接]
1749|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dreampower|  楼主 | 2007-10-27 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    小弟在用ATMEL128和HOLT-HI3282进行通信的时候,出现了问题。我直接使用ATMEL128对端口进行赋值,把数据直接传给了HOLT-HI3282,传了四组数据(共32位),但输出的波形就第一组(最低的一个字节)是对的,别的都不和其他三组数据相匹配,乱七八糟的没有什么规律。通过HOLT-HI3282我只做发送出去数据,不接收外面的数据。我的配置的源程序如下:

#define uchar unsigned char
#define uint  unsigned int

#include <iom128v.h>
#include <macros.h>

void main(void)
{
     //用端口A,C发送数据,端口B进行配置,端口D也进行了一点设置
     DDRA = 0xff;
     DDRB = 0xdb;   
     DDRC = 0xff;
     DDRD = 0xfe; 
     DDRG = 0xff; 

     PORTA = 0x00;
     PORTB = 0x00;
     PORTC = 0x00;
     PORTD = 0x32;
     PORTG = 0x00;
     
     //系统时钟频率;7.3728MHZ  波特率:9600BPS
     UBRR0L = 0x2f;  
     UBRR0H = 0x00;
     
     //3282进行初始化
     PORTB |= 0x10;  //PL1 = 1;  PB4
     PORTB |= 0x08;  //PL2 = 1;  PB3
     PORTB |= 0x02;  //MR  = 1;  PB1 

     //打开控制字寄存器 
     PORTB |= 0x01;  //DBCEN = 1;PB0
     PORTB &= 0xbf;  //CWSTR = 0;PB6
     
     //为控制字寄存器赋值
     PORTA = 0x30;   
     PORTC = 0x00; 

     //关闭控制字寄存器 
     PORTB |= 0x40;  //CWSTR = 1;PB6
     PORTB &= 0xfe;  //DBCEN = 0;PB0
    
      while(1)
              {
                   PORTA = 0x03;   //发送第一个字节
                   PORTC = 0x10;   //发送第二个字节

                   PORTB &= 0xef;  //PL1 = 0;PB4 
                   PORTB |= 0x10;  //PL1 = 1;PB4  产生一个上升沿
                   PORTA = 0x60;   //发送第三个字节
                   PORTC = 0x05;   //发送第四个字节     

                   PORTB &= 0xf7;  //PL2 = 0;PB3
                   PORTB |= 0x08;  //PL2 = 1;PB3 产生一个上升沿

                  PORTB |=0x01;    //DBCEN = 1;PB0 //插入校验位
         
          
                 PORTB &= 0xf7;   //PL2 = 0;
                 PORTB |= 0x08;   //PL2 = 1;PB3 产生一个上升沿
                   while(1)
                  {
                   if((PINB & 0x04)==0x00)  //检测TX/R是否为0?
                   {
                     PORTB |= 0x80; //ENTX= 1;PB7 打开数据发送使能
                    break;
                   }
                  }
                  while(1) 
                    {
                      if(PINB & 0x04) //检测TX/R是否为1?
                       {           
                         PORTB &= 0x7f;  //ENTX = 0;PB7;  关闭数据发送使能
                         break;
                       }
                     }  
        }


请问有高手以前使用过HOLT-HI3282吗?上面的程序哪些地方需要改进?做发送数据时是怎么配置的?能给出你的配置源程序吗?谢谢,谢谢,非常的感谢!!!        

相关帖子

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

本版积分规则

2

主题

4

帖子

0

粉丝