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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機外部中斷實驗程序有錯誤

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:243437 發(fā)表于 2017-10-27 15:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
實驗二:外部中斷實驗
一、實驗目的
1掌握外部中斷技術的基本使用方法;
2掌握中斷處理程序的編寫方法;
3、進一步掌握KeilProteus軟件的用法。
二、實驗說明
1.外部中斷的初始化設置共有三項內(nèi)容:中斷總允許即EA=1,外部中斷允許即EXi=1i=01),中斷方式設置。中斷方式設置一般有兩種方式:電平方式和脈沖方式,本實驗選用后者,其前一次為高電平后一次為低電平時為有效中斷請求。因此高電平狀態(tài)和低電平狀態(tài)至少維持一個周期,中斷請求信號由引腳INT0(P3.2)INT1(P3.3)引入,本實驗由INT0(P3.2)引入。
2.中斷服務的關鍵:
A.保護進入中斷時的狀態(tài)。
堆棧有保護斷點和保護現(xiàn)場的功能使用PUSH指令,在轉(zhuǎn)中斷服務程序之前把單片機中有關寄存單元的內(nèi)容保護起來。
B.必須在中斷服務程序中設定是否允許中斷重入,即設置EX0位。
C.用POP指令恢復中斷時的現(xiàn)場。
3.中斷控制原理:
中斷控制是提供給用戶使用的中斷控制手段。實際上就是控制一些寄存器,51系列用于此目的的控制寄存器有四個:TCON IE SCON IP
4.中斷響應的過程:
首先中斷采樣然后中斷查詢最后中斷響應。采樣是中斷處理的第一步,對于本實驗的脈沖方式的中斷請求,若在兩個相鄰周期采樣先高電平后低電平則中斷請求有效,IE0IE11;否則繼續(xù)為0。所謂查詢就是由CPU測試TCONSCON中各標志位的狀態(tài)以確定有沒有中斷請求發(fā)生以及是那一個中斷請求。中斷響應就是對中斷請求的接受,是在中斷查詢之后進行的,當查詢到有效的中斷請求后就響應一次中斷。
INT0端接單次脈沖發(fā)生器。P1LED并行口JD3,以查看LED在每次中斷時的移位過程。
三、實驗內(nèi)容及步驟
1、用Keil軟件編輯中斷控制應用程序,采用P3.2接入開關K0P3.3接入開關K1引入外部中斷01,外部中斷0服務程序點亮8LED,外部中斷1服務程序?qū)崿F(xiàn)P1口驅(qū)動流水燈,0.5s變換一次。
2、用proteus軟件繪制實驗所需硬件電路,并進行仿真運行。
3用試驗箱載入程序并運行程序:
P1口做輸出口,接八位邏輯電平顯示,P3.2P3.3接開關輸入外部中斷信號,中斷程序功能使發(fā)光二極管循環(huán)點亮。
1最小系統(tǒng)中插上80C51核心板,用扁平數(shù)據(jù)線連接MCUP1口與八位邏輯電平顯示模塊JD3
2)用串行數(shù)據(jù)通信線連接計算機與實驗箱的RS232串口,將實驗箱RS232串口的端子RXD和TXD插到實驗芯片模塊的P3.0和P3.1插孔中,建立PC機與實驗箱單片機芯片的串行通信聯(lián)系。
3)打開電腦桌面上的Keil uVision4仿真軟件,建立實驗的項目文件夾和項目文件,在項目文件的源文件界面上輸入實驗源程序,并對源程序進行編譯,直到編譯無誤,并連接生成hex目標文件。
4)打開電腦桌面上的STC燒錄軟件,下載并裝載目標程序到實驗單片機芯片,然后上電全速運行程序,觀察程序運行的結(jié)果:程序功能使發(fā)光二極管循環(huán)點亮的流水燈的效果。
四、源程序
實驗程序一:
#include<reg51.h>
void delay(unsigned int d)  //定義延時子函數(shù)
{
while(--d>0);
}
void main()
{
P1=0xff;    //熄滅LED
EA=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
for(;;)
{;}
}
void INT0_ISR() interrupt 0   //外中斷0服務函數(shù)
{
P1=0x00;
PX0=0;
PX1=1;
}
void INT1_ISR() interrupt 2   //外中斷1服務函數(shù)
{
while(1)
{
delay(15000);
P1=0xfe;
delay(15000);
P1=0xfd;
delay(15000);
P1=0xfb;
delay(15000);
P1=0xf7;
delay(15000);
P1=0xef;
delay(15000);
P1=0xdf;
delay(15000);
P1=0xbf;
delay(15000);
P1=0x7f;
PX0=1;
PX1=0;
}
}

這個程序錯在哪里?

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

使用道具 舉報

來自 4#
ID:243562 發(fā)表于 2017-10-27 23:39 | 只看該作者
51單片機里的獨立按鍵中的k3,k4接著的是單片機里的中斷IO口INT0和INT1,所以你打開的中斷對應著的是開發(fā)板獨立按鍵中的k3和k4。
但是在中斷子程序中,你沒有寫按鍵的程序。
從你的課題里可以看出,你是想寫流水燈的程序。但是流水燈的程序并不是用延遲函數(shù)寫的,是用左移右移函數(shù)或者是定時器寫的。
建議你重新寫程序吧,尤其是你要知道自己所寫程序的每一行代碼的含義。

評分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

沙發(fā)
ID:237210 發(fā)表于 2017-10-27 22:13 | 只看該作者
不要在中斷函數(shù)內(nèi)部搞這種延時工作,中斷在執(zhí)行過程中是不會響應其它中斷的,除非手動打開和高級中斷

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:243562 發(fā)表于 2017-10-27 23:30 | 只看該作者
你的led燈都沒有定義IO口啊,而且你想學的是外部中斷但是外部中斷里卻沒有中斷程序啊。
回復

使用道具 舉報

5#
ID:213173 發(fā)表于 2017-10-28 10:09 | 只看該作者
這個例程只是演示兩個外部中斷功能,只要有此功能就無所謂對和錯,不足之處是是可以從INT0轉(zhuǎn)到INT1,反之不行,是因為while(1)下面死循環(huán)出不來。
回復

使用道具 舉報

6#
ID:228284 發(fā)表于 2017-10-28 11:11 | 只看該作者
中斷里面不能寫while(1)
回復

使用道具 舉報

7#
無效樓層,該帖已經(jīng)被刪除
8#
ID:243655 發(fā)表于 2017-10-28 12:41 | 只看該作者
d沒有初始定義
回復

使用道具 舉報

9#
ID:212797 發(fā)表于 2017-10-28 14:58 | 只看該作者
外部中斷1的服務程序?qū)懙暮茉愀猓锩娌粩嘤虚L時間的延時程序還有while(1)這樣的死循環(huán),另外按鍵程序沒有延時消抖。根據(jù)以上,我建議將程序如下修改:
1、設置兩個中斷觸發(fā)標志位全局變量,當外部中斷觸發(fā)以后,在中斷服務程序中只是將標志位置位即可;
2、主函數(shù)中外部中斷初始化后,在主循環(huán)中查詢中斷觸發(fā)標志位,如果變量置位則處理相關的動作;
3、由于外部中斷是和獨立按鍵相連,在中斷觸發(fā)后,需要延時消抖確認按鍵觸發(fā),防止是誤動作;
程序的整體結(jié)構(gòu)如下:
void main()
{
    sys_init();
    while (1)
    {
        if(int0_flag)
        {
            int0_flag = 1;
            delay to debounce;
            light up all the lights;
        }

         if(int1_flag)
        {
            delay to debounce;
            flowing water light;
        }
    }
}

void int0_isr() interrupt 0
{
    int0_flag = 1;
}

void int1_isr() interrupt 0
{
    int1_flag = 1;
}
回復

使用道具 舉報

10#
ID:111634 發(fā)表于 2017-10-28 22:12 | 只看該作者
本帖最后由 zl2168 于 2017-10-28 22:16 編輯

多學學正確的東西,脫離正確的東西,自己瞎想,會走人誤區(qū)。給你介紹一本書,《80C51單片機仿真設計實例教程——基于Keil C和Proteus》清華大學出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行,可演示,可觀測,程序語句條條有注解。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表