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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 8116|回復(fù): 8
收起左側(cè)

單片機(jī)外部中斷實(shí)驗(yàn)程序有錯(cuò)誤

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

這個(gè)程序錯(cuò)在哪里?

回復(fù)

使用道具 舉報(bào)

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

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:237210 發(fā)表于 2017-10-27 22:13 | 顯示全部樓層
不要在中斷函數(shù)內(nèi)部搞這種延時(shí)工作,中斷在執(zhí)行過程中是不會(huì)響應(yīng)其它中斷的,除非手動(dòng)打開和高級(jí)中斷

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:213173 發(fā)表于 2017-10-28 10:09 | 顯示全部樓層
這個(gè)例程只是演示兩個(gè)外部中斷功能,只要有此功能就無所謂對(duì)和錯(cuò),不足之處是是可以從INT0轉(zhuǎn)到INT1,反之不行,是因?yàn)閣hile(1)下面死循環(huán)出不來。
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:212797 發(fā)表于 2017-10-28 14:58 | 顯示全部樓層
外部中斷1的服務(wù)程序?qū)懙暮茉愀猓锩娌粩嘤虚L(zhǎng)時(shí)間的延時(shí)程序還有while(1)這樣的死循環(huán),另外按鍵程序沒有延時(shí)消抖。根據(jù)以上,我建議將程序如下修改:
1、設(shè)置兩個(gè)中斷觸發(fā)標(biāo)志位全局變量,當(dāng)外部中斷觸發(fā)以后,在中斷服務(wù)程序中只是將標(biāo)志位置位即可;
2、主函數(shù)中外部中斷初始化后,在主循環(huán)中查詢中斷觸發(fā)標(biāo)志位,如果變量置位則處理相關(guān)的動(dòng)作;
3、由于外部中斷是和獨(dú)立按鍵相連,在中斷觸發(fā)后,需要延時(shí)消抖確認(rèn)按鍵觸發(fā),防止是誤動(dòng)作;
程序的整體結(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;
}
回復(fù)

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美亚洲国产精品 | 久久久精品一区 | 久久久久久久久久久久久9999 | 成人在线视频免费观看 | 91精品国产91久久久久久密臀 | 国产精品久久国产精品99 | 在线精品观看 | 国产成人精品一区二区三区在线 | 久久宗合色 | 国产精品高潮呻吟久久 | 午夜精品久久久久久久 | 成人在线视频网站 | 欧美一级一区 | 亚洲精品久久久久久国产精华液 | 中文字幕 国产 | 国产成人精品午夜视频免费 | 国产高清在线观看 | 日日干夜夜干 | 国产精品毛片一区二区在线看 | 伊人久久大香线 | 亚洲a毛片 | 99福利在线观看 | 成人三级在线观看 | 久久综合香蕉 | 色综久久 | 狠狠干网站 | 九九国产在线观看 | 成人在线观看免费观看 | 久操av在线| 亚洲国产电影 | 狠狠色网 | 国产成人在线视频 | 操操操av | 亚洲精品免费在线观看 | 午夜亚洲 | 国产精品一区久久久 | 久视频在线 | 99精品国产一区二区三区 | 久热9| 亚洲喷水 | 日本天天色|