|
單片機兩個外部中斷實驗的仿真原理圖(proteus仿真工程文件可到本帖附件下載):
0.png (25.96 KB, 下載次數: 88)
下載附件
2017-4-5 02:46 上傳
單片機源代碼:
- /* 兩個外部中斷實驗 */
- //==聲明區===================================
- #include <reg51.h> // 定義8x51暫存器之標頭檔,P2-17~19
- #define LED P1 // 定義LED接至Port 1
- void delay1ms(int); // 聲明延遲函數
- void left(int); // 聲明單燈左移函數
- void right(int); // 單燈右移函數開始
- //==主程序===================================
- main() // 主程序開始
- { IE=0x85; // 準許INT 0,INT 1中斷(6-4頁)
- IP=0x01; // 設定INT 0具有最高優先權(6-5頁)
- LED=0x00; // 初值=0000 0000,燈全亮
- while(1) // 無窮循環,程序一直跑
- { delay1ms(250); // 延遲250 1m=0.25s
- LED=~LED; // LED反相
- } // while循環結束
- } // 主程序結束
- //==子程序===================================
- /* INT 0的中斷子程序 - 單燈左移3圈 */
- void my_int0(void) interrupt 0 // INT0 中斷子程序開始
- { unsigned saveLED=LED; // 儲存中斷前LED狀態
- left(3); // 單燈左移3圈
- LED=saveLED; // 寫回中斷前ED狀態
- } // 結束INT0 中斷子程序
- /* INT 1的中斷子程序 - 單燈右移3圈 */
- void my_int1(void) interrupt 2 // INT1 中斷子程序開始
- { unsigned saveLED=LED; // 儲存中斷前LED狀態
- right(3); // 單燈右移3圈
- LED=saveLED; // 寫回中斷前LED狀態
- } // 結束INT1 中斷子程序
- /* 延遲函數,延遲約x 1ms */
- void delay1ms(int x) // 延遲函數開始
- { int i,j; // 聲明整數變數i,j
- for (i=0;i<x;i++) // 計數x次,延遲x 1ms
- for (j=0;j<120;j++); // 計數120次,延遲1ms
- } // 延遲函數結束
- /* 單燈左移函數,執行x圈 */
- void left(int x) // 單燈左移函數開始
- { int i, j; // 聲明變數i,j
- for(i=0;i<x;i++) // i循環,執行x圈
- { LED=0xfe; // 初始狀態=1111 1110,最右燈亮
- for(j=0;j<7;j++) // j循環,左移7次
- { delay1ms(250); // 延遲250 1m=0.25s
- LED=(LED<<1)|0x01; // 左移1位後,LSB設為1
- } // j循環結束
- delay1ms(250); // 延遲250 1m=0.25s
- } // i循環結束*/
- } // 單燈左移函數結束
- /* 單燈右移函數,執行x圈 */
- void right(int x) // 單燈右移函數開始
- { int i, j; // 聲明變數i,j
- for(i=0;i<x;i++) // i循環,執行x圈
- { LED=0x7f; // 初始狀態=0111 1111
- for(j=0;j<7;j++)// j循環,右移7次
- { delay1ms(250); // 延遲250 10m=0.25s
- LED=(LED>>1)|0x80; // 右移1位後,MSB設為1
- } // j循環結束
- delay1ms(250); // 延遲250 1m=0.25s
- } // i循環結束*/
- } // 單燈右移函數結束
復制代碼
該系列源碼包含有很多非常經典,代碼風格十分規范,而且注釋詳細的單片機例程,還帶仿真,對于MCU學習特別是初學者是很有幫助的,全部源碼下載(共幾十個項目):http://www.zg4o1577.cn/bbs/dpj-80575-1.html
0.png (50.86 KB, 下載次數: 104)
下載附件
2017-4-5 02:48 上傳
本例程下載(含proteus仿真工程文件與源碼):
單片機兩個外部中斷實驗 單燈左移右移3圈.rar
(13.12 KB, 下載次數: 17)
2017-4-5 02:47 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|