2345|3

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

单片机中断不产生是怎么回事!(急) [复制链接]

我用中断读取icl7135的转换结果,昨天中断还产生,怎么今天就不行了? 望达人指点指点!程序如下!我qq174717183
#include
#include
#define ad_run   XBYTE[0x7fff]
#define ad_read  XBYTE[0xbfff]
#define uchar unsigned char
uchar bbb[5]=0;
uchar aaa;
uchar i;
bit overrun;
bit underrun;
bit data_ready;   /* 增加一个标志 */
main()
{
   IT0=1;            // interrupt edge trigger
   IE=0x81;          //interrupt 0 enable
   i = 5;            /* "i" 做全局变量的名字,实在是很不好 */
   ad_run=0x20;        //ad start
   while(1)
   {
      if (data_ready)
      {
       /* 处理采样的数据 */
       data_ready = 0;
       ad_run = 0x20;   /* 假定需要重复测量, 再次启动转换 */
       }
   }
}


void   ad_result() interrupt 0
{
    ad_run = 0;  /* 如果需要暂停它,在哪一个nSTROBE脉冲给出控制信号并无分别*/
                  /* 每个脉冲都重复给出给出同样的控制信号也没有问题 */
    aaa=ad_read;

    overrun = underrun = 0;   /* 先清0 */

    if(aaa&0x04==0x04)
    overrun=1;                   //过量程处理
    else if(aaa&0x01==0x01)
    underrun=1;                   //欠量程处理

    bbb=aaa;  /* 我不知道 B1-B4 占 A 中的哪4个bit */
    i--;
    if (i==0)
    {
        data_ready = 1;
        i = 5;
     }
}

最新回复

//这样改试试 main() {    IT0=1;            // interrupt edge trigger    IE=0x81;          //interrupt 0 enable        EA=1;         //增加    i = 5;            /* "i" 做全局变量的名字,实在是很不好 */    ad_run=0x20;        //ad start    while(1)    {       if (data_ready)       {        /* 处理采样的数据 */        data_ready = 0;        ad_run = 0x20;   /* 假定需要重复测量, 再次启动转换 */        }    } } void   ad_result() interrupt 0 {     EA =0;  //增加 ad_run = 0;  /* 如果需要暂停它,在哪一个nSTROBE脉冲给出控制信号并无分别*/                   /* 每个脉冲都重复给出给出同样的控制信号也没有问题 */     aaa=ad_read;     overrun = underrun = 0;   /* 先清0 */     if(aaa&0x04==0x04)     overrun=1;                   //过量程处理     else if(aaa&0x01==0x01)     underrun=1;                   //欠量程处理     bbb=aaa;  /* 我不知道 B1-B4 占 A 中的哪4个bit */     i--;     if (i==0)     {         data_ready = 1;         i = 5;      } EA = 1; //增加 }   详情 回复 发表于 2007-4-5 15:22
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
产生不了中断,很多时候不是软件的问题!

具体,还是先从硬件入手吧...
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
EA=1
中断总允许你改了吗?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
//这样改试试


main()
{
   IT0=1;            // interrupt edge trigger
   IE=0x81;          //interrupt 0 enable
   
   EA=1;         //增加
   i = 5;            /* "i" 做全局变量的名字,实在是很不好 */
   ad_run=0x20;        //ad start
   while(1)
   {
      if (data_ready)
      {
       /* 处理采样的数据 */
       data_ready = 0;
       ad_run = 0x20;   /* 假定需要重复测量, 再次启动转换 */
       }
   }
}


void   ad_result() interrupt 0
{
   
EA =0;  //增加
ad_run = 0;  /* 如果需要暂停它,在哪一个nSTROBE脉冲给出控制信号并无分别*/
                  /* 每个脉冲都重复给出给出同样的控制信号也没有问题 */
    aaa=ad_read;

    overrun = underrun = 0;   /* 先清0 */

    if(aaa&0x04==0x04)
    overrun=1;                   //过量程处理
    else if(aaa&0x01==0x01)
    underrun=1;                   //欠量程处理

    bbb=aaa;  /* 我不知道 B1-B4 占 A 中的哪4个bit */
    i--;
    if (i==0)
    {
        data_ready = 1;
        i = 5;
     }
EA = 1; //增加
}
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表