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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2507|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜在线视频 | 欧美性猛交一区二区三区精品 | h在线 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 在线观看一区 | 久久精品国产一区 | 午夜精品久久久久久久久久久久久 | 男女那个视频 | 久久亚洲一区二区三区四区 | 午夜视频免费在线观看 | 久久一区二区视频 | 亚洲欧美日韩一区二区 | 亚洲精品视频一区 | 久久久久久久久久久高潮一区二区 | 中文字幕日韩在线 | 婷婷精品| 久久久久久久久久久丰满 | 在线观看中文字幕 | 精品欧美一区二区三区久久久 | 天天看逼 | av福利网 | 亚洲精品视频免费 | 国产伦精品一区二区三区精品视频 | 国产成人91视频 | 国产精品久久久久久久久久免费看 | 亚州成人 | 无毛av| 爱草在线 | 欧美在线国产精品 | 成人精品国产 | 欧美国产激情二区三区 | 成人免费大片黄在线播放 | 午夜精品久久久 | 亚洲国产一区二区在线 | 成人在线免费av | 伊人色综合久久久天天蜜桃 | 狠狠av | 国产免费一区二区三区 | 久久久久亚洲 | 久久国内| 日韩一区二区三区av |