打印
[疑难问答]

用中断也不能防抖吗?用软件仿真已通过了

[复制链接]
2551|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laslison|  楼主 | 2010-2-1 09:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
volatile uint a,b,tt,c,d;
uchar code table[]={
0x20,0xe6,0x14,0x84,
0xc2,0x88,0x08,0xe4,
0x0,0x80};
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
void main()
{
a=0;
b=0;
tt=0;
c=0;
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
EA=1;//开总中断
ET0=1;//开定时器0中断
EX0=1;//开外中断0
IT0=1;//外中断0下降沿
EX1=1;
IT1=1;
while(1)
{
P2=table;//档位显示
P0=table[a];//定时显示
if(a==1)
{
led3=1;//一档
led2=1;//二档
led1=0;//三档
}
if(a==2)
{
led3=1;
led1=1;
led2=0;
}
if(a==3)
{
led1=1;
led2=1;
led3=0;
}
if(a==4)
{
P2=0xff;
a=0;
}
if(c==1)
{
if(tt==100)
{
tt=0;
d++;
if(d==60)
{
d=0;
b--;
if(b==0)
{
TR0=0;//停止定时器0
a=0;
P2=0xff;
b=0;
c=0;
}
}
}
}
}
}
void exter0() interrupt 0
{
a++;
}
void exter1() interrupt 2
{
b++;
TR0=1;//启动定时器0
c=1;
if(b>9)
{
b=0;
}
}
void time0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
tt++;

}
沙发
huamunv| | 2010-2-2 15:00 | 只看该作者
注意延时

使用特权

评论回复
板凳
David_ming| | 2010-2-2 19:19 | 只看该作者
中断要是能防抖这芯片就有问题喽

使用特权

评论回复
地板
Karlshen| | 2010-2-4 08:29 | 只看该作者
3# David_ming
为啥这么说呢?j据我所知中断是可以防抖的啊

使用特权

评论回复
5
laslison|  楼主 | 2010-4-10 21:46 | 只看该作者
3# David_ming
难道不可以吗

使用特权

评论回复
6
贾君鹏子| | 2010-4-10 21:54 | 只看该作者
中断防抖?

使用特权

评论回复
7
laslison|  楼主 | 2010-4-10 22:02 | 只看该作者
6# 贾君鹏子
我的觉得和延时消抖是一个道理啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

791

帖子

1

粉丝