久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3431|回復: 8
收起左側

STC8G單片機自動進入外部中斷是怎么回事?附程序

[復制鏈接]
ID:909797 發表于 2021-4-21 18:35 | 顯示全部樓層 |閱讀模式
STC8芯片會自動進入外部中斷是怎么回事?P3口外面沒接任何東西,還是能自動進入到中斷中。  下面是我的代碼。哪位大神能幫我解答下呢
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);
}


回復

使用道具 舉報

ID:87000 發表于 2023-5-18 11:44 | 顯示全部樓層
解決了沒有了?我也遇到這個問題
回復

使用道具 舉報

ID:213173 發表于 2023-5-18 14:25 | 顯示全部樓層
西點鐘靈毓秀 發表于 2023-5-18 11:44
解決了沒有了?我也遇到這個問題

樓主main函數初始化不當。STC8系列速度太快,端口還沒有穩定就開中斷導致開機外部中斷誤觸發。
啟動順序調整一下,注意要清0中斷標志。
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);//長延時100ms               
        IT0 = 1;
        EX0 = 1;
        IE0 = 0;//INT0中斷請求標志清0
        EA = 1;
        while(1)
        {
回復

使用道具 舉報

ID:1034262 發表于 2023-5-18 17:36 | 顯示全部樓層
外中斷是硬件在每個時鐘檢測邊沿,需要有邊沿出現才會設置中斷標志,沒有邊沿出現是不會觸發中斷的。
樓主所謂自動進入中斷,則肯定檢測到了邊沿,以下情況要注意:
1、上電時,有上升沿動作,所以會有中斷標志。允許中斷前,先清除標志,至少3個時鐘周期后再允許外中斷。
2、IO設置為高阻,并且懸空,則IO浮動,就會檢測到邊沿,觸發中斷。
回復

使用道具 舉報

ID:87000 發表于 2023-5-23 09:29 | 顯示全部樓層
coody_sz 發表于 2023-5-18 17:36
外中斷是硬件在每個時鐘檢測邊沿,需要有邊沿出現才會設置中斷標志,沒有邊沿出現是不會觸發中斷的。
樓主 ...

這算不算STC的一個小BUG了?畢竟,上電延時后,再開啟外部中斷也會產生這個現象。
回復

使用道具 舉報

ID:879348 發表于 2023-5-23 10:34 | 顯示全部樓層
初始化以后要清除中斷標志位,基本所有單片機都有這個要求
回復

使用道具 舉報

ID:526543 發表于 2023-5-23 10:38 | 顯示全部樓層
STC8芯片自動進入外部中斷的原因可能是因為存在干擾信號或者噪聲,導致中斷引腳觸發。即使P3口沒有連接任何外部設備,但是由于芯片內部的電路特性,可能會引發一些干擾信號。

你的代碼中使用了INT0外部中斷,但在初始化函數INT0_init()中,只進行了相關的中斷配置,沒有對中斷觸發方式進行設置。根據你的代碼,INT0的中斷觸發方式(IT0)并沒有設置,默認為電平觸發方式。可能會因為外部信號的波動導致中斷觸發。

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

使用道具 舉報

ID:1034262 發表于 2023-5-23 10:50 | 顯示全部樓層
西點鐘靈毓秀 發表于 2023-5-23 09:29
這算不算STC的一個小BUG了?畢竟,上電延時后,再開啟外部中斷也會產生這個現象。

不是BUG。不管什么時候開啟哪個中斷,都要先清除中斷標志。
回復

使用道具 舉報

ID:1095571 發表于 2023-10-10 13:36 來自觸屏版 | 顯示全部樓層
今天測試了下,開啟外部中斷0,使用準雙向口模式下,外部中斷0管腳上接了一個電解質電容,正極接管腳,負極接地,可以解決抗干擾性差的問題呦,你試試呢,我測試了,必須拉低管腳,才能觸發中斷,不過還有個問題,電容大小的選擇,影響外部中斷的采集頻率。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产区一区二区 | 久久午夜影院 | 亚洲日本在线观看 | 日日爱影视 | 福利在线看 | 青青草网站| 亚洲黄色三级 | 亚洲 欧美 另类 综合 偷拍 | 亚洲少妇视频 | 手机看片福利永久 | 欧美激情第二页 | 久久riav| 日本在线视频一区二区 | 91福利网 | 亚洲视频在线免费观看 | 理论片中文字幕 | 成年人免费看片 | 久久a级片| 欧美夜夜操 | 自拍偷拍一区二区三区 | 国产一区二区在线看 | 成人午夜网站 | 日韩久久久久 | 国内外成人免费视频 | 中文字幕三区 | 精品少妇一区二区三区免费观 | 九九热在线观看 | 九九热精品在线 | 伊人精品 | 在线看黄色片 | 加勒比一区二区三区 | 欧洲精品 | 超碰在线小说 | 日韩视频免费在线观看 | 在线中文字幕 | 91欧美日韩 | 激情福利视频 | 亚洲国产日本 | 亚洲国产福利 | 国内精品视频在线观看 | 在线播放h|