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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

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

這個程序錯在哪里?

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

ID:237210 發表于 2017-10-27 22:13 | 顯示全部樓層
不要在中斷函數內部搞這種延時工作,中斷在執行過程中是不會響應其它中斷的,除非手動打開和高級中斷

評分

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

查看全部評分

回復

使用道具 舉報

ID:243562 發表于 2017-10-27 23:30 | 顯示全部樓層
你的led燈都沒有定義IO口啊,而且你想學的是外部中斷但是外部中斷里卻沒有中斷程序啊。
回復

使用道具 舉報

ID:213173 發表于 2017-10-28 10:09 | 顯示全部樓層
這個例程只是演示兩個外部中斷功能,只要有此功能就無所謂對和錯,不足之處是是可以從INT0轉到INT1,反之不行,是因為while(1)下面死循環出不來。
回復

使用道具 舉報

ID:228284 發表于 2017-10-28 11:11 | 顯示全部樓層
中斷里面不能寫while(1)
回復

使用道具 舉報

ID:243655 發表于 2017-10-28 12:41 | 顯示全部樓層
d沒有初始定義
回復

使用道具 舉報

ID:212797 發表于 2017-10-28 14:58 | 顯示全部樓層
外部中斷1的服務程序寫的很糟糕,里面不斷有長時間的延時程序還有while(1)這樣的死循環,另外按鍵程序沒有延時消抖。根據以上,我建議將程序如下修改:
1、設置兩個中斷觸發標志位全局變量,當外部中斷觸發以后,在中斷服務程序中只是將標志位置位即可;
2、主函數中外部中斷初始化后,在主循環中查詢中斷觸發標志位,如果變量置位則處理相關的動作;
3、由于外部中斷是和獨立按鍵相連,在中斷觸發后,需要延時消抖確認按鍵觸發,防止是誤動作;
程序的整體結構如下:
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;
}
回復

使用道具 舉報

ID:111634 發表于 2017-10-28 22:12 | 顯示全部樓層
本帖最后由 zl2168 于 2017-10-28 22:16 編輯

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久人体 | 午夜视频免费在线 | 国产精品成av人在线视午夜片 | 一区二区在线观看av | 国产98在线 | 免费, | 日本久久精 | 视频在线亚洲 | 中文字幕av在线播放 | 欧美精品tv | 在线日韩视频 | 国产激情91久久精品导航 | 国精产品一区一区三区免费完 | 黄网站涩免费蜜桃网站 | 国产区在线观看 | 国产精品中文字幕在线观看 | 成人黄视频在线观看 | 美女在线视频一区二区三区 | 精品国产欧美一区二区三区成人 | 午夜影院在线观看视频 | 在线观看视频91 | 中文字幕日韩一区 | 黄a网| 天堂一区二区三区 | 巨大荫蒂视频欧美另类大 | 精品福利一区二区三区 | 91精品国产综合久久香蕉922 | 国产精品一级 | 天天夜天天操 | 你懂的在线视频播放 | 中文字幕日韩一区 | 国产精品麻| 在线国产精品一区 | 欧美一级大片 | 色综合天天天天做夜夜夜夜做 | 宅男伊人 | 国产香蕉视频在线播放 | 先锋资源亚洲 | 少妇精品久久久久久久久久 | 亚洲精品国产电影 | 性高湖久久久久久久久 | 国产美女福利在线观看 |