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