pic單片機(jī)高手過招,pic單片機(jī)復(fù)位系統(tǒng)模塊+pic單片機(jī)中斷模塊介紹
pic單片機(jī)在生活中存在諸多應(yīng)用,這是大多朋友學(xué)習(xí)pic單片機(jī)的主要原因之一。對于pic單片機(jī),小編曾帶來大量介紹。而本文中,將為大家介紹pic單片兩大方面內(nèi)容:pic單片機(jī)復(fù)位系統(tǒng)模塊+pic單片機(jī)中斷模塊。如果你對這部分內(nèi)容存在疑惑,不妨繼續(xù)往下一探究竟哦。
一、PIC單片機(jī)復(fù)位系統(tǒng)模塊介紹
PIC16F87X系列單片機(jī)的復(fù)位功能設(shè)計得比較完善,根據(jù)引起單片機(jī)內(nèi)部復(fù)位的條件和原因,可以將PIC單片機(jī)復(fù)位系統(tǒng)分為五個模塊進(jìn)行介紹:
1.上電復(fù)位
每次單片機(jī)加電時,上電復(fù)位電路都要對電源電壓VDD的上升過程進(jìn)行檢測,當(dāng)VDD值上升到規(guī)定值1.6~1.8V時,就產(chǎn)生一個有效的復(fù)位信號,需經(jīng)過72ms加1024個時鐘周期的延時,才會使單片機(jī)復(fù)位。
2.人工復(fù)位(單片機(jī)在執(zhí)行程序期間)
無論是單片機(jī)在按預(yù)先設(shè)定的正常順序運(yùn)行程序,還是出現(xiàn)單片機(jī)進(jìn)入不可預(yù)知的某一個死循環(huán),都必須認(rèn)為單片機(jī)在執(zhí)行程序。單片機(jī)在執(zhí)行程序期間,只要在人工復(fù)位端MCLR加入一個低電平信號,就會令其復(fù)位。
3.人工復(fù)位(單片機(jī)在睡眠期間)
單片機(jī)處在睡眠狀態(tài)之下(時鐘停振,單片機(jī)停止執(zhí)行程序),只要在人工復(fù)位端MCLR加入一個低電平信號,就會令其復(fù)位。
4.看門狗復(fù)位
不論何種原因,只要沒有對看門狗定時器WDT周期性清0,WDT就會出現(xiàn)超時溢出,也就會引發(fā)單片機(jī)復(fù)位。依據(jù)單片機(jī)在看門狗超時溢出之前所處的狀態(tài)是睡眠還是執(zhí)行程序,又可以將看門狗超時溢出分為兩種情況。
一種情況只有在單片機(jī)執(zhí)行程序期間,看門狗發(fā)生超時溢出,才會引發(fā)單片機(jī)的復(fù)位;而另一種情況對于PIC16F87X單片機(jī)而言則不會引發(fā)單片機(jī)的復(fù)位。
5.電源欠壓復(fù)位
在上電延時之后,該電路再提供1024個時鐘周期的延遲,目的是讓振蕩電路有足夠的時間產(chǎn)生穩(wěn)定的時鐘信號。
注:為了滿足上述人工復(fù)位的需要,通常單片機(jī)都設(shè)置一個外接復(fù)位引腳,來接收外部輸入的人工復(fù)位信號。
二、PIC單片機(jī)中斷模塊介紹
PIC16F87X系列單片機(jī)可以接收多達(dá)14個中斷源。中斷控制器寄存器INTCON標(biāo)記著各個中斷源的請求,對各個中斷設(shè)置屏蔽位,對全部中斷設(shè)置全局屏蔽位。
PIC16F87X系列的中斷包含:TMR0溢出中斷(TOIF)、外部中斷(INTF)、端口B變化中斷(RBIF)、并行從動端口中斷(PSPIF)、A/D變換中斷、USART異步接收中斷(RCIF)和異步發(fā)送中斷(TXIF)、同步串行端口中斷(SSPIF)、CCP1中斷(CCPIIF)、TMR2中斷(TMR2IF)、TMR1中斷、CCP1中斷(CCP2)、E2PROM寫中斷(EEIF)、總線碰撞中斷(BCLIF)。
各個中斷采用查詢方式進(jìn)行,即當(dāng)CPU口向應(yīng)中斷時,事先要通過查詢中斷標(biāo)志位去判斷是哪個中斷產(chǎn)生中斷請求,然后執(zhí)行相應(yīng)的中斷服務(wù)程序。
RB0/INT外中斷仍遵守PIC16F87X單片機(jī)的中斷原則,當(dāng)有中斷時產(chǎn)生中斷標(biāo)志位,由CPU查詢識別中斷。根據(jù)這一原則,可以擴(kuò)展多個外中斷源,CPU響應(yīng)中斷后查詢中斷標(biāo)志位識別中斷。
RB0/INT引腳上的外部中斷由邊沿觸發(fā),既可以是上升沿,也可以是下降沿,這由選擇寄存器OPTION_REG的INTEDG位(D6)決定。當(dāng)INTEDG=1時,選擇上升沿觸發(fā);當(dāng)INTEDG=0時,選擇下降沿觸發(fā)。一旦檢測到引腳上出現(xiàn)有效邊沿,就把INTF位(INTCON的D1)置1。這個中斷由中斷控制位INTE設(shè)置允許或禁止。
為了防止錯誤的死循環(huán)執(zhí)行同一個中斷,在重新開放這個中斷之前必須在中斷服務(wù)程序中用軟件對INTF位清0。如果INTE位在進(jìn)入休眠狀態(tài)之前已被置1,INT中斷可以喚醒在休眠狀態(tài)下的CPU。GIE位的狀態(tài)決定處理器是否在被喚醒后轉(zhuǎn)至中斷矢量。
當(dāng)定時器TIMER0的計數(shù)器TMR0計滿溢出(即由FFH變成00H)時,硬件將自動把TGIF位置1。其中斷可以通過對TOIE位進(jìn)行設(shè)置來控制該中斷是否開放。
當(dāng)CPU響應(yīng)RB7、RB4中斷時,就有兩種情況產(chǎn)生:第一種稱為“短脈沖”,即在CPU響應(yīng)中斷期間引腳電平恢復(fù)到原始狀態(tài),對這種情況CPU不會產(chǎn)生虛假中斷現(xiàn)象。第二種稱為“寬脈沖”,即在CPU響應(yīng)中斷后引腳電平才恢復(fù)到原始狀態(tài),恢復(fù)到原始狀態(tài)的過程也產(chǎn)生中斷請求,這種情況就是虛假中斷現(xiàn)象。
在端口B的D7~D4引腳上一旦有電平變化就把RBIF位置1,這個中斷可以通過對RBIE位進(jìn)行設(shè)置來控制該中斷是否開放。
以上便是小編此次帶來的“pic單片機(jī)”的所有相關(guān)內(nèi)容,小編希望本文內(nèi)容對大家有所幫助。最后,十分感謝大家的閱讀。