找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 810|回复: 12
收起左侧

单片机外中断的问题,按键只在按第一次有用

[复制链接]
ID:985181 发表于 2021-12-10 09:39 来自手机 | 显示全部楼层 |阅读模式
在这个程序里,采用了低电平触发it0=0的话,按键只在按第一次有用,第二次按就没有用了,下降沿触发则不会,有没有大佬解释一下,感谢!
单片机源程序如下:
#include<reg51. h>
#include<intrins. h>
#include <Dly05s. h>
typedef usigned char Uchar ;
sbit K1=P3 2;
void  INT0sev() interrupt 0
{while(K1==0) :while(K1-1)IE0=0;}
void maind
{Uchar Out dat a-0xfc, cnt :
EA=1;
EX0=1;
IT0= 0;
for (cnt=0: cnt<7; cnt1+1)
P1=0utdata:
Outdata _ crol (Outdata, 1)
Dly05s();
}}
回复

使用道具 举报

ID:636538 发表于 2021-12-10 11:18 | 显示全部楼层
Uchar Out dat a-0xfc, cnt :这个最起码应该是Uchar Outdata=0xfc, cnt;然后Dly05s(); }}你确定编译没有提示吗
回复

使用道具 举报

ID:897499 发表于 2021-12-10 12:14 来自手机 | 显示全部楼层
SKYLAR123 发表于 2021-12-10 11:18
Uchar Out dat a-0xfc, cnt :这个最起码应该是Uchar Outdata=0xfc, cnt;然后Dly05s(); }}你确定编译没有提 ...

复制过来有问题,是这个
#include<reg51. h>
#include<intrins. h>
#include <Dly05s. h>
typedef usigned char Uchar ;
sbit K1=P3 2;
void  INT0sev() interrupt 0
{while(K1==0) ;
while(K1==1);
IE0=0;}
void maind
{Uchar Outdata=0xfc, cnt ;
EA=1;
EX0=1;
IT0= 1;
for (cnt=0: cnt<7; cnt1+1)
{P1=0utdata;
Outdata _ crol _(Outdata, 1)
Dly05s();
}}
回复

使用道具 举报

ID:897499 发表于 2021-12-10 12:20 来自手机 | 显示全部楼层
SKYLAR123 发表于 2021-12-10 11:18
Uchar Out dat a-0xfc, cnt :这个最起码应该是Uchar Outdata=0xfc, cnt;然后Dly05s(); }}你确定编译没有提 ...

因为有一些是在手机上打到,没注意到
回复

使用道具 举报

ID:401564 发表于 2021-12-10 12:44 | 显示全部楼层
主函数没有死循环while或者for
这个程序就不是一个正常的程序
一个不正常的程序,没有分析的意义
回复

使用道具 举报

ID:897499 发表于 2021-12-10 13:10 来自手机 | 显示全部楼层
Y_G_G 发表于 2021-12-10 12:44
主函数没有死循环while或者for
这个程序就不是一个正常的程序
一个不正常的程序,没有分析的意义

不是有for吗
回复

使用道具 举报

ID:313048 发表于 2021-12-10 13:45 | 显示全部楼层

for7次之后就没了?
回复

使用道具 举报

ID:401564 发表于 2021-12-10 14:16 | 显示全部楼层

楼上已经有人问了:ofr完了之后呢?
循环和死循环是不一样的
for(;;) {} 老外的代码喜欢用这个
while(1){} 我们一般是这样
回复

使用道具 举报

ID:839438 发表于 2021-12-10 15:23 | 显示全部楼层
这个程序只能运行7次后就停了所以后面就没反应了,没猜错的话楼主今年才接触单片机?
回复

使用道具 举报

ID:897499 发表于 2021-12-10 17:50 来自手机 | 显示全部楼层
Y_G_G 发表于 2021-12-10 14:16
楼上已经有人问了:ofr完了之后呢?
循环和死循环是不一样的
for(;;) {} 老外的代码喜欢用这个

我运行的时候好像可以循环的啊,就是有低电平触发按键就第一次有用,再按没反应了
回复

使用道具 举报

ID:897499 发表于 2021-12-10 17:53 来自手机 | 显示全部楼层
我会想你的 发表于 2021-12-10 15:23
这个程序只能运行7次后就停了所以后面就没反应了,没猜错的话楼主今年才接触单片机?

是的,学了2个多月吧,是我用低电平触发,按键只在第一次触发有用,第二次没反应了,原本还以为是低电平触发不会自动清0的问题,结果不是
回复

使用道具 举报

ID:401564 发表于 2021-12-10 19:15 | 显示全部楼层
chennchenn 发表于 2021-12-10 17:50
我运行的时候好像可以循环的啊,就是有低电平触发按键就第一次有用,再按没反应了

不要好像,也不要大概,程序是严谨的,对就是对,错就是错
回复

使用道具 举报

ID:624769 发表于 2021-12-10 19:26 | 显示全部楼层
只说一次,
5楼和7楼已经跟你说了问题关键了,
在8楼他又给你解释了一遍了,

你如果依然觉得没有问题,就不要再问了。 我也不会再回复此帖,我没5楼和7楼那么好的耐心。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表