按鍵程序 PORT中斷程序
備注1:
按鍵也為機(jī)械接觸開關(guān),正常情況下,按一次按鍵,在按下瞬間,可能會(huì)有很多毛刺出現(xiàn),就會(huì)有很多低平出現(xiàn),所以要延時(shí)確認(rèn),即使沒有這種情況,也要做延時(shí)處理,這樣做是去干擾!正常情況下一個(gè)干擾脈沖也不可能會(huì)長達(dá)10-20MS.所以去干擾去抖動(dòng)還是很有必要的。而這點(diǎn)時(shí)間對一個(gè)按鍵按下并不影響效果!
相關(guān)資料:
(1)PxDIR:輸入/輸出方向寄存器。 8位相互獨(dú)立,可以分別定義8個(gè)引腳的輸入/輸出方向。8位再PUC后都被復(fù)位。使用輸入/輸出功能時(shí),應(yīng)該先定義端口的方向。作為輸入時(shí)只能讀,作為輸出時(shí),可讀可寫。0:輸入模式;1:輸出模式。如:P1DIR|=BIT4;
(2)PXIN:輸入寄存器,為只讀寄存器。用戶不能對它進(jìn)行寫入,只能通過讀取其寄存器的內(nèi)容來知道I/O口的輸入信號(hào)。所以其引腳的方向要選為輸入。如再鍵盤鍵盤掃描程序中經(jīng)常要讀取行線或者列線的端口寄存器值來判斷案件情況。例如:unsigned char key;
P1DIR&=~BIT4;
……
key=P1IN&0X10;
……
(3)PXOUT:輸出寄存器。該寄存器為I/O端口的輸出緩沖寄存器,再讀取時(shí)輸出緩存的內(nèi)容與引腳方向定義無關(guān)。改變方向寄存器的內(nèi)容,輸出緩存的內(nèi)容不受影響。如:PIOUT|=0X01;
(4)PXIFG:中斷標(biāo)志寄存器。他的8個(gè)標(biāo)志位標(biāo)志相應(yīng)引腳是否有中斷請求有待處理。0:無中斷請求, 1:有中斷請求。其中斷標(biāo)志分別為PXIFG.0~PXIFG.7。應(yīng)該注意的是:PXIFG.0~PXIFG.7共用一個(gè)中斷向量,為多源中斷。當(dāng)任一事件引起的中斷進(jìn)行處理時(shí),PXIFG.0~PXIFG.7不會(huì)自動(dòng)復(fù)位,必須由軟件來判斷是對哪一個(gè)事件,并將相應(yīng)的標(biāo)志復(fù)位。另外,外部中斷事件的時(shí)間必須保持不低于1.5倍的MCLK時(shí)間,以保證中斷請求被接受,且使相應(yīng)中斷標(biāo)志位置位。
(5)PXIES:中斷觸發(fā)沿選擇寄存器。如果允許PX口的某個(gè)引腳中斷,還需定義該引腳的中斷觸發(fā)方式。0:上升沿觸發(fā)使相應(yīng)標(biāo)志置位,1:下降沿觸發(fā)相應(yīng)標(biāo)志置位。如:MOV.B #07H, &P1IES ;p1低3位下降沿觸發(fā)中斷。
(6)PXIE:中斷使能寄存器。PX口的每一個(gè)引腳都有一位用以控制該引腳是否允許中斷。0:禁止中斷,1:允許中斷。MOV.B #0E0H, &P2IE ;P2高3位允許中斷。
(7)PXSEL:功能選擇寄存器。P1,P2兩端口還具有其他片內(nèi)外設(shè)功能,將這些功能與芯片外的聯(lián)系通過復(fù)用P1,P2引腳的方式來實(shí)現(xiàn)。PXSEL用來選擇引腳的I/O端口功能與外圍模塊功能。0:選擇引腳為I/O端口,1:選擇引腳為外圍模塊功能。如:P1SEL|=0X10; //P1.4為外圍模塊功能。
評論