日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单片机实验:外部中断按键

發(fā)布時間:2025/3/12 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机实验:外部中断按键 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這是之前寫的,一直沒發(fā)。

實驗內容:

實驗大致上就是說:按鍵不按的時候,燈一直亮,按鍵按下的時候,燈不亮,報警器響。現(xiàn)在給了匯編語言,要改成c語言,并在proteus里面仿真。

思考與總結:

響應中斷請求的條件:
1.總中斷允許開關EA=1。
2.中斷源的中斷允許位為1。
3.中斷源發(fā)出中斷請求。
4.無同級或更高級中斷正在被服務。

結合實驗,就知道,這里跑到中斷子程序的條件,首先總開關打開。然后選擇中斷請求源,對這個實驗來說,也就是選擇INT0 ̄\overline{INT0}INT0外部中斷請求0,它的中斷允許控制位是EX0EX0EX0,我們置1后,就說明允許了外部中斷0中斷。
我們如果選用跳沿觸發(fā),一個機器周期采樣到外部中斷輸入為高,下一個為低,那么中斷請求觸發(fā)器置一,這個時候進入中斷子程序。
這個實驗是電平觸發(fā)。
cpu查詢到中斷請求時,就會進行中斷響應(這里假設只是單一中斷,如果有不同優(yōu)先級的中斷,那么cpu還要進行判斷)。硬件生成一個長調用指令并執(zhí)行,程序轉向中斷入口地址,兩個中斷入口相隔8字節(jié),難以放下中斷子程序,此時需要一個跳轉指令,轉向在其他地址下的子程序中。

實驗結果:

匯編語言實現(xiàn):

ORG 0000hLJMP MAIN//主程序ORG 0003hLJMP INT0s//中斷入口ORG 0100h MAIN: CLR IT0//外部中斷請求0為電平觸發(fā)SETB EA//總中斷允許SETB EX0 //允許外部中斷0 LOOP: CLR P0.0//p0.0是低電平,此時燈亮SETB P2.3//p2.3是高電平,此時警報不響SJMP LOOP//短轉移指令,程序跳到loop函數(shù)循環(huán)ORG 0200h//偽指令 INT0s: SETB P0.0 //p0.0是高電平,此時燈滅CLR P2.3 //p2.3是低電平,此時警報響 Delay: MOV R0,#200//延時函數(shù) D1: MOV R1,#254 D2: DJNZ R1,D2DJNZ R0,D1RETIEND

改成c51語言:

#include<reg51.h> #define uchar unsigned char sbit key = P3^2; void delay(unsigned int i)//延時函數(shù) {unsigned int j;for(;i>0;i--)for(j=0;j<333;j++){} } void main()//主函數(shù) {EA=1;//總中斷允許EX0=1;//允許外部中斷0IT0=0;//選擇外部中斷0為電平觸發(fā)方式while(1)//循環(huán){P0=0xfe;}//P0.0口的Led亮 } void key_scan() interrupt 0 //外部中斷0的中斷服務函數(shù) {if(key==0)//判斷是否有按鍵按下{delay(10);//延時去抖if(key==0){P2=0xf7;P0=0xff;while(!key);//等待按鍵松開P2=0xff;P0=0xfe;}} }

proteus仿真:

總結

以上是生活随笔為你收集整理的单片机实验:外部中断按键的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。