打印

吐血求救!!!

[复制链接]
1462|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
taijing33|  楼主 | 2014-12-5 22:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 taijing33 于 2014-12-5 23:09 编辑

用的是16F690单片机,班子上有DS1302和18b20,还有按键显示一体的芯片tm1629。我定时器0定时间隔10ms。DS1302和18b20 是100ms采集一次数据,tm1629是10ms刷新一次数据。
问题是我还需要用到定时1或者定时器2.现在的问题是我只要打开定时器1或者2的中断后(而且中断函数都没有写)就采集不到DS1302和18b20 或者是刷新不了显示(我也不知道是采集不了数据还是刷新不看了显示,反正就是数据不变)。用的pickit3也不能仿真这个单片机(编译器上说能仿真的)。
我尝试了在采集数据和刷新显示的时候关掉中断,但是也不行。
void interrupt tim0(void)
{   
    static unsigned int a=0;
     static unsigned int b=0;
        if(T0IF)
        {  
                T0IF=0;
                TMR0=0xb1;     //10ms
                jiffies ++;
                display_jiff++;
                temp_jiff++;
                        
        }
        //中断里只有定时器0的函数


}        
void main(void)
{   
    char i=0;

        
IniIO();
ini_TIM0();   
    //WDTCON =0X17;
  ini_AD();
config_tm();
v_ClockInit_f();
SWDTEN = 0;
    while(1)
    {  
            //asm("clrwdt");

       //if (_pastc(display_jiff) >= 100)      //10ms
       if(display_jiff>1)   //10ms
            {
              display_jiff =0;

                 key_pro();      //按键扫描
                 led_proc();     //显示
                 
            }
      // if (_pastc(temp_jiff) >= 100)      //100ms
      if(temp_jiff>10)  //100ms
            {
              temp_jiff = 0;
               GIE=0;
                   get_temp();        //采集温度
                   v_ClockUpdata_f(); //采集时间
                   GIE=1;
            }
           
    }
}



肯定大侠给我指点迷津,小弟先谢过了。
下面是程序有点乱。

===================
问题又进一步发现了,
打开定时器2 不行或者打开定时器1的中断不行。
定时器1和2都打开,但是中断都不开 也可以正常采集数据,

妈的,。我自己也凌乱了。!!!!!!
沙发
taijing33|  楼主 | 2014-12-6 08:38 | 只看该作者
怎么没人啊

使用特权

评论回复
板凳
yklstudent| | 2014-12-6 10:55 | 只看该作者
DS18B20,100ms读取一次,楼主确定这样可行???????

使用特权

评论回复
评分
参与人数 1威望 +20 收起 理由
NE5532 + 20 楼主把这句话看懂了,就晋级了。.
地板
NE5532| | 2014-12-6 11:17 | 只看该作者
你应该给楼上再加50分。

使用特权

评论回复
5
taijing33|  楼主 | 2014-12-6 11:19 | 只看该作者
yklstudent 发表于 2014-12-6 10:55
DS18B20,100ms读取一次,楼主确定这样可行???????

我改成2秒也不行,我不明白为什么我开了定时器1和2的中断程序就不正常了。

使用特权

评论回复
6
ghost_z| | 2014-12-6 14:24 | 只看该作者
打开中断没写中断函数会跑飞的

使用特权

评论回复
7
NE5532| | 2014-12-6 15:40 | 只看该作者
本帖最后由 NE5532 于 2014-12-6 15:43 编辑
taijing33 发表于 2014-12-6 11:19
我改成2秒也不行,我不明白为什么我开了定时器1和2的中断程序就不正常了。 ...

你还没看懂我那句点评,3楼的回帖就是码农和总工之间的区别。2秒检测1次温度?温度能变化到这么快么?DS18B20热平衡能完成么?

使用特权

评论回复
8
taijing33|  楼主 | 2014-12-6 20:35 | 只看该作者
ghost_z 发表于 2014-12-6 14:24
打开中断没写中断函数会跑飞的

大侠终于出现,!!厉害,。我就是没在中断函数里写定时器1和2的中断函数,现在加上了,竟然好了。虽然没有进一步测试后面的功能。但是我相信就是因为你说的这个原因,。

写程序这么多年,我一直没有发现这个。
再次感谢大侠!!!

使用特权

评论回复
9
yewuyi| | 2014-12-6 20:41 | 只看该作者
taijing33 发表于 2014-12-6 20:35
大侠终于出现,!!厉害,。我就是没在中断函数里写定时器1和2的中断函数,现在加上了,竟然好了。虽然没 ...

写多少年了?

超过6个月以上就会让人鄙视了。。。;P

使用特权

评论回复
10
NE5532| | 2014-12-6 20:42 | 只看该作者
呵呵,我倒是觉得3楼才是大侠,也许你根本就犯不着用中断来弄,也就自然没有这些事情了。

使用特权

评论回复
11
原野之狼| | 2014-12-6 21:54 | 只看该作者
呵呵   看我签名~

使用特权

评论回复
12
Liuweixing| | 2014-12-6 22:00 | 只看该作者
taijing33 发表于 2014-12-6 08:38
怎么没人啊

检查中断间隔,中断开频繁.

使用特权

评论回复
13
Liuweixing| | 2014-12-6 22:01 | 只看该作者
taijing33 发表于 2014-12-6 08:38
怎么没人啊

检查中断间隔,中断开频繁.

使用特权

评论回复
14
smallskiff| | 2014-12-6 22:11 | 只看该作者
楼主,你的代码编写风格确实很不规范,对齐、缩进等基本编程规范都没有,见了你的代码就头疼!

使用特权

评论回复
15
海中水| | 2014-12-7 00:05 | 只看该作者
我觉得6楼还是厉害的,不过3楼也不错。但是不是该问题的解决办法,楼主在括号厉害特别注明没有写中断函数,这是故意的吗?代码确实不规范,要在我们公司我骂死你。

使用特权

评论回复
16
NE5532| | 2014-12-7 09:10 | 只看该作者
海中水 发表于 2014-12-7 00:05
我觉得6楼还是厉害的,不过3楼也不错。但是不是该问题的解决办法,楼主在括号厉害特别注明没有写中断函数 ...

真正厉害的人,不是他搞多复杂的东西,而是他能把复杂的东西搞简单。

使用特权

评论回复
评分
参与人数 1威望 +8 收起 理由
王奉瑾 + 8
17
taijing33|  楼主 | 2014-12-7 22:26 | 只看该作者
代码不规范是我 被问题的搞得改来改去造成的。我习惯功能实现后再把代码规范起来。

使用特权

评论回复
18
海中水| | 2014-12-8 10:48 | 只看该作者
taijing33 发表于 2014-12-7 22:26
代码不规范是我 被问题的搞得改来改去造成的。我习惯功能实现后再把代码规范起来。 ...

:)

使用特权

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

本版积分规则

163

主题

365

帖子

3

粉丝