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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于單片機(jī)外部中斷程序調(diào)試,為什么沒有執(zhí)行?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:961087 發(fā)表于 2021-9-9 14:57 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 王披風(fēng) 于 2021-9-9 17:18 編輯

第一次運用單片機(jī)的外部中斷,但不知道什么原因中斷里邊的程序并沒有執(zhí)行,串口也打開了,是在開發(fā)板上進(jìn)行調(diào)試的,單片機(jī)是STC89C52RC程序如下:
#include <REGX52.H>
#define uint  unsigned int
#define uchar  unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar num,num1;
uchar  table1[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d};
uchar  table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar  table3[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};        

void delayms(uint xms)
{
      uint i,j;
          for(i=xms;i>0;i--)
            for(j=110;j>0;j--);
}

void extern0()interrupt 0
{

            for(num1=0;num1<8;num1++)
            {
                     P1=table3[num1];
                          delayms(1000);
                 }
                 P1=0xff;         


}        


void main()
{
          IT0=0;
                EX0=1;
                EA=1;
         while(1)
         {
            for(num=0;num<6;num++)
            {        
                                wela=1;
                          P0=table2[num];
                                wela=0;
                          P0=0xff;

                          dula=1;
                                P0=table1[num];
                                dula=0;
                                delayms(500);
                                                   
                        }         
                }
}

IMG_20210909_145254.jpg (195.13 KB, 下載次數(shù): 123)

IMG_20210909_145254.jpg

TX-1C增強(qiáng)版原理圖.pdf

943.37 KB, 下載次數(shù): 10

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

使用道具 舉報

沙發(fā)
ID:792340 發(fā)表于 2021-9-9 16:54 來自手機(jī) | 只看該作者
你那個電路圖有沒有?還有就是把IT0=1,設(shè)置成下降沿觸發(fā)方式
回復(fù)

使用道具 舉報

板凳
ID:961087 發(fā)表于 2021-9-9 17:19 | 只看該作者
電ac 發(fā)表于 2021-9-9 16:54
你那個電路圖有沒有?還有就是把IT0=1,設(shè)置成下降沿觸發(fā)方式

改了,我之前自己調(diào)試的時候就改正過,我把原理圖放在了附件可以看下,
回復(fù)

使用道具 舉報

地板
ID:961087 發(fā)表于 2021-9-9 17:28 | 只看該作者
電ac 發(fā)表于 2021-9-9 16:54
你那個電路圖有沒有?還有就是把IT0=1,設(shè)置成下降沿觸發(fā)方式

你好,這個方法我以前自己調(diào)試的時候設(shè)置過,但是還是沒有用,我把原理圖放在了附錄,感謝指點
回復(fù)

使用道具 舉報

5#
ID:686482 發(fā)表于 2021-9-9 18:26 | 只看該作者
這個是要實現(xiàn)什么功能?
回復(fù)

使用道具 舉報

6#
ID:686482 發(fā)表于 2021-9-9 18:26 | 只看該作者
這個是要實現(xiàn)什么功能呢?
回復(fù)

使用道具 舉報

7#
ID:94031 發(fā)表于 2021-9-9 18:38 | 只看該作者
中斷占得時間應(yīng)盡量短,你在外中斷里又是for,又是延時是不對的,完全可以在中斷設(shè)置標(biāo)志,在主循環(huán)里做處理。
回復(fù)

使用道具 舉報

8#
ID:213173 發(fā)表于 2021-9-9 21:59 | 只看該作者
用杜邦線一端接地另一端觸碰P3.2觸發(fā)外部中斷,同時按下S2、S14也可觸發(fā)外部中斷。數(shù)碼管交替顯示012345和6789Ab。
  1. #include <REG51.H>
  2. #define uint  unsigned int
  3. #define uchar  unsigned char
  4. sbit dula=P2^6;
  5. sbit wela=P2^7;
  6. //順序共陰極數(shù)碼管段碼表,段碼a-h順序接PX0-PX7
  7. uchar code table[]={//共陰數(shù)碼管段碼"0~f-."
  8.                 0x3f,0x06,0x5b,0x4f,
  9.                 0x66,0x6d,0x7d,0x07,
  10.                 0x7f,0x6f,0x77,0x7c,
  11.                 0x39,0x5e,0x79,0x71,0x40,0x80};
  12. uchar num,num1;
  13. uchar  table1[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d};
  14. uchar  table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
  15. uchar  table3[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};        
  16. bit flag;

  17. void delayms(uint xms)
  18. {
  19.         uint i,j;
  20.         for(i=xms;i>0;i--)
  21.                 for(j=110;j>0;j--);
  22. }

  23. void extern0()interrupt 0
  24. {
  25.         flag=~flag;
  26. }        


  27. void main()
  28. {
  29.         IT0 = 1;//set INT0 int type (1:Falling 0:Low level)
  30.         EX0 = 1;
  31.         EA  = 1;
  32.         while(1)
  33.         {
  34.                 P0=0x00;//消隱
  35.                 dula=1;//鎖存
  36.                 dula=0;
  37.                 P0=~(0x01<<num);//位碼
  38.                 wela=1;//鎖存
  39.                 wela=0;
  40.                 if(!flag)                              
  41.                         P0=table[num];//段碼
  42.                 else
  43.                         P0=table[num+6];//段碼
  44.                 dula=1;//鎖存
  45.                 dula=0;
  46.                 delayms(1);
  47.                 num=++num%6;
  48.         }
  49. }
復(fù)制代碼
回復(fù)

使用道具 舉報

9#
ID:123289 發(fā)表于 2021-9-10 09:10 | 只看該作者
當(dāng)按鍵按下時,會有彈動,會發(fā)出N次中斷申請。你如何保證每次按下,只中斷一次呢?
回復(fù)

使用道具 舉報

10#
ID:961087 發(fā)表于 2021-9-10 09:23 | 只看該作者
wulin 發(fā)表于 2021-9-9 21:59
用杜邦線一端接地另一端觸碰P3.2觸發(fā)外部中斷,同時按下S2、S14也可觸發(fā)外部中斷。數(shù)碼管交替顯示012345和6 ...

感謝大佬,我自己的程序按了S2和S14中斷也打開了,謝謝指點,茅塞頓開呀,感覺打開了新天地。非常感謝
回復(fù)

使用道具 舉報

11#
ID:961087 發(fā)表于 2021-9-10 09:30 | 只看該作者
xuyaqi 發(fā)表于 2021-9-9 18:38
中斷占得時間應(yīng)盡量短,你在外中斷里又是for,又是延時是不對的,完全可以在中斷設(shè)置標(biāo)志,在主循環(huán)里做處 ...

#include <REGX52.H>
#define uint  unsigned int
#define uchar  unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar num,num1;
uchar  table1[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d};
uchar  table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar  table3[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
bit flag;

void delayms(uint xms)
{
      uint i,j;
          for(i=xms;i>0;i--)
            for(j=110;j>0;j--);
}

void extern0()interrupt 0
{
        flag=~flag;
}       


void main()
{
          IT0=1;
                EX0=1;
                EA=1;
         while(1)
         {
            for(num=0;num<6;num++)
            {       
                                wela=1;
                          P0=table2[num];
                                wela=0;
                          P0=0xff;

                                P0=0x00;
                          dula=1;
                                P0=table1[num];
                                dula=0;
                                delayms(500);
                         if(flag=~flag)
                        {
                                 for(num1=0;num1<8;num1++)
                                {
                                         P1=table3[num1];
                                         delayms(500);
                                }
                         P1=0xff;       
                               
                        }                               
          
         
                        }         
                       
                }
}
這樣改了一下,我發(fā)現(xiàn)外部中斷不用寫也是同樣的調(diào)試結(jié)果,反而是程序在主程序中順序執(zhí)行了,并沒有用到這個外部中斷。
回復(fù)

使用道具 舉報

12#
ID:961087 發(fā)表于 2021-9-10 09:34 | 只看該作者
wulin 發(fā)表于 2021-9-9 21:59
用杜邦線一端接地另一端觸碰P3.2觸發(fā)外部中斷,同時按下S2、S14也可觸發(fā)外部中斷。數(shù)碼管交替顯示012345和6 ...

想請問一下,怎么不用硬件操作,直接在在主程序中打開外部中斷,自動開啟,下邊這個程序我以為是我自己用到了標(biāo)志位,可是我發(fā)現(xiàn)我在板子上看結(jié)果,發(fā)現(xiàn)我把主程序的外部中斷打開給注釋了,還是一樣的結(jié)果,所以我不知道是不是我自己壓根都沒用到外部中斷。只是程序在主程序中順序執(zhí)行了。大佬解答一下,這個問題困惑好久了。
#include <REGX52.H>
#define uint  unsigned int
#define uchar  unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar num,num1;
uchar  table1[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d};
uchar  table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar  table3[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
bit flag;

void delayms(uint xms)
{
      uint i,j;
          for(i=xms;i>0;i--)
            for(j=110;j>0;j--);
}

void extern0()interrupt 0
{
        flag=~flag;
}       


void main()
{
          IT0=1;
                EX0=1;
                EA=1;
         while(1)
         {
            for(num=0;num<6;num++)
            {       
                                wela=1;
                          P0=table2[num];
                                wela=0;
                          P0=0xff;

                                P0=0x00;
                          dula=1;
                                P0=table1[num];
                                dula=0;
                                delayms(500);
                         if(flag=~flag)
                        {
                                 for(num1=0;num1<8;num1++)
                                {
                                         P1=table3[num1];
                                         delayms(500);
                                }
                         P1=0xff;       
                               
                        }                               
          
         
                        }         
                       
                }
}
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 狠狠色狠狠色综合日日92 | 国产成人精品999在线观看 | www.久久.com | 中文字幕在线观 | h片在线观看免费 | 久国久产久精永久网页 | 在线激情视频 | 中文字幕日韩一区 | 成人欧美一区二区三区在线观看 | av天天爽| 一级日批片 | 久草视频在线播放 | 9久久精品 | 精品国产乱码久久久久久果冻传媒 | 91网站在线观看视频 | 中文字幕免费在线 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 国产精品99久久久久久www | www.日本精品 | www久久久| 伊人免费观看视频 | 国产精品久久久久久久久久免费 | 欧美精品啪啪 | 日韩aⅴ片 | 超碰97免费在线 | 免费激情av | 精品国产乱码久久久久久闺蜜 | 久久国产精品偷 | 午夜天堂精品久久久久 | 精品久久久久久久久久久久久久 | 日韩视频一区二区 | 免费成人高清在线视频 | 日韩精品一区二区三区老鸭窝 | 操射视频 | 欧美精品video | 欧美无乱码久久久免费午夜一区 | 欧洲精品码一区二区三区免费看 | 一区二区三区在线免费 | 日本精品视频一区二区 | 国产日韩一区二区三区 | 视频一区二区三区四区五区 |