sbit key = P3^2
void main()
{
EX0 = 1
IT0 = 1
EA = 1
while(1)
{
这里写你的功能;
}
}
void int0() interrupt 0
{
unsigned int i = 0
while(1)
{
if(key == 0)
{
i++
if(i >= 1000)
{
i=0
flag = 1
break
}
}
else
{
i=0
break
}
}
}
这个程序包括了消抖部分,答谨磨flag = 1的时候就表明 按键晌带按下了。 flag的变量定义,还有头文件,自己加上,在主程序你清斗检测flag的状态就可以了
比如说按键接在p3.2,用外部旦没纯中断0实现键按一次进入外部中断程序并保持,再按一下中断返回ORG 0000H
LJMP MAIN
ORG 000BH 外部中断0的入口地址
LJMP IN0
ORG 0030H ;主程序的开始
MAIN:MOV SP,#60H
SETB EA ;开中断总允许
SETB EX0;开外部中断0允许模咐
SETB IT0 ;外部中断0触发方察歼式
SJMP $;原地踏步,可以用你自己的具体程序替代
IN0:JB P3.2,$ ;判断按键(p3.2)是否按下
JNB P3.2,$ ;判断按键(p3.2)是否释放
RETI ;中断返回断点处
END
main函数外 int flag=0while(1)中改拆侍为:if(key==0)
{
while(key=0)
flag++
}
if(flag%2==0)
{
P0=disp[i]
i++
if(i>10)
i=0
delay(250)
}
按闹陪一次,暂停,再按继续液御蠢循环。你试试看看对不?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)