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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

按郭天祥視頻寫的單片機程序,在執行中斷時,主函數沒有停止運行,數碼管還在動

查看數: 2951 | 評論數: 8 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2020-3-31 21:16

正文摘要:

按照郭天祥的單片機學習視頻照著編了個程序,發現程序在執行中斷時,主函數還在運行。程序所設計的就是當P3.2接地時產生中斷,且中斷程序使得p1.0所接的燈亮。但當我做的時候p3.2沒接地時,沒有發生中斷,系統正常運 ...

回復

ID:474802 發表于 2021-1-10 15:09
哈哈,還記得剛剛工作的時候,眼里總是盯著低電平高電平,看時序圖只看高低,然而很多芯片使用的時候都是邊沿觸發的,整半天才明白。

評分

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

查看全部評分

ID:798201 發表于 2021-1-10 13:13
本帖最后由 zwf33 于 2021-1-10 18:26 編輯

51外部中斷有兩種方式
低電平觸發 IT0=0  (檢測到引腳為低電平就觸發 )  
下降沿觸發IT0=1     (測到引腳從高到低下降時就觸發)

你的程序是下降沿觸發的,中斷點亮d1又回到了斷點位置執行主程序

增加IT0=0,中斷程再加延時delay(200),P3.2一直保持低電平,數碼管就不走了


#include <REGX52.H>
typedef unsigned char uchar;
typedef unsigned int  uint;
sbit wela=P2^7;
sbit dula=P2^6;
void delay(uint z);
sbit d1=P1^0;
uchar code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                     0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
                    };       //數碼管編碼表

uchar num;                                      //定義num數據類型
void main()

{
//********************外部中斷0,電平觸發中斷********************//
    EA=1;                                                                                                      //打開總中斷
    EX0=1;                                                                                                        //開外部中斷0
    IT0=0;                                                                                                        //電平觸發
//********************外部中斷0,電平觸發中斷********************//


//********************打開位選********************//
    wela=1;
    P0=0xc0;
    wela=0;
//********************打開位選********************//
    while(1)
    {
        d1=1;
        for(num=0; num<16; num++)                //unmp賦初值,判斷自加
        {
            dula=1;                //打開段選
            P0=table[num];                        //table等于自加后的num值
            dula=0;
            delay(50);
        }
    }
}

void delay(uint z)         //延時子程序
{
    uint x,y;
    for(x=z; x>0; x--)
    {
        for(y=110; y>0; y--);
    }
}

//********************中斷程序********************//
void  exter0() interrupt 0            //中斷函數不用聲明
{

        d1=0;
        delay(200);                                   
}
//********************中斷程序********************//


評分

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

查看全部評分

ID:718222 發表于 2020-4-5 13:19
silvanesw 發表于 2020-4-3 22:09
但是數碼管卻還在循環變動,只是速度較中斷發生前有所減慢.
應該是在反復的進出中斷.你的中斷函數里面就一 ...

感謝 這樣就解決了 厲害啊 我的大神
ID:704561 發表于 2020-4-3 22:09
但是數碼管卻還在循環變動,只是速度較中斷發生前有所減慢.
應該是在反復的進出中斷.你的中斷函數里面就一條語句.執行完就退出了.
進入中斷并不是你一直按下去就一直中斷.一般只是下降沿觸發中斷.
另外,你可以在中斷里加一個延時函數效果會明顯一些.

評分

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

查看全部評分

ID:718222 發表于 2020-4-3 11:36
www12www 發表于 2020-4-1 07:00
中斷發生,執行中斷程序,執行完返回到主程序,接著執行中斷發生點后的程序。

是 原理是這樣 可我的程序執行時 沒按這個原理運行 不知道哪里出現問題了
ID:718222 發表于 2020-4-3 11:36
man1234567 發表于 2020-3-31 22:53
把while(1)刪除或拔電就可以不跑了

我也知道啊
ID:201555 發表于 2020-4-1 07:00
中斷發生,執行中斷程序,執行完返回到主程序,接著執行中斷發生點后的程序。

評分

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

查看全部評分

ID:584814 發表于 2020-3-31 22:53
把while(1)刪除或拔電就可以不跑了

評分

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

查看全部評分

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产黄色三级 | 午夜黄色大片 | 国产精品福利一区 | 欧美a级成人淫片免费看 | 日韩在线欧美 | 国产乱码精品一区二区三 | 中文在线观看免费网站 | 91精品国产一区二区三区 | 狼人色| 国精产品一区二区 | 中文字幕在线视频观看 | www精品| 精品综合网 | 国产免费一级 | 久久久精品网 | 久艹视频在线观看 | a级片免费在线观看 | 国产成人91 | 蜜桃视频成人 | 欧美一区免费 | 日韩欧美小视频 | 欧美一级片在线观看 | 亚洲成人日韩 | 日本黄网站 | 青青草视频污 | 成人在线视频网站 | 成人午夜在线 | 国产免费一区二区三区在线观看 | 91玖玖| 欧美在线播放 | 在线视频日韩 | 亚洲视频色 | 最新超碰| 亚洲第一在线 | 亚洲欧美日韩在线 | 国产福利视频 | 国产精品久久久久久久成人午夜 | 日本天堂网 | 超碰av在线播放 | 精品影院 | 亚洲一区在线播放 |