急求单片机外部中断程序
我想用学习版上一个按键控制数码管显示,第一次按,数码管开始计数,第二次按,数码管停在那,第三次按接着往下计数,以此类推。我设想是奇数次按下,数码管计数,偶数次按下让它到外...
我想用学习版上一个按键控制数码管显示,第一次按,数码管开始计数,第二次按,数码管停在那,第三次按接着往下计数,以此类推。我设想是奇数次按下,数码管计数,偶数次按下让它到外部中断中。该怎么写程序呢?急求!
展开
展开全部
bit sign=0;
void main()
{
EA =1; //开总中断
EX0=1; //允许外部中断0中断
IT0=0; //设置为电平触发方式
while(1)
{
if(sign==0) //sign=0;显示 sign=1;程序进不来不显示
{
//数码管显示
}
}
}
void WW() interrupt 0
{
sign=~sign;
}
我只是简写一下,大概就是这个意思:第一次按下数码管显示,再按一下数码管不显示
希望对你有所帮助!
void main()
{
EA =1; //开总中断
EX0=1; //允许外部中断0中断
IT0=0; //设置为电平触发方式
while(1)
{
if(sign==0) //sign=0;显示 sign=1;程序进不来不显示
{
//数码管显示
}
}
}
void WW() interrupt 0
{
sign=~sign;
}
我只是简写一下,大概就是这个意思:第一次按下数码管显示,再按一下数码管不显示
希望对你有所帮助!
追问
谢谢你高手,我现在用你的思路写了下,但现在是我按着不放的时候,数码管一直走,一松手就停了,再按接着走,一松手就停,我该怎样在修改呢?
追答
因为你没有对按键做松手检测
sbit P32=P3^2;
void WW() interrupt 0
{
sign=~sign;
while(!P32); // INIT0松手检测 现在做普通IO口使用
//(我是这么写的,不知道还有没有其它对 INIT0的松手检测)
Delay(100); // 延时 (我用100ms)
}
迪凯特科技(北京)有限公司_
2025-01-03 广告
2025-01-03 广告
单片机串口通信数据丢失的原因可能如下:1. 按键通过串口发送对应命令,第一次按按键串口发送的指令正确且能把数据正确的显示出来,在第二次按按键串口发送的指令出现丢失的状况,可能是因为串口通信的波特率设置不正确。2. 如果单片机和外部设备的波特...
点击进入详情页
本回答由迪凯特科技(北京)有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询