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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3057|回復: 5
收起左側

STC15w408as單片機開機進入停機模式,設置兩個外部中斷喚醒,為什么外部中斷0可以喚醒

[復制鏈接]
ID:921325 發表于 2021-8-1 19:59 | 顯示全部樓層 |閱讀模式
5黑幣
單片機源程序如下:

#include "reg51.h"   
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;

sbit k1=P3^2;
sbit k2=P3^3;         
sbit led1=P1^4;        
sbit led2=P1^3;
bit ledflag1,ledflag2;
void delay(u16 i)
{
        while (i--);
}
void keyscan()
{
    if(k1==0)
        {
            delay(1000);
                if(k1==0)
                {
                    ledflag1=~ledflag1;
                }
                while(!k1);
        }
        if(k2==0)
        {
            delay(1000);
                if(k2==0)
                {
                        ledflag2=~ledflag2;
                }
                while(!k2);
        }
}
void main()
{
        EA=1;
        while(1)
        {
           if(ledflag1==0&&ledflag2==0)
           {
               IT1=1;                                                         //外部中斷0觸發控制位,IT0=1下降沿觸發
           EX1=1;
               IT0=1;                                                         //外部中斷0觸發控制位,IT0=1下降沿觸發
           EX0=1;                                                                 //外部中斷0中斷允許位                           
           PCON|=0x02;
               _nop_();
               _nop_();
               _nop_();
               _nop_();  
           }
           keyscan();
           if(ledflag1==1)
           {
               led1=0;
           }
           else
           {
               led1=1;
           }
           if(ledflag2==1)
           {
               led2=0;
           }
           else
           {
               led2=1;
           }
        }
}
void Int0()           interrupt 0
{
          IT0=1;                                                         //外部中斷0觸發控制位,IT0=1下降沿觸發
      EX0=0;
          IT1=1;                                                         //外部中斷0觸發控制位,IT0=1下降沿觸發
      EX1=0;
          if(k1 == 0)
          {
                    delay(1000);
                  if(k1==0)
                  {
                            ledflag1=1;
                  }
                  while(!k1);
          }
}
void Int1()           interrupt 2
{
          IT0=1;                                                         //外部中斷0觸發控制位,IT0=1下降沿觸發
      EX0=0;
          IT1=1;                                                         //外部中斷0觸發控制位,IT0=1下降沿觸發
      EX1=0;
          if(k2 == 0)
          {
              delay(1000);
                  if(k2==0)
                  {
                            ledflag2=1;
                  }
                  while(!k2);
          }
}

最佳答案

查看完整內容

1,不要在中斷函數里面更改中斷選項,也不要在中斷0的中斷函數關閉中斷1,這樣你按一了下中斷0之后,兩個中斷就都關閉了 2,退出中斷之前,最好先清除中斷標志位.就是IE0和IE1
回復

使用道具 舉報

ID:401564 發表于 2021-8-1 19:59 | 顯示全部樓層
1,不要在中斷函數里面更改中斷選項,也不要在中斷0的中斷函數關閉中斷1,這樣你按一了下中斷0之后,兩個中斷就都關閉了
2,退出中斷之前,最好先清除中斷標志位.就是IE0和IE1
回復

使用道具 舉報

ID:584814 發表于 2021-8-2 08:45 | 顯示全部樓層
為什么外部中斷0可以喚醒可以向廠家索要底層電路圖或代碼,一般觀眾只依照說明書用。
另外,中斷里面應慎用延時
回復

使用道具 舉報

ID:921325 發表于 2021-8-2 09:51 | 顯示全部樓層
man1234567 發表于 2021-8-2 08:45
為什么外部中斷0可以喚醒可以向廠家索要底層電路圖或代碼,一般觀眾只依照說明書用。
另外,中斷里面應慎 ...

怪我的問題沒說清楚,我的問題是為什么外部中斷0可以喚醒,而外部中斷1不行
回復

使用道具 舉報

ID:451718 發表于 2021-8-2 14:55 | 顯示全部樓層
中斷0的優先級應該是高于中斷1的。你進入中斷0后,不是關掉中斷了么? 如何再進中斷1?
回復

使用道具 舉報

ID:921325 發表于 2021-8-2 20:52 | 顯示全部樓層
Y_G_G 發表于 2021-8-2 14:36
1,不要在中斷函數里面更改中斷選項,也不要在中斷0的中斷函數關閉中斷1,這樣你按一了下中斷0之后,兩個中斷就 ...

按照您的建議改了一下,目前可以了,謝謝!!!!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久一区 | 久草视频观看 | 91免费在线看 | 99视频在线 | 国产aaaaav久久久一区二区 | 亚洲成人高清 | 国产资源在线播放 | 精品国产一区二区三区性色 | 久色激情 | 成人免费视频网址 | 亚洲一区二区综合 | 亚洲成人精品免费 | 在线欧美小视频 | 成人免费视频在线观看 | 日本一二三区电影 | 九色视频网站 | 韩国理论电影在线 | 二区成人 | 欧美久久一区 | 亚洲高清一区二区三区 | 91看片在线 | 精品久久久久一区 | 91动漫在线观看 | 亚洲一区二区网站 | 久久久久国产精品免费免费搜索 | 一区二区三区视频免费观看 | 一区二区三区高清 | 男女一区二区三区 | 欧美福利三区 | 欧美在线一区二区三区 | 99久久婷婷国产综合精品电影 | 天天干天天干 | 97免费视频在线观看 | 国产福利视频在线观看 | 久久精品这里精品 | 亚洲一区二区在线播放 | av福利网站| 久久久国产精品 | 超碰成人免费 | 国产99热在线 | 亚洲精品一区二区三区四区高清 |