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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

實(shí)現(xiàn)單片機(jī)程序的暫停和執(zhí)行的兩種方法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:408519 發(fā)表于 2019-5-17 18:44 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
兩種方法實(shí)現(xiàn)程序的暫停和啟動(dòng),我的外部中斷0已經(jīng)被別的功能占用了,所以只能用外部中斷1了
函數(shù)功能:程序無論執(zhí)行到哪里按下暫停鍵,程序暫停;再按下啟動(dòng)鍵程序接著暫停的地方執(zhí)行。以流水燈為例
CPU:STC89C52單片機(jī)
方法一:最常規(guī)方法用外部中斷1
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. void delayms(unsigned int);
  4. unsigned char led;
  5. //key1=P3^3;//外部中斷1,也就是暫停鍵;
  6. sbit key2=P3^4;//啟動(dòng)鍵
  7. bit flag=1;

  8. void main(){
  9.         EA=1;//開總中斷
  10.         EX1=1;//打開外部中斷1
  11.         IT1=1;//外部中斷1為跳邊沿觸發(fā)
  12.         led=0xfe;
  13.     while (1){
  14.                 P1=led;
  15.             delayms(1000);
  16.             led=_crol_(led,1);
  17.     }
  18. }

  19. //暫停部分
  20. void INT_1() interrupt 2{
  21.         while(flag){
  22.                 if(key2==0){
  23.                         delayms(10);
  24.                         if(key2==0){
  25.                                 flag=0;//如果key2鍵按下,跳出中斷里面的死循環(huán)
  26.                         while(!key2);
  27.                 }
  28.         }
  29.         }
  30.         flag=1;
  31. }

  32. void delayms(unsigned int xms){
  33.         unsigned int i,j;
  34.         for(i=xms;i>0;i--)                                 for(j=110;j>0;j--);
  35. }
復(fù)制代碼
方法2:用單片機(jī)的空閑模式實(shí)現(xiàn)上面的功能
  1. #include <reg52.h>
  2. #include <RTX51TNY.h>
  3. #include <intrins.h>

  4. sbit key1=P2^0;//該按鍵進(jìn)入掉電模式

  5. void delayms(unsigned int);
  6. unsigned char led;

  7. //首先從任務(wù)0開始執(zhí)行
  8. void job0 (void) _task_ 0 {

  9. //        EA=1;//開總中斷
  10.         EX1=1;//打開外部中斷1
  11.         IT1=1;//外部中斷1為跳邊沿觸發(fā)
  12.         led=0xfe;
  13. //        os_wait (K_TMO, 20, 0);  //用于將一個(gè)任務(wù)設(shè)置為等待態(tài)  
  14.         os_create_task (1);//建立任務(wù)1、2
  15.         os_create_task (2);     
  16.         os_delete_task (0);//將一個(gè)已經(jīng)啟動(dòng)的任務(wù)設(shè)置為刪除態(tài),停止運(yùn)行的任務(wù)
  17. }

  18. //任務(wù)1,掃描鍵盤
  19. void keyscan(void) _task_ 1{
  20.    while (1){                       
  21.               if(key1==0){
  22.                 delayms(10);
  23.                 if(key1==0){
  24.                         PCON=0x02;//如果key1按下,則cpu進(jìn)入掉電模式
  25.                         while(!key1);
  26.                         }               
  27.                 }
  28. //    os_wait (K_TMO, 20, 0);   //延時(shí)等待20個(gè)周期,主動(dòng)讓出CPU         
  29.    }
  30. }

  31. //任務(wù)2 LED流水燈
  32. void LEDliu(void) _task_ 2{   
  33.    while (1){
  34.                 P1=led;
  35.             delayms(2000);
  36.             led=_crol_(led,1);
  37. //                os_wait (K_TMO, 20, 0);           
  38.    }
  39. }

  40. //外部中斷1控制喚醒CPU
  41. void INT_1() interrupt 2{
  42.         PCON=0;//喚醒單片機(jī)
  43. }

  44. void delayms(unsigned int xms){
  45.         unsigned int i,j;
  46.         for(i=xms;i>0;i--)                      //i=xms即延時(shí)約xms毫秒
  47.                 for(j=110;j>0;j--);
  48. }
復(fù)制代碼
當(dāng)然還有其他的方法了,大家可以自己試一試

評分

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

查看全部評分

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品a免费一区久久电影 | 国产特一级黄色片 | 久久精品一区二 | 九九热最新地址 | 亚洲精品九九 | 午夜精品视频在线观看 | 亚洲国产中文字幕 | 日韩一区二区在线观看 | 在线一区二区三区 | 午夜寂寞影院在线观看 | 久久国产精品免费 | 特黄毛片 | 日韩欧美精品 | 日韩久草 | 91视视频在线观看入口直接观看 | 欧美亚洲国产日韩 | 午夜精品一区二区三区在线观看 | 黄色大片在线视频 | 亚洲超碰在线观看 | 日韩视频精品 | 欧美一级全黄 | 精品国产乱码久久久久久蜜柚 | 国产福利视频 | 亚洲成人免费在线 | 成人午夜精品 | 亚洲免费在线播放 | 久久精品国产精品青草 | 在线视频一区二区 | 久草福利 | 国产精品久久亚洲 | 久久天堂 | www.成人在线视频 | 久久九九99 | 亚洲高清一区二区三区 | 亚洲一区二区三区四区五区午夜 | av毛片免费 | 99久久中文字幕三级久久日本 | av网站在线免费观看 | 免费看国产片在线观看 | 亚洲国产精品一区二区第一页 | 国产精品视频 |