英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3990|回复: 1
打印 上一主题 下一主题

开关中断时产生的问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-28 10:52:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pic12f675,mplab6.30.0,hi-tech v8.01 pl3.
一共用了3个中断:tmro(计数器),tmr1(定时器),口变。
在中断程序中:口变中断且口=1时,打开计数器。计数器做指定操作,然后关闭T0IF ,T0IE 。
if(GPIF)
{
  if(chang_in == 1)  
  {
   do
   {
    TMR0 = tonum;
    T0IE = 1;
   }
   while(T0IE != 1);
  }
  else T0IE = 0;
  T0IF = 0;
  GPIF = 0;
  GPIE = 1;
}
if(T0IF)   
{
  指定操作;
  T0IF = 0;
  T0IE = 0;
}

我在主程序中:
在一条件下关中断     GPIF = 0;     GPIE = 0;  T0IF = 0;     T0IE = 0;
但是在程序应用中却发现指定操作依然在操作,不知为何?
问题,我已解决:
在主程序中:在一条件下置一标志位。在中断程序中查标志位,标志位=0,进行中断操作;=1,清GPIF ,T0IF 。
2#
 楼主| 发表于 2009-3-28 10:53:04 | 只看该作者
程序在   while(T0IE != 1);出不来了
if(chang_in == 1)  
  {
   do
   {
    TMR0 = tonum;
    T0IE = 1;
   }
   while(T0IE != 1);

改成
while(chang_in == 1)
   {
    TMR0 = tonum;
    T0IE = 1;
   }
会好一些
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-12-25 22:37 , Processed in 0.051990 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表