打印

关于MT8880的收发问题

[复制链接]
1774|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dyq117119|  楼主 | 2007-8-1 09:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请用过MT8880的指点一下,我现在用单片机控制一片MT8880实现收发功能,
但我发现接收的时候老是没有中断产生,状态位也没置位,而EST和ST/GT都有变化的,按芯片的时序图看应该有中断产生的啊,,,,怎么回事????是控制的时序不对吗????
急呀!!!!各位帮帮忙哦,先谢了!!!

相关帖子

沙发
chunyang| | 2007-8-1 10:53 | 只看该作者

你要先确认输入信号的幅值、失真率等指标合适才行

排除信号问题,就只有编程问题了。

使用特权

评论回复
板凳
dyq117119|  楼主 | 2007-8-1 11:29 | 只看该作者

在问 我看了 输入信号的幅值、失真率没问题啊

帮我看看程序吧,谢谢哦!!!就接收的程序!!!!
D0到D3对应P1.0到P1.3    cs接地   datasheet上的典型电路
#include <AT892051.h>
#include<absacc.h>  //引用外部数据存储器XBYTE
#include<intrins.h>  //_nop_()引用

#define uc unsigned char
#define ui unsigned int
#define RW P3_4      //RW
#define RS0 P3_5     //RS0
uc data i=0,r_buf[7];
uc bdata xbit;
#define clk P3_2   琐存信号


/* 子函数(子程序)说明 */
void delay200ms(void);
void initialize(void);
void rece_init(void);
void int1_8880(void);
void delay_50us(ui t);

void main(void)

   
   delay200ms();
   initialize( );
    delay_50us(600);  
   rece_init( );
    delay_50us(600);
   while(1);
     
}
/* MT8880芯片初始化子函数 */
void initialize(void)

  clk=0;
  P1=0x0FF;  /* 读状态寄存器 */
  RS0=1;
  RW=1; 
  _nop_();
  clk=1;
  _nop_();
  xbit=P1&0x0f;
  clk=0;

  

  RS0=1;
  RW=0; 
  _nop_();
  clk=1;
   P1=0x0F0;  /* CRA=0000 */
  _nop_();
  clk=0;
  
  
   _nop_();
     clk=1;
    P1=0x0F0;  /* CRA=0000 */
   _nop_();
   clk=0;  
  
  
    _nop_();
     clk=1;
    P1=0x0F8;  /* CRA=1000 */
    _nop_();
    clk=0;  
  

   _nop_();
     clk=1;
    P1=0x0F0;  /* CRB=0000 */
    _nop_();
    clk=0;  
   
  
  P1=0x0FF;  /* 读状态寄器 */
  RS0=1;
  RW=1; 
  _nop_();
   clk=1;
   _nop_();
  xbit=P1&0x0f;
  clk=0;


  
}  
/* 接收初始化子函数 */
void rece_init(void)

  
   
   RS0=1;
   RW=0; 
   _nop_();
   clk=1;
    P1=0x0F4;  /* CRA=0100 */
   _nop_();
   clk=0;
  
   EX1=1;
   IT1=1;
   EA=1;
}

void delay200ms(void)
{

uc x,j,k;

for(x=3;x>0;i--)

  for(j=132;j>0;j--)
     for(k=150;k>0;k--);
}



void int1_8880(void) interrupt 2
{
   
    P1=0x0FF;  /* 读状态寄存器 */
    RS0=1;
    RW=1; 
    _nop_();
    clk=1;
    _nop_();
    xbit=P1&0x0f;
    clk=0;    
     
      if(xbit^2==1) 
       { 
         P1=0x0ff;
         
          RS0=0;
          RW=1; 
          _nop_();
                    clk=1;
          _nop_();
                r_buf[i++]=P1&0x0f;  /* 读数据寄存器 */
           clk=0;
        }

       if(i==7) 
       {
          i=0;    //反复的接收
         P1_7=0;
        }

}

void delay_50us(ui t)
{
uc j;  
for(;t>0;t--)   
  for(j=19;j>0;j--) 
  ;
}

使用特权

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

本版积分规则

2

主题

6

帖子

1

粉丝