本帖最后由 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都打开,但是中断都不开 也可以正常采集数据,
妈的,。我自己也凌乱了。!!!!!!
|