找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3293|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

STC8G單片機(jī)自動(dòng)進(jìn)入外部中斷是怎么回事?附程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:909797 發(fā)表于 2021-4-21 18:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
STC8芯片會(huì)自動(dòng)進(jìn)入外部中斷是怎么回事?P3口外面沒接任何東西,還是能自動(dòng)進(jìn)入到中斷中。  下面是我的代碼。哪位大神能幫我解答下呢
void INT0_init()
{
    EA = 0;
    IT1 = 1;
    EX1 = 1;
    EA = 1;
}

void main()
{
    INT0_init();
    P1M0 |=0X1C;
    P1M1 &=0XE3;
//    PCON = 0X02;
    _nop_();
    _nop_();
   
    while(1)
    {
        RED = 0;
        GREEN = BLUE = 1;
//        PCON = 0X02;
        _nop_();
        _nop_();         
    }
}
void Int0_inter() interrupt 2
{
      delay(100);
      RED = GREEN = BLUE = 0;
      delay(3000);
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:87000 發(fā)表于 2023-5-18 11:44 | 只看該作者
解決了沒有了?我也遇到這個(gè)問題
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2023-5-18 14:25 | 只看該作者
西點(diǎn)鐘靈毓秀 發(fā)表于 2023-5-18 11:44
解決了沒有了?我也遇到這個(gè)問題

樓主main函數(shù)初始化不當(dāng)。STC8系列速度太快,端口還沒有穩(wěn)定就開中斷導(dǎo)致開機(jī)外部中斷誤觸發(fā)。
啟動(dòng)順序調(diào)整一下,注意要清0中斷標(biāo)志。
void main()
{
        P0M0 = 0x00;
        P0M1 = 0x00;
        P1M0 = 0x00;
        P1M1 = 0x00;
        P2M0 = 0x00;
        P2M1 = 0x00;
        P3M0 = 0x00;
        P3M1 = 0x00;
        P4M0 = 0x00;
        P4M1 = 0x00;
        P5M0 = 0x00;
        P5M1 = 0x00;
        P6M0 = 0x00;
        P6M1 = 0x00;
        P7M0 = 0x00;
        P7M1 = 0x00;
        Delay_ms(100);//長(zhǎng)延時(shí)100ms               
        IT0 = 1;
        EX0 = 1;
        IE0 = 0;//INT0中斷請(qǐng)求標(biāo)志清0
        EA = 1;
        while(1)
        {
回復(fù)

使用道具 舉報(bào)

地板
ID:1034262 發(fā)表于 2023-5-18 17:36 | 只看該作者
外中斷是硬件在每個(gè)時(shí)鐘檢測(cè)邊沿,需要有邊沿出現(xiàn)才會(huì)設(shè)置中斷標(biāo)志,沒有邊沿出現(xiàn)是不會(huì)觸發(fā)中斷的。
樓主所謂自動(dòng)進(jìn)入中斷,則肯定檢測(cè)到了邊沿,以下情況要注意:
1、上電時(shí),有上升沿動(dòng)作,所以會(huì)有中斷標(biāo)志。允許中斷前,先清除標(biāo)志,至少3個(gè)時(shí)鐘周期后再允許外中斷。
2、IO設(shè)置為高阻,并且懸空,則IO浮動(dòng),就會(huì)檢測(cè)到邊沿,觸發(fā)中斷。
回復(fù)

使用道具 舉報(bào)

5#
ID:87000 發(fā)表于 2023-5-23 09:29 | 只看該作者
coody_sz 發(fā)表于 2023-5-18 17:36
外中斷是硬件在每個(gè)時(shí)鐘檢測(cè)邊沿,需要有邊沿出現(xiàn)才會(huì)設(shè)置中斷標(biāo)志,沒有邊沿出現(xiàn)是不會(huì)觸發(fā)中斷的。
樓主 ...

這算不算STC的一個(gè)小BUG了?畢竟,上電延時(shí)后,再開啟外部中斷也會(huì)產(chǎn)生這個(gè)現(xiàn)象。
回復(fù)

使用道具 舉報(bào)

6#
ID:879348 發(fā)表于 2023-5-23 10:34 | 只看該作者
初始化以后要清除中斷標(biāo)志位,基本所有單片機(jī)都有這個(gè)要求
回復(fù)

使用道具 舉報(bào)

7#
ID:526543 發(fā)表于 2023-5-23 10:38 | 只看該作者
STC8芯片自動(dòng)進(jìn)入外部中斷的原因可能是因?yàn)榇嬖诟蓴_信號(hào)或者噪聲,導(dǎo)致中斷引腳觸發(fā)。即使P3口沒有連接任何外部設(shè)備,但是由于芯片內(nèi)部的電路特性,可能會(huì)引發(fā)一些干擾信號(hào)。

你的代碼中使用了INT0外部中斷,但在初始化函數(shù)INT0_init()中,只進(jìn)行了相關(guān)的中斷配置,沒有對(duì)中斷觸發(fā)方式進(jìn)行設(shè)置。根據(jù)你的代碼,INT0的中斷觸發(fā)方式(IT0)并沒有設(shè)置,默認(rèn)為電平觸發(fā)方式�?赡軙�(huì)因?yàn)橥獠啃盘?hào)的波動(dòng)導(dǎo)致中斷觸發(fā)。

為了解決這個(gè)問題,你可以在INT0_init()函數(shù)中添加設(shè)置中斷觸發(fā)方式的代碼。例如,如果你希望使用下降沿觸發(fā)方式,可以修改代碼如下:void INT0_init()
{
    EA = 0;
    IT0 = 1;  // 設(shè)置INT0為下降沿觸發(fā)方式
    EX0 = 1;  // 允許INT0中斷
    EA = 1;
}
這樣設(shè)置后,只有當(dāng)INT0引腳檢測(cè)到下降沿時(shí)才會(huì)觸發(fā)中斷。
回復(fù)

使用道具 舉報(bào)

8#
ID:1034262 發(fā)表于 2023-5-23 10:50 | 只看該作者
西點(diǎn)鐘靈毓秀 發(fā)表于 2023-5-23 09:29
這算不算STC的一個(gè)小BUG了?畢竟,上電延時(shí)后,再開啟外部中斷也會(huì)產(chǎn)生這個(gè)現(xiàn)象。

不是BUG。不管什么時(shí)候開啟哪個(gè)中斷,都要先清除中斷標(biāo)志。
回復(fù)

使用道具 舉報(bào)

9#
ID:1095571 發(fā)表于 2023-10-10 13:36 來自觸屏版 | 只看該作者
今天測(cè)試了下,開啟外部中斷0,使用準(zhǔn)雙向口模式下,外部中斷0管腳上接了一個(gè)電解質(zhì)電容,正極接管腳,負(fù)極接地,可以解決抗干擾性差的問題呦,你試試呢,我測(cè)試了,必須拉低管腳,才能觸發(fā)中斷,不過還有個(gè)問題,電容大小的選擇,影響外部中斷的采集頻率。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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