打印

单片机不能进入中断函数

[复制链接]
2941|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我写了个简单的中断程序,但是为什么不能进入中断?
#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有没有在累加啊,上面已经提示了楼主怎么调试了,楼主没有动脑经去看。不会调试永远无法做单片机,推荐《程序调试黑宝书》

使用特权

评论回复
5
ayb_ice| | 2014-8-30 06:04 | 只看该作者
中断号错了

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
tanxin2721 + 2 很给力!
6
LC1234| | 2014-8-30 07:55 | 只看该作者
开T1却想进T0中断?

使用特权

评论回复
7
nobita520| | 2014-8-30 08:10 | 只看该作者
看不懂啊

使用特权

评论回复
8
nobita520| | 2014-8-30 08:12 | 只看该作者
正在学习

使用特权

评论回复
9
tanxin2721|  楼主 | 2014-8-30 08:49 | 只看该作者
LC1234 发表于 2014-8-30 07:55
开T1却想进T0中断?

哪里看出我要进t0中断?是timer0()吗?这只是个函数命名,改成timer1()一样不行

使用特权

评论回复
10
tanxin2721|  楼主 | 2014-8-30 08:50 | 只看该作者
LC1234 发表于 2014-8-30 07:55
开T1却想进T0中断?

哪里看出我想进t0中断,是timer0()吗?这只是个函数命名,改成timer1(),一样不行。

使用特权

评论回复
11
tanxin2721|  楼主 | 2014-8-30 08:53 | 只看该作者
LC1234 发表于 2014-8-30 07:55
开T1却想进T0中断?

不好意思,哈哈,刚才看到5l提示,查了下,还真是。。。。你比我厉害。。:lol

使用特权

评论回复
12
tanxin2721|  楼主 | 2014-8-30 08:56 | 只看该作者
ayb_ice 发表于 2014-8-30 06:04
中断号错了

哈哈,谢谢,查了下,的确是中断号错了。。。定时器中断编号是3,但是我在书上看到interrupt后接一个0---31的整数的嘛?(我以为只是个中断编一个码而已,只要不相同就行)难道书上有问题?

使用特权

评论回复
13
ningling_21| | 2014-8-30 09:00 | 只看该作者
tanxin2721 发表于 2014-8-30 08:56
哈哈,谢谢,查了下,的确是中断号错了。。。定时器中断编号是3,但是我在书上看到interrupt后接一个0--- ...

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

每个中断对应的编号是唯一的.

使用特权

评论回复
14
NWPU_CHEN| | 2014-8-30 09:45 | 只看该作者
tanxin2721 发表于 2014-8-30 08:56
哈哈,谢谢,查了下,的确是中断号错了。。。定时器中断编号是3,但是我在书上看到interrupt后接一个0--- ...

书有没有问题,不确定,因为你的描述不全面, 你中断函数的写法都没弄清,弄出了个笑话,刚开始写程序建议你找找例程参考写,不懂的地方可以来论坛问,基础点的明确才能写程序,另外不会调也白搭,跟不会写差不多!

使用特权

评论回复
15
coody| | 2014-8-30 10:57 | 只看该作者
开了T1要进T0中断,这个太难为MCU了。。。。:lol

使用特权

评论回复
16
LC1234| | 2014-8-30 12:38 | 只看该作者
tanxin2721 发表于 2014-8-30 08:53
不好意思,哈哈,刚才看到5l提示,查了下,还真是。。。。你比我厉害。。 ...

因为也曾经遇到过这种错误

使用特权

评论回复
17
nobita520| | 2015-1-6 10:35 | 只看该作者
程序开始时只是执行P1=0xff,,然后一直执行P1=0xfd,所以灯是不会闪烁上午

使用特权

评论回复
18
coody| | 2015-1-6 10:39 | 只看该作者
中断号错误,你的程序会死掉

使用特权

评论回复
19
xhpeng| | 2015-1-6 12:36 | 只看该作者
interrupt  3

使用特权

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

本版积分规则

9

主题

33

帖子

1

粉丝