标题:
用单片机外部中断记次数,用在一定时间次数如果外部中断没有触发,次数清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