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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2191|回復: 9
收起左側

一個Proteus仿真模擬單片機中斷的問題,請指教

[復制鏈接]
ID:152785 發表于 2023-10-11 19:32 | 顯示全部樓層 |閱讀模式
protues線路圖如下:
屏幕截圖 2023-10-11 192321.png

keil5代碼如下:
#include <reg52.h>

sbit k3=P3^2;
#define led P2

void Delay100ms(unsigned int ms)        //@12.000MHz
{
        unsigned char data i, j;
        while(ms>0)
        {
                i = 195;
                j = 138;
                do
                {
                        while (--j);
                } while (--i);
                ms--;
        }
}

void Init_interrupt()
{
        IT0=1;
        EX0=1;
        EA=1;
}

void main()
{
        Init_interrupt();
        while(1);
}

void k3_led() interrupt 0
{
        Delay100ms(1);
        if(k3==0)
        {
                led=!led;
                Delay100ms(1);
        }
}


仿真報錯如下
屏幕截圖 2023-10-11 192749.png

如果把led用位定義,操作單個led燈是正常.這是什么BUG?
回復

使用道具 舉報

ID:94031 發表于 2023-10-11 20:15 | 顯示全部樓層
led=!led; 改成 led=~led;
回復

使用道具 舉報

ID:1093723 發表于 2023-10-11 20:26 | 顯示全部樓層
在使用Proteus進行STM32單片機仿真時,某些情況下會發現中斷無反應的現象,即中斷未能正常觸發或中斷觸發后程序無法正常運行。這種問題可能會對開發過程造成嚴重影響,所以我們需要找出問題的原因并解決它。  首先,我們需要確認中斷向量表是否正確。在STM32中,中斷向量表存儲在存儲器的前面一段,它是中斷服務程序的入口地址。如果中斷向量表設定錯誤,將會導致中斷無法正常觸發。在Proteus仿真中,可以使用Debug功能驗證向量表的位置和地址是否正確。  其次,檢查中斷服務程序是否正確編寫。中斷服務程序一般由ISR函數(中斷服務函數)和IRQ函數(中斷請求函數)兩部分組成。中斷請求函數將中斷請求標志位清零并跳轉到中斷服務函數,ISR函數處理中斷請求并返回原程序。如果這兩部分出現了錯誤,就會導致中斷無反應。在Proteus仿真中,可以使用Debug功能逐行調試中斷服務程序,查看程序執行情況是否正確。  第三,檢查中斷優先級設置是否正確。在STM32中,不同的中斷優先級可能會產生中斷嵌套,如果嵌套深度過大,將會導致CPU處理中斷的效率降低。因此,我們需要根據實際應用需要,合理設置中斷優先級,以避免出現中斷嵌套的情況。在Proteus仿真中,可以使用NVIC Registers查看中斷控制器中的優先級設置是否正確。  最后,檢查硬件連接是否正確。在STM32中,一些外設和中斷引腳通過外部中斷連接,如果硬件連接出現問題將會導致中斷無法正常觸發。因此,我們需要仔細檢查外設和中斷引腳的連接是否正確。在Proteus仿真中,可以使用Schematic Editor查看連接是否正確。  總之,在Proteus仿真中,出現中斷無反應的問題需要通過多種方法進行排查和解決。我們需要仔細檢查中斷向量表、中斷服務程序、中斷優先級設置和硬件連接等方面,以確保仿真能夠正常進行,避免延誤項目進度。
回復

使用道具 舉報

ID:152785 發表于 2023-10-11 21:04 | 顯示全部樓層
xuyaqi 發表于 2023-10-11 20:15
led=!led; 改成 led=~led;

試了,同樣報錯,下到板子上,和仿真效果一樣
回復

使用道具 舉報

ID:18307 發表于 2023-10-12 10:04 | 顯示全部樓層
v115488 發表于 2023-10-11 21:04
試了,同樣報錯,下到板子上,和仿真效果一樣

在初始化里加上  INT0 = 1;
在中斷里把if比較去掉試一下
因為K3為低電平時 就進中斷了
要不把2個延時都去掉,中斷里只保留1句LED取反 試一下看進不進中斷
回復

使用道具 舉報

ID:94031 發表于 2023-10-12 10:11 | 顯示全部樓層
v115488 發表于 2023-10-11 21:04
試了,同樣報錯,下到板子上,和仿真效果一樣

中斷里不要用延時,我把中斷屏蔽后功能是正常的, 延時.png
回復

使用道具 舉報

ID:94031 發表于 2023-10-12 10:21 | 顯示全部樓層
v115488 發表于 2023-10-11 21:04
試了,同樣報錯,下到板子上,和仿真效果一樣

改了后的效果。 效果.zip (4.72 MB, 下載次數: 0)
回復

使用道具 舉報

ID:94031 發表于 2023-10-12 16:34 | 顯示全部樓層
xuyaqi 發表于 2023-10-12 10:21
改了后的效果。

燈閃.gif
回復

使用道具 舉報

ID:152785 發表于 2023-10-12 21:51 | 顯示全部樓層

首先感謝您的回復,跟您添麻煩了,問題已解決
過程是這樣的:
今天把代碼反復改了又改,仿真的時候按一下k3,CPU總是飚的70%,然后和昨天一樣報錯,自動終止仿真.
屏蔽掉中斷,代碼都精簡到只有按鍵和翻轉了,還是飚70%.
我才意識到可能是Protues這邊出問題了.
你仿真正常
然后我就對比我們兩個的線路,發現你用的是單個電阻,我用的是排阻,果斷拆除排阻,問題完美解決,再次感謝

討論:
排阻不是單電阻的集合體嗎,Protues出BUG了?
回復

使用道具 舉報

ID:108361 發表于 2023-10-26 18:37 | 顯示全部樓層
v115488 發表于 2023-10-12 21:51
首先感謝您的回復,跟您添麻煩了,問題已解決
過程是這樣的:
今天把代碼反復改了又改,仿真的時候按一下k3 ...

不要過于相信proteus,要相信物理定律
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲激情综合 | 波多野结衣一区二区 | 欧产日产国产精品视频 | 国产精品久久在线 | 一区二区av | 日本人和亚洲人zjzjhd | 蜜臀网 | 黄色一级大片在线免费看产 | 欧美日韩电影在线 | 日韩福利在线 | 欧美日韩在线一区二区 | 精品久久精品 | 国产一级成人 | 男人的天堂在线视频 | 国产欧美精品 | 欧美视频1区 | 一区二区三区在线免费观看 | 精品视频久久久 | 99热.com| 欧美激情欧美激情在线五月 | 国产精品久久久久久久岛一牛影视 | 久久久国产精品一区 | 99久久国产 | 国产区精品 | 国产在线一级片 | 欧美精品乱码久久久久久按摩 | 日韩欧美在 | 欧美成人免费在线视频 | 91久久精品国产91久久 | 亚洲精品久久久一区二区三区 | 天天草av | 玖玖在线精品 | a久久 | 欧美在线一区二区三区 | 久久久女女女女999久久 | 日本高清视频在线播放 | 欧美一区成人 | 亚洲欧美中文日韩在线v日本 | 久久综合九色综合欧美狠狠 | 日韩一区二区三区在线视频 | 国产一级在线观看 |