freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

pic單片機(jī)第10章-資料下載頁(yè)

2024-12-23 12:23本頁(yè)面
  

【正文】 WDT清零,而且將分頻器同時(shí)清零(分頻器配置給 WDT時(shí)),而分頻比和配置關(guān)系不變。 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 86 2. 啟用 WDT后, OPTION_REG的 相關(guān)內(nèi)容 不能改變 。 選項(xiàng)寄存器中的 PSA、 PS2~ PS0用來(lái)確定分頻器的配置和分頻比的。這些是用戶根據(jù)程序事先計(jì)算好并固定使用的參數(shù),這是正確使用 WDT的前提。 如果在程序執(zhí)行中無(wú)意的改變了寄存器中的相關(guān)內(nèi)容,就會(huì)影響到 WDT的超時(shí)溢出時(shí)間(如定時(shí)時(shí)間變短),這樣程序正常時(shí) WDT也會(huì)不斷的產(chǎn)生溢出復(fù)位,破壞了程序的正常運(yùn)行。防止這種現(xiàn)象方法之一是在程序的循環(huán)體中前端刷新 OPTION_REG的相關(guān)內(nèi)容。 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 87 3. WDT一旦被啟用,程序本身無(wú)法修改。 WDT的啟用是通過(guò) “ 系統(tǒng)配置字 ” 中的 WDTE位來(lái)確定的,在燒寫(xiě)程序時(shí)一次性的固化到單片機(jī)中,不可改變。 因此一旦選用 WDT,就要合理計(jì)算 WDT 溢出時(shí)間 ,確定 WDT初值和分頻比。在程序的適當(dāng)位置上放置CLRWDT(喂狗)指令,使程序運(yùn)行時(shí)不斷的清除WDT,這樣才能保證程序正常的運(yùn)行。 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 88 WDT應(yīng)用舉例 通過(guò)一個(gè)實(shí)例,分析一下單片機(jī)內(nèi)部 WDT是如何工作的。 [例 ]霹靂燈 將 RC端口全部設(shè)定為輸出模式,依次從 RC0到 RC7送出高電平,然后再?gòu)?RC7到 RC0送出高電平,并且周而復(fù)始。 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 89 Vdd RC0 /MCLR PIC 16F877 OSC1 RC7 Vss Vdd Vdd 圖 演示板電路圖 D0 D7 軟件設(shè)計(jì)思想: 1. 分頻器歸 WDT使用,且分頻比為 1: 64,即 WDT的溢出周期為: 64*18mS= 2. 在主程序中加入一條“喂狗” CLRWDT指令,因?yàn)槌绦蛞淮窝h(huán)約 195mS(即延時(shí)時(shí)間),所以在選環(huán)體內(nèi)程序執(zhí)行時(shí)間遠(yuǎn)遠(yuǎn)小于 WDT溢出周期。 3. 為了提高程序的抗干擾性,將設(shè)置 RC端口方向的指令放在循環(huán)體內(nèi)。 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 90 圖 主程序流程圖 設(shè)置 RC端口為輸出 先點(diǎn)亮最右面 LED 設(shè)左右移標(biāo)志為 1 開(kāi) 始 C C 修改移位標(biāo)志 分配器歸 WDT 分頻比 1: 64 左 /右移超限? 設(shè)置 RC端口為輸出 調(diào)延時(shí)子程序 CLRWDT 移位標(biāo)志 =1? 循環(huán)左移 循環(huán)右移 N N Y Y 初始化部分 循環(huán)體部分 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 91 status equ 03h portc equ 07h trisc equ 87h option_reg equ 81h flag equ 25h 程序清單 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 92 000h start nop bsf status,5 movlw 00h movwf trisc bcf status,5 movlw 01h movwf portc bsf flag,0 ;右移標(biāo)志 D0位置一 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 93 loop bsf status,5 ;程序初始化 movlw 00h movwf trisc ; RC定義為輸出 movlw 0eh movwf option_reg ;預(yù)分頻器給 WDT、分頻比 1: 64 bcf status,5 ; (參見(jiàn) 206頁(yè)) btfss status,0 ;如果 CY=1, skip goto loop1 ;如果 CY=0 , goto loop1 f flag,1 ;如果 CY=1時(shí) flag取反( =0左移) loop1 btfss flag,1 ;如果 =1(左移)則 skip goto loop2 ;如果 =0(右移)則 goto loop2 rlf portc,0 movwf portc goto loop3 loop2 rrf portc,0 movwf portc loop3 clrwdt ;喂狗信號(hào) call delay goto loop 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 94 delay movlw 0ffh movwf 20h lop movlw 0ffh movwf 21h lop1 decfsz 21h,1 goto lop1 decfsz 20h,1 goto lop return end 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 95 程序清單祥見(jiàn)講義 314頁(yè)(注意,源程序有錯(cuò))。 讀者可以在調(diào)試中,有意將 clrwdt指令屏蔽掉,再觀察程序運(yùn)行的結(jié)果:一輪循環(huán)還沒(méi)有結(jié)束,程序又重新開(kāi)始運(yùn)行,這就是 WDT 超時(shí)溢出強(qiáng)迫單片機(jī)返回上電矢量單元0000H。 同樣,可以將分頻器重新分配給 TMR0,運(yùn)行程序會(huì)出現(xiàn)wdt不斷干擾程序,這是因?yàn)?wdt不用分頻器后,溢出周期為 18mS的緣故。 思考題:在許多彩燈程序中,在 ICD的調(diào)試下正常,而將程序固化后,單獨(dú)運(yùn)行時(shí),顯示結(jié)果與預(yù)想的不同,為什么? 怎樣解決? 返回本章目錄 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 96 睡眠( sleep)與喚醒 ( wakeup) 在許多應(yīng)用項(xiàng)目中,系統(tǒng)電源采用電池供電。在這類產(chǎn)品中,系統(tǒng)大多處于空閑待機(jī)狀態(tài),只有少數(shù)時(shí)間是出于全功能運(yùn)行狀態(tài)。如:移動(dòng)電話、尋呼機(jī)、電子計(jì)數(shù)裝置、電視機(jī)遙控器、公交車(chē)上的 IC卡讀卡器等等。 嵌入在這些系統(tǒng)中的單片機(jī)如果系統(tǒng)進(jìn)入睡眠狀態(tài)時(shí),單片機(jī)的功耗可以大大降低,如 PIC系列可以將電流由 2mA降到 15μA( VDD=3V、 fosc=32K),從而使電池壽命大大的延長(zhǎng)。 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 97 .1 睡眠狀態(tài)的進(jìn)入 只要 CPU執(zhí)行一條 SLEEP指令,就可將單片機(jī)拉進(jìn)睡眠狀態(tài)(也稱睡眠模式)。 如果啟用了 WDT,一旦 CPU進(jìn)入了睡眠狀態(tài),則 WDT和分頻器(如果配給 WDT)都將清零, 但 WDT繼續(xù)工作 。 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 98 為了進(jìn)一步降低電源功耗,在進(jìn)入睡眠狀態(tài)前還要進(jìn)行必要的設(shè)置。如: 1. 單片機(jī)的 I/O端口設(shè)置根據(jù) 實(shí)際接口 設(shè)定為“ 1‖或“ 0‖以防外 部電路涉取電流; 2. 關(guān)閉外圍電路的時(shí)鐘,禁止 ADC等電路的工作; 3. 對(duì)于高阻的 I/O引腳應(yīng)使用上拉成高電平或下拉為低電 平,以防懸空造成感應(yīng)開(kāi)關(guān)電流; 4. /MCLR必須為高電平; 5. 啟用 RB端口的內(nèi)部上拉功能; 6. 將 OSC1與 Vss之間接一個(gè) 10MΩ電阻。 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 99 .2 睡眠狀態(tài)的喚醒 (一) 喚醒方式 (二) 與喚醒相關(guān)的寄存器 (三) 喚醒操作時(shí)序 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 100 1. 在 /MCLR上施加一個(gè)低電平( 手動(dòng)復(fù)位 ); 2. WDT產(chǎn)生 超時(shí)溢出 信號(hào); 3. 利用睡眠狀態(tài)下仍可使用的 中斷請(qǐng)求信號(hào) 喚醒 CPU。 ? 三種喚醒方式,對(duì)程序的運(yùn)行狀態(tài)是影響是不同的: 第一種方式 :?jiǎn)纹瑱C(jī)進(jìn)入復(fù)位狀態(tài),從 0000H運(yùn)行程序; 第二種方式 : 單片機(jī)從 SLEEP后的一條指令恢復(fù)運(yùn)行。 第三種方式 :相應(yīng)的中斷使能位必須先設(shè)定為“ 1‖(而 GIE的狀態(tài)不影響中斷喚醒): GIE=1時(shí) 喚醒后會(huì)轉(zhuǎn)到中斷矢量單元,執(zhí)行中斷服務(wù); GIE=0時(shí) 喚醒后執(zhí)行 SLEEP后續(xù)的指令。 (一) 喚醒方式 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 101 EEIFEEIE PSPIFPSPIE ADIFADIE RCIFRCIE TXIFTXIE SSPIFSSPIE CCPIFCCPIE TMR2IFTMR2IE TMR1IFTMR1IE CCP2IFCCP2IE BCLIFBCLIE T0IFT0IE INTIFINTIE RBIFRBIE PEIE GIE 喚醒 CPU 中斷 CPU當(dāng)前的程序 圖 可作為睡眠喚醒的的中斷邏輯(藍(lán)色部分) 返回上一次 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 102 可以喚醒睡眠狀態(tài)的中斷源 ( 參照 28頁(yè)圖 ): 1. 外部引腳 INT 中斷; 2. 端口 RB4~ 7引起的電平變化中斷 RB; 3. 工作于異步 計(jì)數(shù)方式 下的 TMR1的溢出中斷; 4. 同步串行端口 SSP的起始 /停止位檢測(cè)中斷; 5. 輸入捕捉 /輸出比較 /脈寬調(diào)制 CCP模塊的捕捉方式中斷; 6. 被動(dòng)并行端口的讀 /寫(xiě)中斷 PSP。 一些外圍模塊的中斷不能用來(lái)喚醒睡眠是因?yàn)檫@些模塊或模塊的工作模式需要 系統(tǒng)時(shí)鐘 。所以當(dāng)系統(tǒng)處于睡眠狀態(tài)下(系統(tǒng)時(shí)鐘停振),模塊本身無(wú)法工作,自然中斷就無(wú)法實(shí)現(xiàn)。 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 103 (二)與喚醒相關(guān)的寄存器 與喚醒相關(guān)的寄存器是狀態(tài)寄存器 STATUS。 ① /PD: 降耗標(biāo)志位 。 單片機(jī)上電或執(zhí)行 CLRWDT指令后 /PD=1; 單片機(jī)執(zhí)行 SLEEP指令(進(jìn)入睡眠)后, /PD=0。 ② /TO: 超時(shí)標(biāo)志位。 單片機(jī)上電或執(zhí)行 CLRWDT和 SLEEP指令后 /TO=1; 看門(mén)狗超時(shí)溢出時(shí) /TO=0。 利用 STATUS中的標(biāo)志可以判斷單片機(jī)被復(fù)位的原因。無(wú)論是什么原因單片機(jī)被復(fù)位后, WDT將清零。 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 IRP RP1 RP0 /TO /PD Z DC C 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 104 在燒寫(xiě)程序代碼時(shí),一旦選擇了“ 啟用 WDT‖, WDT將會(huì)無(wú)休止的進(jìn)行計(jì)數(shù)和不斷的溢出。 在這種情況下,單片機(jī)能否使用 SLEEP指令來(lái)降低功耗呢? 進(jìn)入睡眠狀態(tài)時(shí) CPU與 WDT之間又是如何協(xié)調(diào)工作的呢? 啟用 WDT時(shí) SLEEP指令的運(yùn)行特點(diǎn) 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 105 1. 一旦 CPU因執(zhí)行了 SLEEP指令而進(jìn)入休眠狀態(tài),那么WDT的超時(shí)溢出就會(huì)喚醒 CPU。在被喚醒后 CPU應(yīng)當(dāng)首先檢查被喚醒的原因(查詢 STATUS中的 /TO位 =0?)是WDT的溢出、還是外部中斷。 如果僅僅是 WDT的溢出,則令單片機(jī)再次進(jìn)入 SLEEP。 2. 這樣,系統(tǒng)會(huì)出現(xiàn)“睡眠 — 喚醒 — 睡眠 — 喚醒 – ‖的狀態(tài),但是由于被喚醒的時(shí)間只是幾條指令執(zhí)行的時(shí)間(微秒級(jí)),而睡眠時(shí)間是 18mS~ 。相比之下,還是可以達(dá)到降耗的目的。 單片機(jī) 工作電流 SLEEP指令 進(jìn)入睡眠 暫短的喚醒 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 106 開(kāi)啟 WDT時(shí) 利用 SLEEP低功耗運(yùn)行的編程流程 NOP /TO=0? 后續(xù)指令 yes no SLEEP 被 WDT喚醒 進(jìn)入睡眠 LOOP SLEEP NOP BTFSS STATUS,TO GOTO LOOP 2021/11/10 大連理工大學(xué)電工電子實(shí)驗(yàn)中心 陳育斌 107 利用中斷喚醒 SLEEP 利用 SLEEP指令時(shí)系統(tǒng)進(jìn)入低功耗的“ 睡眠狀態(tài) ”,在啟用 WDT狀態(tài)下, WDT也不會(huì)影響系統(tǒng)的“低功耗”工作狀態(tài)的維持(通過(guò)查詢 STATUS中的 /TO位判斷處理); 在低功耗狀態(tài)下,系統(tǒng)可以被一些中斷喚醒(這些中斷源必須是與系統(tǒng)時(shí)鐘無(wú)關(guān)的中斷源);
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1