欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機INT0中斷子程序 - 單燈左移3圈 實驗 Proteus仿真和源代碼

[復制鏈接]
跳轉到指定樓層
樓主
單片機INT0中斷子程序的仿真原理圖(proteus仿真工程文件可到本帖附件下載):



單片機源代碼:
  1. //==聲明區===================================
  2. #include        <reg51.h>                                                  //        定義8x51特殊功能寄存器
  3. #define        LED        P1                                                //        定義LED接至P 1
  4. void  delay1ms(int);                                                //        聲明延遲函數
  5. void  left(int);                                                        //        聲明單燈左移函數
  6. //==主程序===================================
  7. main()                                                                  //        主程序開始
  8. {        IE=0x81;                                                     //        準許INT 0中斷
  9.         LED=0x00;                                                  //        初值=0000 0000,燈全亮        
  10.         while(1)                                                     //        無窮循環,程序一直跑
  11.         {        delay1ms(250);                                         //        延遲250*1m=0.25s
  12.                 LED=~LED;                                          //        LED反相
  13.         }                                                              //        while循環結束
  14. }                                                                      //        主程序結束
  15. //==子程序===================================
  16. /* INT 0的中斷子程序 - 單燈左移3圈 */
  17. void  my_int0(void)  interrupt  0                        //        INT0 中斷子程序開始
  18. {        unsigned  saveLED=LED;                              //        儲存中斷前LED狀態
  19.         left(3);                                               //        單燈左移3圈
  20.         LED=saveLED;                                            //        寫回中斷前LED狀態
  21. }                                                              //        結束INT0 中斷子程序
  22. /* 延遲函數,延遲約x 1ms */
  23. void  delay1ms(int  x)                                     //        延遲函數開始
  24. {        int  i, j;                                                         //        聲明整數變數i,j
  25.         for (i=0;i<x;i++)                                              //        計數x次,延遲x 1ms
  26.         for (j=0;j<120;j++);                                        //        計數120次,延遲1ms
  27. }                                                                         //        延遲函數結束
  28. /* 單燈左移函數,執行x圈 */
  29. void  left(int x)                                                     //        單燈左移函數開始
  30. {        int  i,  j;                                                            //        聲明變數i,j
  31.         for(i=0;i<x;i++)                                                    //        i循環,執行x圈
  32.         {        LED=0xfe;                                                    //        初始狀態=1111 1110,最右燈亮
  33.                 for(j=0;j<7;j++)                                    //        j循環,左移7次
  34.                 {        delay1ms(250);                          
  35.                         LED=(LED<<1)|0x01;                 //        左移1位後,LSB設為1
  36.                 }                                                    //        j循環結束
  37.                 delay1ms(250);                              
  38.         }                                                           //        i循環結束*/
  39. }                                                               //        單燈左移結束

復制代碼

該系列源碼包含有很多非常經典,代碼風格十分規范,而且注釋詳細的單片機例程,還帶仿真,對于MCU學習特別是初學者是很有幫助的,全部源碼下載(共幾十個項目):http://www.raoushi.com/bbs/dpj-80575-1.html


本例程下載(含proteus仿真工程文件與源碼):
單片機INT0中斷子程序.rar (12.88 KB, 下載次數: 7)

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表