|
單片機多級外部中斷控制LED燈移動的仿真原理圖(proteus工程文件可到本帖附件下載):
0.png (31.49 KB, 下載次數: 62)
下載附件
2017-3-29 22:05 上傳
單片機源程序:
- //---------------------------------------------------------------------------------------------------------------
- // 程序名: ZD5-5.c
- // 程序功能:多級外部中斷控制燈移動
- //---------------------------------------------------------------------------------------------------------------
- #include<reg51.h> // 頭文件
- char sum =0; // 聲明sum為字符變量并賦初始值0
- delay (); // 延時函數
- // ----------------------------------------------- 主函數 --------------------------------------------------
- void main()
- {
- EA=1; // 允許總中斷
- EX0=1; // 允許外部中斷0中斷
- EX1=1; // 允許外部中斷1中斷
- PX1=1; // 外部中斷1高優先級
-
- while(1) // 無限循環
- {
- delay ();
- P1=0xff;
- delay ();
- P1=0x00;
- }
- }
- // -------------------------------------------- INT0 中斷函數 ----------------------------------------------
- void EX_INT0() interrupt 0
- {
- while(sum<15) // 循環15次
- {
- delay (); // 調用延時函數
- P1=0x0f; // P1輸出0x0f
- delay (); // 調用延時函數
- P1=0xf0; // P1輸出0xf0
- sum ++; // sum 加1
- }
- sum=0; // sum 清零,以便重新計數
- }
- // -------------------------------------------- INT1 中斷函數 -----------------------------------------------
- void EX_INT1() interrupt 2
- {
- while(sum<15) // 循環15次
- {
- delay (); // 調用延時函數
- P1=0xc3; // P1輸出0xc3
- delay (); // 調用延時函數
- P1=0x3c; // P1輸出0x3c
- sum ++; // sum 加1
- }
- sum=0; // sum 清零,以便重新計數
- }
- //-------------------------------------------------- 延時函數 -------------------------------------------------
- delay ()
- {
- int a=50000;
- while (a--);
- }
- //---------------------------------------------------------------------------------------------------------------------
復制代碼
0.png (63.31 KB, 下載次數: 58)
下載附件
2017-3-29 22:07 上傳
該系列源碼包含有很多非常經典,代碼風格十分規范,而且注釋詳細的單片機例程,還帶仿真,對于MCU學習特別是初學者是很有幫助的,全部源碼下載(共25個項目):http://www.raoushi.com/bbs/dpj-79328-1.html
本例程下載(含proteus仿真工程文件與源碼):
5-5單片機多級外部中斷控制LED燈移動實驗.rar
(40.01 KB, 下載次數: 31)
2017-3-29 22:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|