51单片机中外部中断使用示例(Protues仿真)
生活随笔
收集整理的這篇文章主要介紹了
51单片机中外部中断使用示例(Protues仿真)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
中斷的概念:
CPU在處理某一事件A時,發生了另一事件B請求CPU迅速去處理(中斷發生),那么CPU就會暫停當前的工作(A事件),去執行B事件(中斷響應和中斷服務),然后B事件做完之后,再回到原來的事件(A事件)中繼續工作。(中斷的返回)。
51單片機有5個中斷源分別是:
1、INT0——外部中斷0,由P3.2端口引入,低電平或下降沿引起。默認優先級最高
2、INT1——外部中斷1,由P3.3端口引入,低電平或下降沿引起。默認優先級第二
3、T0——定時器/計數器0中斷,由T0計數器計滿回零引起。默認優先級第三
4、T1——定時器/計數器1中斷,由T1計數器計滿回零引起。默認優先級第四
5、TI/RI——串行口中斷,串行端口完成一幀字符發送/接收后引起。默認中斷優先級最低
今天為大家演示51單片機中外部中斷0的使用示例:
下面是顯示仿真電路,該電路的功能是單片機上電后數碼管從A-G循環點亮,當連接P3^2(INT0)引腳的按鍵按下時,系統檢測到外部中斷請求信號,CPU執行的主程序斷開,跳轉去執行中斷模塊程序,中斷模塊的功能是數碼管閃爍顯示數字‘8’ 八次。然后CPU返回主程序斷點繼續執行A-G的循環點亮。
?
實現代碼:
#include<reg51.h> #include<intrins.h>//左移函數和右移函數包含頭文件 #define uint unsigned int//把unsigned int 重新起名為uint #define uchar unsigned char uchar aa;void delayms(uint xms){//延時函數uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--); } void main(){EA=1;//開啟總中斷EX0=1;//開啟外部中斷0IT0=1;//把外部中斷0設置為下降沿觸發aa=0x01;while(1){P0=aa;//把aa的值賦給P0delayms(1000);//延時1saa=_crol_(aa,1);//把aa的值左移一位在賦給aa} }void ex0_time()interrupt 1//中斷函數 {unsigned char a;P0=0x00;//熄滅數碼管for(a=8;a>0;a--){//使數碼管閃爍顯示數字8(帶小數點)8次P0=0xff;//使數碼管顯示數字8delayms(1000);//延時1sP0=0X00;//熄滅數碼管delayms(1000);//延時1s}}Protues仿真結果部分截圖:
?
?
總結
以上是生活随笔為你收集整理的51单片机中外部中断使用示例(Protues仿真)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Visual C++】游戏开发笔记十九
- 下一篇: 2017年,这两个大数据岗位一定会火!