欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 新手提問,關于STC15F104W中斷 [打印本頁]

作者: helaoyao    時間: 2015-1-20 22:09
標題: 新手提問,關于STC15F104W中斷
本人新手,最近整一個小程序,在STC89C52RC及STC15F104E上都成功運行了,但稍作修改后在15F104W上卻不能正常運行;一個按鍵開關接在3.2上開啟INT0,經觀察每次按該按鍵都要執行兩次中斷,按下一次,松開一次,IT0設置為僅下降沿中斷。我在中斷程序中設置有延時程序,若在延時期間放開按鍵則等中斷完成后繼續一次中斷,貌似中斷還會儲存。查了下手冊,沒看出所以然,請教大俠們這是怎么回事呢,如何解決,謝謝。

作者: xiaoliu    時間: 2015-1-21 03:19
加一個上拉電阻試試
作者: flash3g    時間: 2015-1-21 08:05
這個問題是在INT0中斷里還發生了高優先中斷 解決方法:退出INT0中斷子程序時要清一下中斷標志位
作者: helaoyao    時間: 2015-1-21 21:03
xiaoliu 發表于 2015-1-21 03:19
加一個上拉電阻試試

謝謝,加了上拉電阻的
作者: helaoyao    時間: 2015-1-21 21:04
flash3g 發表于 2015-1-21 08:05
這個問題是在INT0中斷里還發生了高優先中斷 解決方法:退出INT0中斷子程序時要清一下中斷標志位

ok,馬上試一下,謝謝
作者: helaoyao    時間: 2015-1-21 21:13
flash3g 發表于 2015-1-21 08:05
這個問題是在INT0中斷里還發生了高優先中斷 解決方法:退出INT0中斷子程序時要清一下中斷標志位

哦也,就是這個問題,加個IE0=1就解決了,而且另一個中斷也應該加一個,太感謝了。再問下為什么104W會出現這種情況而104E不會出現呢。
作者: cfancfan    時間: 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;        //設定內部晶振為12MHz剛好0.01秒

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

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




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1