求教:STC(51系列)INT0外部中断不能进入

[复制链接]
 楼主| dengzhengbing 发表于 2012-6-7 12:54 | 显示全部楼层 |阅读模式
void mcuinit()
{
TMOD   =  0X21;                //定时器0以方式1,定时器1方式2(串口用)
TH0    =  0X3C;
TL0    =  0XAF;                //定时器0初值15535:50ms溢出
IT0    =  1;                      //INT0负跳变中断
IE     =  0X83;                //开放外部中断0,定时器0中断, 总中断
}
void ServiceInt0(void) interrupt 0 using 1
{
//while (!INT0);                 //等待int0引脚低电平
TR0    =  1;                   //开定时器0
speed++;                                          
}
void ServiceTime0(void) interrupt 1 using 2
{
TH0    =  0X3C;
TL0    =  0XAF;                //重装定时器0
if(Overflow < 10)              //如果不到500ms
{Overflow++;}                  //计算溢出次数
else                           //定时器0溢出10次,定时达到500ms
{
    TR0       =  0;             //定时500ms事件到关定时器0,由车速脉冲在中断0中开启定时器0
    carspeed  =  speed;         
    speed     =  0;            
    Overflow  =  0;            
}
}
void main()
{
  //delay(1000,12,0);  //开机延时1s,关显示
  P3M0 = 0X80; //(0X84)
  P3M1 = 0X20  
  mcuinit();
  uartinit(); //串口初始化
  while(1)
  {
     uart(Overflow);       //观察定时器工作情况
   //uart(speed);           //通过串口发送变量值
   delay(1,carspeed,0);   //显示变量值
  }

源程序编译通过,可是下载到单片机就是不能进入INT0服务函数,搞了两天了,请赐教!!!谢谢!
ayb_ice 发表于 2012-6-7 13:28 | 显示全部楼层
应该可以的,可能是观察错误吧
触觉的爱 发表于 2012-6-7 13:29 | 显示全部楼层
请问是15系列的吗?
 楼主| dengzhengbing 发表于 2012-6-7 14:03 | 显示全部楼层
是51系列的,绝不会是观察错的:串口数据和显示都证明没进INT0服务
 楼主| dengzhengbing 发表于 2012-6-7 14:07 | 显示全部楼层
再次说明一下单片机是STC12C5608ad
ayb_ice 发表于 2012-6-7 14:46 | 显示全部楼层
怎么会没有进入中断呢请看图,这是用你的代码建立项目软件仿真的结果(你的代码有些不全,我补上了,MCU选择的是)

本帖子中包含更多资源

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

×
ayb_ice 发表于 2012-6-7 14:48 | 显示全部楼层
触发中断截图

本帖子中包含更多资源

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

×
ayb_ice 发表于 2012-6-7 14:48 | 显示全部楼层
附上项目文件

本帖子中包含更多资源

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

×
ayb_ice 发表于 2012-6-7 14:51 | 显示全部楼层
注意外部中断由P3.2触发
hp34401a 发表于 2012-6-7 17:52 | 显示全部楼层
楼上高手!听说过STC 15系列的A版本外部中断不行,其他应该是没问题的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

22

帖子

0

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