找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10337|回復: 6
收起左側

新手提問,關于STC15F104W中斷

[復制鏈接]
ID:72558 發(fā)表于 2015-1-20 22:09 | 顯示全部樓層 |閱讀模式
本人新手,最近整一個小程序,在STC89C52RC及STC15F104E上都成功運行了,但稍作修改后在15F104W上卻不能正常運行;一個按鍵開關接在3.2上開啟INT0,經(jīng)觀察每次按該按鍵都要執(zhí)行兩次中斷,按下一次,松開一次,IT0設置為僅下降沿中斷。我在中斷程序中設置有延時程序,若在延時期間放開按鍵則等中斷完成后繼續(xù)一次中斷,貌似中斷還會儲存。查了下手冊,沒看出所以然,請教大俠們這是怎么回事呢,如何解決,謝謝。

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

回復

使用道具 舉報

ID:51269 發(fā)表于 2015-1-21 03:19 來自手機 | 顯示全部樓層
加一個上拉電阻試試
回復

使用道具 舉報

ID:67377 發(fā)表于 2015-1-21 08:05 | 顯示全部樓層
這個問題是在INT0中斷里還發(fā)生了高優(yōu)先中斷 解決方法:退出INT0中斷子程序時要清一下中斷標志位

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:72558 發(fā)表于 2015-1-21 21:03 | 顯示全部樓層
xiaoliu 發(fā)表于 2015-1-21 03:19
加一個上拉電阻試試

謝謝,加了上拉電阻的
回復

使用道具 舉報

ID:72558 發(fā)表于 2015-1-21 21:04 | 顯示全部樓層
flash3g 發(fā)表于 2015-1-21 08:05
這個問題是在INT0中斷里還發(fā)生了高優(yōu)先中斷 解決方法:退出INT0中斷子程序時要清一下中斷標志位

ok,馬上試一下,謝謝
回復

使用道具 舉報

ID:72558 發(fā)表于 2015-1-21 21:13 | 顯示全部樓層
flash3g 發(fā)表于 2015-1-21 08:05
這個問題是在INT0中斷里還發(fā)生了高優(yōu)先中斷 解決方法:退出INT0中斷子程序時要清一下中斷標志位

哦也,就是這個問題,加個IE0=1就解決了,而且另一個中斷也應該加一個,太感謝了。再問下為什么104W會出現(xiàn)這種情況而104E不會出現(xiàn)呢。

評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 贊一個!

查看全部評分

回復

使用道具 舉報

ID:302494 發(fā)表于 2018-6-30 15:57 | 顯示全部樓層
我也遇見了相同問題,外部中斷程序不能用。
#include <STC15F2K60S2.H>
#define uchar unsigned char

sbit Inductorium = P3^4;         //土壤濕度感應器
sbit WaterPump = P3^0;                 //接水泵控制繼電器
sbit LED = P3^5;                        //水泵工作指示燈
uchar temp = 0x00;
uchar cnt = 0;
void main()
{
        WaterPump = 1;
        Inductorium = 1;
        LED = 1;
        TMOD = 0x01;
        TH0 = (65536-10000)/255;
        TL0 = (65536-10000)%255;        //設定內(nèi)部晶振為12MHz剛好0.01秒

        EX0 = 1;                                        //打開外部中斷0
        ET0 = 1;                                        //打開定時器中斷0

        IT0 = 0;                                        //外部中斷0采用低電平觸發(fā)
        TR0 = 1;                                        //定時器開始計時
        EA = 1;                                                //中斷總開關
        while(1)
        {
                if(temp == 0x00)
                {
                        LED = 1;
                        WaterPump = 1;
                }
                else if(temp == 0xFF)
                {
                        LED = 0;
                        WaterPump = 0;
                }
                else
                {
                }
        }
}

void intautorun() interrupt 1 //定時器中斷函數(shù)
{
        TH0 = (65536-10000)/255;
        TL0 = (65536-10000)%255;
        cnt ++;
        if(cnt >= 5)
        {
                cnt = 0;
                temp = (temp << 1)|Inductorium;
        }
}
void interrupt_INT0() interrupt 0 //外部中斷函數(shù)
{
        LED = 0;
        WaterPump = 0;
}
外部中斷采用2引腳按鍵連接GND,也在P3^2引腳上加過上拉電阻試過,還是沒用。
在按下外部中斷上的按鍵時LED燈閃了一下,繼電器沒反應,放開按鍵時也LED燈也閃了一下。但是不管IT0 = 1還是 IT0 = 0 都一樣的情況
回復

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表