导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→想不通的问题,关于复位与重新通电不同结果的一点疑问

* 78544: 想不通的问题,关于复位与重新通电不同结果的一点疑问

   liulx 
liulx发表的帖子 

 想不通的问题,关于复位与重新通电不同结果的一点疑问
双中断应用需要注意什么?硬件中的reset键按下和断电再通电有什么不同?

我设计的电路首先是数码从0到15显示(小数点做为进位标志,即14时小数点亮,同时显示数字4),用定时中断实现记数,显示完成后显示0,并关闭计时中断,再打开外中断并等待下步的外中断信号,进而进行下步操作。

程序如下:

#include   <reg51.h>  

unsigned int flag1=0; //定时中断记数
bit flag=0;


code unsigned char PP[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12};

//共阳显示

void delay(unsigned char k)   //延时
            { 
              while(--k);
             } 
  
void service_int1() interrupt 2 using 2//外中断一

  { 
    flag=1;
   }    // ……

void inter() interrupt 1 using 1   // 定时0中断
            { 
                flag1++;
            }

void main( ) 
  {  
     IP=0x02; //

     IE=0x82; // 

    TMOD=0x02;
     TH0=TL0=(256-250);
     ET0=1;
     
     TR0=1;   //0.5ms每周期,一秒2000次     


       for(;;)
     {      

            if(flag1>  =16000)   break;  //按序显示完成,并跳出for循环  
          

            P1=PP[flag1/2000]     ;//显示    

            delay(25)

   }

           P1=PP[0]; //显示0


           IP=0x05;     

           IE=0x85; //外中断打开,并关掉计时中断0

     do {  
          

            //…………外中断相关操作~    

          }while(1);
}

程序调试结果硬件检测,通电后数码管显示从0到15,然后显示为0进入等待状态……如果通电后按reset键,则数码管从新显示,但是显示到15后继续从0到15循环显示,感觉是还在记数中断控制中,不明白为什么会这样,是不是双中断时有什么问题忽略了?我可是设置了中断优先级了……另外不明白为什么按reset键会有此问题出现,是不是内部有什么数据未复位~?还有一个偶然现象是有时候通电也会出现上述的反复循环,我数码管是直接接的P1口,共阳极与5V电源间为一个100  欧的电阻。这样设计是不是有什么妥?


发表时间:2005年5月28日10:21:51

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:求内容: 31 书籍与教程 CCS使用指南 请发到邮箱kuer
[下一篇帖子]:那位大哥有三星单片机的反汇编程序啊,谢了那位大哥有三星单片机的反汇编程序啊,谢了