打印

奇怪了,开定时器1,中断就不能响应了。痛苦ing

[复制链接]
2801|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wasay|  楼主 | 2011-4-19 12:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "intrins.h"
#include "reg52.h"
unsigned char key=0;  
void init();  //初始化各变量和中断的函数
void init() //初始化函数
{
TMOD=0x11;  //设置定时器0,1工作方式                           
TH0=(65536-20000)/256;
TL0=(65536-20000)%256;
  EA=1;   //开总中断
  ET0=1;  //开定时器0中断
  TR0=1;  //启动定时0
// ET1=1;  //开定时器1中断
// TR1=1; //启动定时1
EX0=1;  //开外部中断0
IT0=1;  //下降沿触发
P2=0xff;
}
void main()
{
  init();
  while(1)
  {
     while(key)
     {
      key=0;  
      P2=0x0f;
     }
  }
}
void inter0() interrupt 0 //外部中断
{
key=1; //按键标志置1
}
void time0() interrupt 1 //定时器0中断
{        
TH0=(65536-20000)/256;    //取低8位
TL0=(65536-20000)%256;    //取高8位
}


我把

// ET1=1;  //开定时器1中断
// TR1=1; //启动定时1

这两行代码“//”注释掉,中断0就可以响应,如果不注释掉,怎么都不会响应。这是怎么回事呢?

相关帖子

沙发
ayb_ice| | 2011-4-19 13:28 | 只看该作者
你打开T1的中断和计时,而没有相应的T1中断程序,当然要出错了

使用特权

评论回复
板凳
云的追寻| | 2011-4-19 14:05 | 只看该作者
T1中断没写。。。void time0() interrupt 3 //定时器1中断

使用特权

评论回复
地板
wasay|  楼主 | 2011-4-19 14:33 | 只看该作者
谢谢楼上两位。一语点破钻进S胡同里的人。 3 Q   :handshake

使用特权

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

本版积分规则

0

主题

27

帖子

1

粉丝