标题: 用单片机外部中断记次数,用在一定时间次数如果外部中断没有触发,次数清0 [打印本页]

作者: 林森    时间: 2019-8-11 11:59
标题: 用单片机外部中断记次数,用在一定时间次数如果外部中断没有触发,次数清0
没有实现清0的功能
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit k3 = P3^4;
sbit k4 = P3^5;
uint i;
uint Count_A=0;


void InitTimer0() //定时器0,方式1,10微妙  10*100=1s
{
    TMOD = 0x01;
    TH0 = 0xFF;
    TL0 = 0xF6;
    EA = 1;   //总中断
    ET0 = 1;  //定时器中断
    TR0=1;    //开定时器
         
}


void Show_Counts()
{
                if(Count_A==0)
                {
                                P2=0xff;
                }
                else if(Count_A>0&&Count_A<2)
                        {        
                                P2=0xfc;
                        }
                                else if(Count_A>2&&Count_A<4)
                        {
                                P2=0xfe;
                        }
                        
}
void Timer0Interrupt() interrupt 1  //   interrupt 1是定时器中断
{
    TH0 = 0xFF;
    TL0 = 0xF6;
         
    i++;
         if(i==10)
        {
                i=0;
                P1=0XF8;
        }        
}

void main()
        
{
        InitTimer0();
         IT0 = 1;                  //IT0=0 是低电平触发   1是下降沿  TCON
        IT1 = 1;      //IT1=0 是低电平触发   1是下降沿
        PX0 = 1;      //允许外部中断
        EX0 = 1;                  //INT0的中断允许位
        TR0=1;
        while(1)
        {
                 if(k3 == 0) Count_A = 0;
               
                if (Count_A==5) Count_A = 0;
                Show_Counts();
        }
}


void EX_INT0() interrupt 0
{
         Count_A++;
        TR0=1;
        i=0;
}
作者: wulin    时间: 2019-8-11 20:57
10us中断周期太短,CPU执行中断任务后几乎没有时间执行主程序。
作者: 林森    时间: 2019-8-11 23:00
wulin 发表于 2019-8-11 20:57
10us中断周期太短,CPU执行中断任务后几乎没有时间执行主程序。

我忘记改回去了,如果i=10的话 一直会输出p1=0xf8, 外部中断改变后,P1停留改变后,不会变回0xf8




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1