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

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4760|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

AT89C51單片機(jī)外部中斷與應(yīng)用設(shè)計(jì) Proteus仿真代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
一、設(shè)計(jì)目的
1、學(xué)習(xí)并掌握中斷系統(tǒng)工作原理;
2、學(xué)習(xí)并掌握中斷程序編寫方法;
3、學(xué)習(xí)并掌握中斷嵌套原理;
4、學(xué)習(xí)并掌握中斷優(yōu)先級(jí)設(shè)置方法;
二、實(shí)驗(yàn)設(shè)備
1、計(jì)算機(jī);
2、單片機(jī)開(kāi)發(fā)板;
3、Keil C51編程軟件;
4、Proteus仿真軟件;
三、設(shè)計(jì)內(nèi)容
1、功能
功能1:中斷不嵌套
(1)K1和K2都未按下時(shí),P1口8只LED呈流水燈顯示
(2)K1(P3.2)按下再松開(kāi)時(shí),P1口的4只LED交替閃爍5次,然后再回到流水燈顯示。
(3)K2(P3.3)按下再松開(kāi)時(shí),P1口的8只LED全部閃爍5次,然后再回到流水燈顯示。
(4)若K1按下4只LED交替閃爍5次期間,按下K2則等交替閃爍之后,8只LED全部閃爍5次
(5)以上延時(shí)時(shí)間均為500ms。
功能2:中斷嵌套
若K1按下4只LED交替閃爍5次期間,按下K2則馬上8只LED全部閃爍5次,然后回來(lái)繼續(xù)4只LED交替閃爍
功能3:K3按下一次,切換上述兩種功能。
2、硬件電路原理圖

3、設(shè)計(jì)程序
#include <reg52.h>
#include <intrins.h>
//宏定義
#define uchar unsigned char
#define FOSC 11059200L //晶振設(shè)置,使用11.0592M Hz

//IO接口定義
sbit Trans = P3^4;//轉(zhuǎn)換功能一與功能二開(kāi)關(guān),為key3

/*******************************************************************************
* 函 數(shù) 名 :Delayms
* 函數(shù)功能 :實(shí)現(xiàn) ms級(jí)的延時(shí)
* 輸   入 :ms
* 輸   出 :無(wú)
*******************************************************************************/
void Delayms(unsigned int ms)
{
    unsigned int i,j;
    for(i=0;i<ms;i++)
    #if FOSC == 11059200L
        for(j=0;j<114;j++);
    #elif FOSC == 12000000L
     for(j=0;j<123;j++);
    #elif FOSC == 24000000L
        for(j=0;j<249;j++);
    #else
        for(j=0;j<114;j++);
    #endif
}
/*******************************************************************************
* 函 數(shù) 名 :EX_Init
* 函數(shù)功能 :外部中斷初始化程序
* 輸   入 :無(wú)
* 輸   出 :無(wú)
*******************************************************************************/
void EX_Init()
{
        EA=1;   //開(kāi)總中斷
        //允許 INT0 INT1 外部中斷
        EX0=1;
        EX1=1;
        //觸發(fā)方式為脈沖負(fù)邊沿觸發(fā)
        IT0=1;
        IT1=1;

        PX0=0;
        PX1=0;
}
/*******************************************************************************
* 函 數(shù) 名 : LED
* 函數(shù)功能 :流水燈及key3檢測(cè)
* 輸   入 :無(wú)
* 輸   出 :無(wú)
*******************************************************************************/
void LED()
{
    unsigned char k;
    k=0xfe;
    while(1)
    {
        //按鍵檢測(cè)
        if(Trans == 0)
        {
            Delayms(30);//按鍵消抖
            if(Trans == 0)
                PX1 = ~PX1;//中斷優(yōu)先級(jí)切換
            while(!Trans);//松手檢測(cè)
        }
        //流水燈
        P1=k;      
        Delayms(500);   
        k=_crol_(k,1);  
    }
}
/*******************************************************************************
* 函 數(shù) 名 :main
* 函數(shù)功能 :主函數(shù)
* 輸   入 :無(wú)
* 輸   出 :無(wú)
*******************************************************************************/
void main( )
{
        EX_Init();//外部中斷初始化:允許 INT0 、INT1 外部中斷、觸發(fā)方式為脈沖負(fù)邊沿觸發(fā)、開(kāi)總中斷
        LED();//流水燈
}

/*******************************************************************************
* 函 數(shù) 名 :int0_isr
* 函數(shù)功能 :外部中斷0中斷服務(wù)函數(shù) ISR
* 輸   入 :無(wú)
* 輸   出 :無(wú)
*******************************************************************************/
void int0_isr(void) interrupt 0

{
    uchar i;
     //四個(gè)燈閃爍5次
    for(i=0;i<5;i++)
    {
         P1=0x0f;
         Delayms(500);
         P1=0xf0;
         Delayms(500);
    }

}

/*******************************************************************************
* 函 數(shù) 名 :int1_isr
* 函數(shù)功能 :外部中斷2中斷服務(wù)函數(shù) ISR
* 輸   入 :無(wú)
* 輸   出 :無(wú)
*******************************************************************************/
void int1_isr(void) interrupt 2
{

  uchar j;
  //八個(gè)燈閃爍5次
    for (j=0;j<5;j++)
    {
            P1=0x00;
            Delayms(500);
            P1=0xff;
            Delayms(500);
    }
}


四、本任務(wù)中的幾個(gè)功能如何實(shí)現(xiàn)?(說(shuō)明設(shè)計(jì)思路)
設(shè)計(jì)思路:①功能二和功能一中的(4)都要以功能一中的前三點(diǎn)做基礎(chǔ)、故先實(shí)現(xiàn)上述三點(diǎn)基礎(chǔ)功能。②功能二與功能一中的(4)區(qū)別就是中斷優(yōu)先級(jí)、通過(guò)對(duì)中斷初始化函數(shù)配置中、分別實(shí)現(xiàn)兩個(gè)功能。③功能三依托第②步中,分析兩個(gè)功能差別,使用按鍵檢測(cè)來(lái)實(shí)現(xiàn)切換。
設(shè)計(jì)過(guò)程:先定義文件名,然后定義宏變量,定義Delayms函數(shù),定義兩個(gè)中斷函數(shù),中斷一和中斷二,定義中斷初始化函數(shù),定義流水燈函數(shù)。主函數(shù)中運(yùn)行中斷初始化函數(shù)、流水燈程序當(dāng)按鍵一按下時(shí),中斷一發(fā)生,執(zhí)行中斷一中的程序,當(dāng)按鍵二按下時(shí)執(zhí)行中斷二中的程序。功能一與功能二的實(shí)現(xiàn)依托兩個(gè)中斷函數(shù),其中功能一要求兩個(gè)優(yōu)先級(jí)相同,功能二要求外部中斷1的優(yōu)先級(jí)要大于外部中斷0,功能三依托LED函數(shù)中的按鍵檢測(cè)功能,檢測(cè)到key3按下時(shí)、重新配置外部中斷1的優(yōu)先級(jí),實(shí)現(xiàn)兩個(gè)功能的切換。


全部資料51hei下載地址:
外部中斷與應(yīng)用設(shè)計(jì)keil5工程.rar (5.3 MB, 下載次數(shù): 30)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表