找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1686|回復(fù): 12
收起左側(cè)

單片機外中斷的問題,按鍵只在按第一次有用

[復(fù)制鏈接]
ID:985181 發(fā)表于 2021-12-10 09:39 來自觸屏版 | 顯示全部樓層 |閱讀模式
在這個程序里,采用了低電平觸發(fā)it0=0的話,按鍵只在按第一次有用,第二次按就沒有用了,下降沿觸發(fā)則不會,有沒有大佬解釋一下,感謝!
單片機源程序如下:
#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();
}}
回復(fù)

使用道具 舉報

ID:636538 發(fā)表于 2021-12-10 11:18 | 顯示全部樓層
Uchar Out dat a-0xfc, cnt :這個最起碼應(yīng)該是Uchar Outdata=0xfc, cnt;然后Dly05s(); }}你確定編譯沒有提示嗎
回復(fù)

使用道具 舉報

ID:897499 發(fā)表于 2021-12-10 12:14 來自觸屏版 | 顯示全部樓層
SKYLAR123 發(fā)表于 2021-12-10 11:18
Uchar Out dat a-0xfc, cnt :這個最起碼應(yīng)該是Uchar Outdata=0xfc, cnt;然后Dly05s(); }}你確定編譯沒有提 ...

復(fù)制過來有問題,是這個
#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();
}}
回復(fù)

使用道具 舉報

ID:897499 發(fā)表于 2021-12-10 12:20 來自觸屏版 | 顯示全部樓層
SKYLAR123 發(fā)表于 2021-12-10 11:18
Uchar Out dat a-0xfc, cnt :這個最起碼應(yīng)該是Uchar Outdata=0xfc, cnt;然后Dly05s(); }}你確定編譯沒有提 ...

因為有一些是在手機上打到,沒注意到
回復(fù)

使用道具 舉報

ID:401564 發(fā)表于 2021-12-10 12:44 | 顯示全部樓層
主函數(shù)沒有死循環(huán)while或者for
這個程序就不是一個正常的程序
一個不正常的程序,沒有分析的意義
回復(fù)

使用道具 舉報

ID:897499 發(fā)表于 2021-12-10 13:10 來自觸屏版 | 顯示全部樓層
Y_G_G 發(fā)表于 2021-12-10 12:44
主函數(shù)沒有死循環(huán)while或者for
這個程序就不是一個正常的程序
一個不正常的程序,沒有分析的意義

不是有for嗎
回復(fù)

使用道具 舉報

ID:313048 發(fā)表于 2021-12-10 13:45 | 顯示全部樓層

for7次之后就沒了?
回復(fù)

使用道具 舉報

ID:401564 發(fā)表于 2021-12-10 14:16 | 顯示全部樓層

樓上已經(jīng)有人問了:ofr完了之后呢?
循環(huán)和死循環(huán)是不一樣的
for(;;) {} 老外的代碼喜歡用這個
while(1){} 我們一般是這樣
回復(fù)

使用道具 舉報

ID:839438 發(fā)表于 2021-12-10 15:23 | 顯示全部樓層
這個程序只能運行7次后就停了所以后面就沒反應(yīng)了,沒猜錯的話樓主今年才接觸單片機?
回復(fù)

使用道具 舉報

ID:897499 發(fā)表于 2021-12-10 17:50 來自觸屏版 | 顯示全部樓層
Y_G_G 發(fā)表于 2021-12-10 14:16
樓上已經(jīng)有人問了:ofr完了之后呢?
循環(huán)和死循環(huán)是不一樣的
for(;;) {} 老外的代碼喜歡用這個

我運行的時候好像可以循環(huán)的啊,就是有低電平觸發(fā)按鍵就第一次有用,再按沒反應(yīng)了
回復(fù)

使用道具 舉報

ID:897499 發(fā)表于 2021-12-10 17:53 來自觸屏版 | 顯示全部樓層
我會想你的 發(fā)表于 2021-12-10 15:23
這個程序只能運行7次后就停了所以后面就沒反應(yīng)了,沒猜錯的話樓主今年才接觸單片機?

是的,學(xué)了2個多月吧,是我用低電平觸發(fā),按鍵只在第一次觸發(fā)有用,第二次沒反應(yīng)了,原本還以為是低電平觸發(fā)不會自動清0的問題,結(jié)果不是
回復(fù)

使用道具 舉報

ID:401564 發(fā)表于 2021-12-10 19:15 | 顯示全部樓層
chennchenn 發(fā)表于 2021-12-10 17:50
我運行的時候好像可以循環(huán)的啊,就是有低電平觸發(fā)按鍵就第一次有用,再按沒反應(yīng)了

不要好像,也不要大概,程序是嚴謹?shù)?對就是對,錯就是錯
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2021-12-10 19:26 | 顯示全部樓層
只說一次,
5樓和7樓已經(jīng)跟你說了問題關(guān)鍵了,
在8樓他又給你解釋了一遍了,

你如果依然覺得沒有問題,就不要再問了。 我也不會再回復(fù)此帖,我沒5樓和7樓那么好的耐心。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表