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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3459|回復: 5
打印 上一主題 下一主題
收起左側

51單片機外部中斷0和1控制流水燈的狀態保存和進行

[復制鏈接]
回帖獎勵 5 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:900875 發表于 2022-5-5 22:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  想法是使用兩個外部中斷嵌套,外部中斷0使流水燈先向左滾動,當外部中斷1觸發的時候儲存此時流水燈的狀態,然后外部中斷1向右滾動。
  但是對于狀態的保存有些迷茫,在外部中斷0保存的狀態不能被外部中斷1讀取。

單片機源程序如下:
#include "reg52.h"               
#include <intrins.h>        
#define led P1

typedef unsigned int u16;        
typedef unsigned char u8;

void delayms(u8 ms)
  {
     u8 i;
     while(ms--)
     for(i=0;i<123;i++);
  }
        
void Int()
{            
  PX1 = 1;                                                     
}



void Int0() interrupt 0
{
         u16 i;
         u8 saveled;
          led=0xfe;
                for(i=0;i<16;i++)
        {        

                delayms(100);
                led=_cror_(led,1);
                saveled=led;
        }
        
}

void Int1()        interrupt 2               
{  
          u16 i;
          u8 saveled;
          led=saveled;
          for(i=0;i<16;i++)
          {
                 delayms(200);
           led=_crol_(led,1);
          }   
}

void main()
{
Int();        
Int0Init();
Int1Init();
while(1)
{
         led=0x00;
         delayms(200);
         led=~led;
         delayms(200);
}
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:99525 發表于 2022-5-6 01:32 | 只看該作者
saveled在主程序里定義
回復

使用道具 舉報

板凳
ID:213173 發表于 2022-5-6 08:51 | 只看該作者
1.這個程序只能完成LED閃爍,不能左右流水,因為外部中斷0、1都沒有開啟。
2.這種外部中斷用法也不是嵌套。
3.LED當前狀態無需另外保存,P1本身就是存儲器。
4.Int0Init();Int1Init();缺少函數體。
5.中斷優先等級設置在此無意義。
  1. #include "reg52.h"               
  2. #include <intrins.h>        
  3. #define led P1

  4. typedef unsigned int u16;        
  5. typedef unsigned char u8;

  6. u8 t=0;

  7. void delayms(u8 ms)
  8. {
  9.         u8 i;
  10.         while(ms--)
  11.         for(i=0;i<123;i++);
  12. }

  13. void main()
  14. {
  15.         IT0 = 1;
  16.         EX0 = 1;
  17.         IT1 = 1;
  18.         EX1 = 1;
  19.         EA = 1;
  20.         while(1)
  21.         {
  22.                 if(t==0)
  23.                         led=~led;
  24.                 if(t==1)
  25.                         led=_cror_(led,1);
  26.                 if(t==2)
  27.                         led=_crol_(led,1);
  28.                 delayms(200);
  29.         }
  30. }
  31. void Int0() interrupt 0
  32. {
  33.         if(led==0x00||led==0xff)
  34.                 led=0xfe;
  35.         t=1;
  36. }

  37. void Int1() interrupt 2               
  38. {  
  39.         if(led==0x00||led==0xff)
  40.                 led=0xfe;
  41.         t=2;   
  42. }
復制代碼
回復

使用道具 舉報

地板
ID:525068 發表于 2022-5-6 16:51 | 只看該作者
看樣子好像只調用了中斷程序,但是沒有開啟中斷
回復

使用道具 舉報

5#
ID:900875 發表于 2022-5-7 00:04 | 只看該作者
wulin 發表于 2022-5-6 08:51
1.這個程序只能完成LED閃爍,不能左右流水,因為外部中斷0、1都沒有開啟。
2.這種外部中斷用法也不是嵌套 ...

理解了! 謝謝
回復

使用道具 舉報

6#
ID:1040201 發表于 2022-8-17 10:34 | 只看該作者
要多看看寄存器的手冊。要復用成別的外設,要自己設置,EX0  外部中斷0的使能  ,IT0 外部中斷0的觸發方式
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产蜜臀97一区二区三区 | 在线国产小视频 | 精品欧美一区二区三区久久久小说 | 超碰91在线 | 国产一区二区在线视频 | 午夜精品一区二区三区免费视频 | 欧美黑人体内she精在线观看 | 亚洲成人蜜桃 | 亚洲成人精品 | 日韩不卡视频在线 | 国产观看 | 欧美中文字幕一区二区三区亚洲 | 国产一级片在线观看视频 | 国产有码 | 三区在线观看 | 波多野结衣中文字幕一区二区三区 | 成人在线视 | 一区二区免费在线观看 | 欧美黄色片 | 国产成人精品一区二 | 午夜电影一区二区 | 日韩人体视频 | 成人性视频免费网站 | 91视频一区二区 | 久久久久国产精品免费免费搜索 | 日日噜噜噜夜夜爽爽狠狠视频, | 欧美日韩久久精品 | 爱高潮www亚洲精品 中文字幕免费视频 | 成人免费福利视频 | 免费一区| 精品亚洲一区二区三区四区五区高 | 欧美a区 | 日本免费黄色一级片 | 九九九久久国产免费 | 欧美一区二区三区 | 草草视频在线观看 | 国产高清一区二区三区 | www.狠狠操 | 在线观看精品 | 成人av高清 | 精品国产乱码久久久久久牛牛 |