关于c51中断中的全局变量问题

sxzllp 2012-04-11 04:25:13
大家好!我写了如下代码,目的是想在中断中对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);

}
}
...全文
268 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbing7 2012-04-11
  • 打赏
  • 举报
回复
我这仿真逻辑上没有其它问题

不过个人觉得,EX0应该在中断中进行恢复

至于如果有去抖的问题,那么最好在电路上解决
lbing7 2012-04-11
  • 打赏
  • 举报
回复
首先,delay(5000);溢出。。。

27,508

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧