打印

51中断问题

[复制链接]
916|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hsbjb|  楼主 | 2012-4-12 18:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我写了如下代码,目的是想在中断中对x0就行累加,结果发现x0总是在0和0x80之间变动,不知为何原因。
---------------------------------
static unsigned char x0=7;

void init_serialcomm( void )
{ SCON = 0x50 ;  
  TMOD |= 0x20 ;  
  PCON |= 0x80 ;  
  TH1=243;
  TL1=243;
  TI=0;
  TR1 = 1 ; // timer 1 run // TI=1;  
}  

void send_char_com( unsigned char ch)
{
  SBUF=ch;
  while (!TI );
  TI= 0 ;  
}  
delay(BYTE ms)
{
BYTE i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}

  
void int0int() interrupt 0  
{
EX0=0;
++x0;
}

main()
{
  IT0=1;
  EA=1;  
  x0=7;
  init_serialcomm();
  while(1)
  {
  delay(5000);
if(x0>=200)
  {
  x0=0x07;
  }
   
  send_char_com(x0);
  EX0=1;
  delay(5000);

  }
}

相关帖子

沙发
火箭球迷| | 2012-4-12 18:35 | 只看该作者
我这仿真逻辑上没有其它问题,不过个人觉得,EX0应该在中断中进行恢复,至于如果有去抖的问题,那么最好在电路上解决

使用特权

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

本版积分规则

193

主题

2354

帖子

0

粉丝