[AVR单片机] 128的16位定时器高字节为什么会乱码?

[复制链接]
2587|4
 楼主| jason_77chen 发表于 2009-12-23 14:01 | 显示全部楼层 |阅读模式
本帖最后由 jason_77chen 于 2009-12-23 14:10 编辑

cli();// 关闭中断
                           //  DDRD  =(0<<DDD4)|(0<<DDD3)
                             PORTD =0X7F;
hJS:      
                             TCCR1B=0X02;//定时器控制寄存器
                             TIMSK=0;
                             TCNT1H=0X00;
                             TCNT1H=0X00;
                             TCNT1L=0X00;//00;给计时器清0;
                             TCNT1=0X0000;
                           
                             TIFR=0XFF;
//============================================================
hbb:  
                             wwwr=TCNT1H;
                             if(wwwr>=80)
                                                 {
                                                   cli();
                                                  }
                                  else
                                                    goto  hbb;
//================================================                             if(C_REC<=64)
                                          goto  hJS;
//=============================================================
GUDONG:  
              TCNT1H=0;
    TCNT1L=0;
      goto GUDONG;

就这样几条简单指令,为什么  if(wwwr>=80)为经常成立,观看好像是TCNT1H会变化,按道理是不会有太大变化啊,我用软仿真不会,感觉正常,一搞硬件仿真就老是条件成立,TCNT1H变化异常,请问各位有碰到过这样类似的问题吗?谢谢
程式可能写得不够规范,只是用来验证!谅解!
 楼主| jason_77chen 发表于 2009-12-23 15:27 | 显示全部楼层
终于解决了
给大家提个醒吧,如果你要单步执行,而且要看时间,你的软件是:avr studio 的话,一定要记得不要选
Debug / Run timers in stopped mode
一开始我根本没有注意这些,吃了大亏!
杜专 发表于 2009-12-23 18:44 | 显示全部楼层
lovelyegle 发表于 2009-12-26 22:01 | 显示全部楼层
程序写得不是一般的不规范,看着挺困难的
laslison 发表于 2009-12-27 22:59 | 显示全部楼层
进来看那看那
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:初体验Atmega128 我硬着头往前走

18

主题

155

帖子

2

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