首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

有人用过icl7135这个芯片么?该如何处理

2012-03-09 
有人用过icl7135这个芯片么?#include reg51.h #include absacc.h #definead_runXBYTE[0x7fff]#definea

有人用过icl7135这个芯片么?
#include "reg51.h "
#include "absacc.h "
#define   ad_run       XBYTE[0x7fff]
#define   ad_read     XBYTE[0xbfff]
#define   uchar   unsigned   char
uchar   ad[5];
uchar   A;
uchar   i;
bit   error;
main()
{
      IT0=1;                         //   interrupt   edge   trigger
      IE=0x82;                     //interrupt   0   enable
      ad_run=0x20;                 //ad   start
      }

void       ad_result()   interrupt   0
{
    uchar   i;
    A=ad_read;

    if(A&0x80==0x80)
    {
        i=0x04;
        if(A&0x04==0x04)
        error=1;                                       //过量程处理
        else   if(A&0x01==0x01)
        error=1;                                       //欠量程处理
        else   if((A&0x04!=0x04)|(A&0x01!=0x01))
        ad[i]=A;
        i--;
      }
    else
    {
        if((i> 0|i==0)&i <0x04)
        {
          ad[i]=A;
          i--;
        }
        else
        ad_run=0x00;
    }
  }
这是我编的程序,目的是实现将ad转换的结果存到数组ad[i]中,可是ad转换不进行,我用示波器看了,给clk   in   脚的驱动方波约125khz,幅值约为5伏,V+电压约5伏,V-电压越-5V,设置断点,运行ad_run=0x20;                 //ad   start之后,ad启动信号约5V,电阻电容都按照datasheet所给电路进行连接,而且硬件没有坏!ad转换怎么不进行呢?我用strobe接中断零,可就是中断始终不产生!换了两个7135都不好使,唉!郁闷ing,望高人指点迷津!

[解决办法]
main()
{
IT0=1; // interrupt edge trigger
IE=0x82; //interrupt 0 enable
ad_run=0x20; //ad start

while (1); //在这里加一句,让单片机停在这,不再向下执行,这样试试
}


会不会是你的程序执行完了?过短的时候又从头开始了?
另外一个,没看到你的ADC的配置,呵呵

[解决办法]
这种情况是不太适合使用仿真器的,它和7135难于同步。
————————-————————————————
这句话是什么意思?不能用仿真器仿真?
---------------------------------------------------
当一个中断信号到来,MCU在你的断点上停下,你检查了某些东西后,
7135都不知道干什么了,以后不论单步或全速都可能得到错误结果。

再提醒你,strobe的脉冲你用电压表是量不到的,因它只在几百毫秒中出现几微秒。

我很想问你,你怎样确定中断服务程序没有运行呢?

热点排行