单片机不能进入中断函数

[复制链接]
3837|18
 楼主| tanxin2721 发表于 2014-8-29 22:32 | 显示全部楼层 |阅读模式
我写了个简单的中断程序,但是为什么不能进入中断?
#include<reg51.h>
void timer0(void) interrupt 1 using 2{
            flag=0;
   TH1=(65536-46083)/256;
            TL1=(65536-46083)%256;
}
void main(void)
{
    flag=1;
     P1=0xff;
    TMOD=0X10;
    TH1=(65536-46083)/256;
    TL1=(65536-46083)%256;
     EA=1;       
     ET1=1;
    TR1=1;      
  while(1)
  {       
  while(flag==0){       
          P1=0XFd;
       
  flag=1;
                                }
   }
                 
  }
NE5532 发表于 2014-8-29 22:59 | 显示全部楼层
先看一下Timer在没在跑,再说进中断的事,另外P1=0XFd;直接放到Timer中断里做不就OK了啊?还有楼主是怎么判断没有进中断的呢??
 楼主| tanxin2721 发表于 2014-8-29 23:18 | 显示全部楼层
NE5532 发表于 2014-8-29 22:59
先看一下Timer在没在跑,再说进中断的事,另外P1=0XFd;直接放到Timer中断里做不就OK了啊?还有楼主是怎么判 ...

我是通过keil调试你我在中断函数里面设了个断点,全速运行,但是一直卡在31行, while(flag==0)这里,状态什么都在,不知道哪里出问题了?我调试也不太会,不知道有没有问题?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
NE5532 发表于 2014-8-29 23:22 | 显示全部楼层
既然用了仿真,完全可以看到Timer有没有在累加啊,上面已经提示了楼主怎么调试了,楼主没有动脑经去看。不会调试永远无法做单片机,推荐《程序调试黑宝书》
ayb_ice 发表于 2014-8-30 06:04 来自手机 | 显示全部楼层
中断号错了

评分

参与人数 1威望 +2 收起 理由
tanxin2721 + 2 很给力!

查看全部评分

LC1234 发表于 2014-8-30 07:55 来自手机 | 显示全部楼层
开T1却想进T0中断?
nobita520 发表于 2014-8-30 08:10 | 显示全部楼层
看不懂啊
nobita520 发表于 2014-8-30 08:12 | 显示全部楼层
正在学习
 楼主| tanxin2721 发表于 2014-8-30 08:49 | 显示全部楼层
LC1234 发表于 2014-8-30 07:55
开T1却想进T0中断?

哪里看出我要进t0中断?是timer0()吗?这只是个函数命名,改成timer1()一样不行
 楼主| tanxin2721 发表于 2014-8-30 08:50 | 显示全部楼层
LC1234 发表于 2014-8-30 07:55
开T1却想进T0中断?

哪里看出我想进t0中断,是timer0()吗?这只是个函数命名,改成timer1(),一样不行。
 楼主| tanxin2721 发表于 2014-8-30 08:53 | 显示全部楼层
LC1234 发表于 2014-8-30 07:55
开T1却想进T0中断?

不好意思,哈哈,刚才看到5l提示,查了下,还真是。。。。你比我厉害。。:lol
 楼主| tanxin2721 发表于 2014-8-30 08:56 | 显示全部楼层
ayb_ice 发表于 2014-8-30 06:04
中断号错了

哈哈,谢谢,查了下,的确是中断号错了。。。定时器中断编号是3,但是我在书上看到interrupt后接一个0---31的整数的嘛?(我以为只是个中断编一个码而已,只要不相同就行)难道书上有问题?
ningling_21 发表于 2014-8-30 09:00 | 显示全部楼层
tanxin2721 发表于 2014-8-30 08:56
哈哈,谢谢,查了下,的确是中断号错了。。。定时器中断编号是3,但是我在书上看到interrupt后接一个0--- ...

不是书上有问题,是你理解有问题...

每个中断对应的编号是唯一的.
NWPU_CHEN 发表于 2014-8-30 09:45 | 显示全部楼层
tanxin2721 发表于 2014-8-30 08:56
哈哈,谢谢,查了下,的确是中断号错了。。。定时器中断编号是3,但是我在书上看到interrupt后接一个0--- ...

书有没有问题,不确定,因为你的描述不全面, 你中断函数的写法都没弄清,弄出了个笑话,刚开始写程序建议你找找例程参考写,不懂的地方可以来论坛问,基础点的明确才能写程序,另外不会调也白搭,跟不会写差不多!
coody 发表于 2014-8-30 10:57 | 显示全部楼层
开了T1要进T0中断,这个太难为MCU了。。。。:lol
LC1234 发表于 2014-8-30 12:38 | 显示全部楼层
tanxin2721 发表于 2014-8-30 08:53
不好意思,哈哈,刚才看到5l提示,查了下,还真是。。。。你比我厉害。。 ...

因为也曾经遇到过这种错误
nobita520 发表于 2015-1-6 10:35 | 显示全部楼层
程序开始时只是执行P1=0xff,,然后一直执行P1=0xfd,所以灯是不会闪烁上午
coody 发表于 2015-1-6 10:39 | 显示全部楼层
中断号错误,你的程序会死掉
xhpeng 发表于 2015-1-6 12:36 | 显示全部楼层
interrupt  3
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

33

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部