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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機兩個外部中斷實驗 單燈左移右移3圈 Proteus仿真和源代碼

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



單片機源代碼:
  1. /* 兩個外部中斷實驗 */
  2. //==聲明區===================================
  3. #include        <reg51.h>        //        定義8x51暫存器之標頭檔,P2-17~19
  4. #define        LED        P1                        //        定義LED接至Port 1
  5. void delay1ms(int);                //        聲明延遲函數
  6. void left(int);                        //        聲明單燈左移函數
  7. void right(int);                //        單燈右移函數開始
  8. //==主程序===================================
  9. main()                                        //        主程序開始
  10. {        IE=0x85;                        //        準許INT 0,INT 1中斷(6-4頁)
  11.         IP=0x01;                        //        設定INT 0具有最高優先權(6-5頁)
  12.         LED=0x00;                        //        初值=0000 0000,燈全亮        
  13.         while(1)                        //        無窮循環,程序一直跑
  14.         {        delay1ms(250);        //        延遲250 1m=0.25s
  15.                 LED=~LED;                //        LED反相
  16.         }                                        //        while循環結束
  17. }                                                //        主程序結束
  18. //==子程序===================================
  19. /* INT 0的中斷子程序 - 單燈左移3圈 */
  20. void my_int0(void) interrupt 0        //        INT0 中斷子程序開始
  21. {        unsigned saveLED=LED;        //        儲存中斷前LED狀態
  22.         left(3);                        //        單燈左移3圈
  23.         LED=saveLED;                //        寫回中斷前ED狀態   
  24. }                                                //        結束INT0 中斷子程序
  25. /* INT 1的中斷子程序 - 單燈右移3圈 */
  26. void my_int1(void) interrupt 2        //        INT1 中斷子程序開始
  27. {        unsigned saveLED=LED;        //        儲存中斷前LED狀態
  28.         right(3);                        //        單燈右移3圈
  29.         LED=saveLED;                //        寫回中斷前LED狀態
  30. }                                                //        結束INT1 中斷子程序
  31. /* 延遲函數,延遲約x 1ms */
  32. void delay1ms(int x)        //        延遲函數開始
  33. {        int i,j;                        //        聲明整數變數i,j
  34.         for (i=0;i<x;i++)        //        計數x次,延遲x 1ms
  35.                 for (j=0;j<120;j++);        //        計數120次,延遲1ms
  36. }                                                //        延遲函數結束
  37. /* 單燈左移函數,執行x圈 */
  38. void left(int x)                 //        單燈左移函數開始
  39. {        int i, j;                        //        聲明變數i,j
  40.         for(i=0;i<x;i++)        //        i循環,執行x圈
  41.         {        LED=0xfe;                //        初始狀態=1111 1110,最右燈亮
  42.                 for(j=0;j<7;j++)        //        j循環,左移7次
  43.                 {        delay1ms(250);        //        延遲250 1m=0.25s
  44.                         LED=(LED<<1)|0x01;         //        左移1位後,LSB設為1
  45.                 }                                //        j循環結束
  46.                 delay1ms(250);        //        延遲250 1m=0.25s
  47.         }                                        //        i循環結束*/
  48. }                                                //        單燈左移函數結束
  49. /* 單燈右移函數,執行x圈 */
  50. void right(int x)                 //        單燈右移函數開始
  51. {        int i, j;                        //        聲明變數i,j
  52.         for(i=0;i<x;i++)        //        i循環,執行x圈
  53.         {        LED=0x7f;                //        初始狀態=0111 1111
  54.                 for(j=0;j<7;j++)//        j循環,右移7次
  55.                 {        delay1ms(250);        //        延遲250 10m=0.25s
  56.                         LED=(LED>>1)|0x80;         //        右移1位後,MSB設為1
  57.                 }                                //        j循環結束
  58.                 delay1ms(250);        //        延遲250 1m=0.25s
  59.         }                                        //        i循環結束*/
  60. }                                                //        單燈右移函數結束
復制代碼

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

本例程下載(含proteus仿真工程文件與源碼):
單片機兩個外部中斷實驗 單燈左移右移3圈.rar (13.12 KB, 下載次數: 17)

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品免费在线 | 婷婷久久五月天 | 国产成人久久精品一区二区三区 | 欧美国产日韩在线观看成人 | 福利视频一二区 | 亚洲 成人 av | 99re6在线视频| 亚洲国产成人精品女人久久久野战 | 国产精品久久久久久久久久久久冷 | 欧美日韩成人一区二区 | 欧美日韩视频 | 蜜臀久久 | 亚洲 日本 欧美 中文幕 | www.青青草 | 国产一区二区三区日韩 | 欧美在线国产精品 | 男女视频免费 | 91天堂网 | 国产 日韩 欧美 制服 另类 | 午夜伦4480yy私人影院 | 黄色在线免费观看视频 | 成人午夜激情 | 国产成人精品午夜视频免费 | 一区二区三区在线免费观看 | 一二三四av | 欧美成人精品一区二区男人看 | 99精品国产一区二区青青牛奶 | 亚洲激精日韩激精欧美精品 | 国产精品久久av | 国产午夜在线观看 | 精品网| 欧美激情一区二区三区 | 国产精品久久久久久久免费大片 | av中文字幕在线 | 81精品国产乱码久久久久久 | 天天久久 | 亚洲草草视频 | 国产精品视频中文字幕 | 精品久久久网站 | 色综合久久88色综合天天 | 日韩精品一区二区三区中文在线 |