版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGEXX科技大學(xué)Freescale單片機(jī)原理與設(shè)計(jì)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)項(xiàng)目TPM編程應(yīng)用【實(shí)驗(yàn)?zāi)康摹?、理解HCS08的定時(shí)器/PWM模塊TPM(Timer/Pulse-WidthModulator)模塊原理2、學(xué)會(huì)TPM模塊設(shè)計(jì)3、進(jìn)一步認(rèn)識(shí)“對(duì)MCU外部管腳/內(nèi)部模塊的控制正是通過(guò)Regs的控制來(lái)實(shí)現(xiàn)”【實(shí)驗(yàn)原理】MC9S08AW60系列中的定時(shí)器系統(tǒng)包括兩個(gè)獨(dú)立的TPM:一個(gè)6通道的TPM1和一個(gè)2通道的TPM2。TPM模塊管腳和I/O管腳復(fù)用。定時(shí)器系統(tǒng)總共8個(gè)通道,每一個(gè)通道都可作為輸入捕捉、輸出比較、或帶緩沖的邊緣對(duì)齊PWM。每一個(gè)TPM的所有通道都可以配置成為帶緩沖的中心對(duì)齊脈寬調(diào)制CPWM(buffered,center-alignedpulse-widthmodulation)。每一個(gè)TPM預(yù)分頻器的時(shí)鐘源都可以獨(dú)立選擇總線時(shí)鐘、固定系統(tǒng)時(shí)鐘或外部管腳對(duì)每個(gè)TPM,每個(gè)通道一個(gè)中斷,還有一個(gè)計(jì)數(shù)中止中斷。定時(shí)器系統(tǒng)的內(nèi)部結(jié)構(gòu)為:兩個(gè)獨(dú)立的TPM每個(gè)TPM都由1個(gè)16位的計(jì)數(shù)器與n(n=6or2)個(gè)輸入/輸出通道組成;每一個(gè)通道都可作為輸入捕捉、輸出比較、或帶緩沖的邊緣對(duì)齊PWM。TPM模塊自由計(jì)數(shù)定時(shí)核心是一個(gè)16位的計(jì)數(shù)器。三種時(shí)鐘源之一經(jīng)過(guò)分頻之后的脈沖即作為定時(shí)器的計(jì)數(shù)脈沖;每過(guò)一個(gè)計(jì)數(shù)脈沖,Counter便自動(dòng)+1,Counter加到FFFF后翻轉(zhuǎn)到$0000,同時(shí)置溢出標(biāo)志位TOF為1,然后重新開(kāi)始計(jì)數(shù);溢出時(shí)若TOIE為1,還會(huì)產(chǎn)生中斷請(qǐng)求。Fbus和分頻比的不同可以產(chǎn)生不同的溢出時(shí)間間隔;但是這種自由計(jì)數(shù)定時(shí)方式定時(shí)有限。只讀的16位TPM計(jì)數(shù)寄存器由兩個(gè)字節(jié)寄存器TPMxCNTH和TPMxCNTL構(gòu)成。TPM預(yù)置計(jì)數(shù)定時(shí):向16位模數(shù)計(jì)數(shù)寄存器TPMxMODH:TPMxMODL寫入一個(gè)確定的數(shù)值,則計(jì)數(shù)器每進(jìn)行一次計(jì)數(shù)都會(huì)將計(jì)數(shù)和模數(shù)計(jì)數(shù)寄存器的值進(jìn)行比較,如果相同就產(chǎn)生溢出,同時(shí)置溢出標(biāo)志位TOF為1,然后重新開(kāi)始計(jì)數(shù),溢出時(shí)若TOIE為1,還會(huì)產(chǎn)生中斷請(qǐng)求。TPM每個(gè)自由計(jì)數(shù)器包含三個(gè)寄存器:一個(gè)8位狀態(tài)控制寄存器(TPMxSC),一個(gè)16位計(jì)數(shù)器(TPMxCNTH:TPMxCNTL,一個(gè)16位模數(shù)寄存器(TPMxMODH:TPMxMODL)。其中,x=1/2(1)定時(shí)器x狀態(tài)控制寄存器(TPMxSC)如下圖:其中,TOF為溢出標(biāo)志位,為0則沒(méi)有達(dá)到預(yù)置計(jì)數(shù)寄存器中的值沒(méi)有溢出,為1則達(dá)到了預(yù)置計(jì)數(shù)寄存器中的值溢出。TOIE為定時(shí)溢出中斷允許位,可讀/可寫位用來(lái)允許定時(shí)器的溢出中斷。TOIE為1,TOF為1時(shí)允許中斷,復(fù)位清TOIE。定時(shí)器x狀態(tài)控制寄存器(TPMxSC)CLKS[B:A]與PS[2:0]功能如下圖:(2)定時(shí)器x計(jì)數(shù)寄存器(TPMxCNTH:TPMxCNTL)只讀的16位TPM計(jì)數(shù)寄存器由兩個(gè)字節(jié)寄存器TPMxCNTH和TPMxCNTL構(gòu)成。讀兩個(gè)字節(jié)中的任何一個(gè)字節(jié)都會(huì)把兩個(gè)字節(jié)內(nèi)容鎖存進(jìn)內(nèi)部緩沖器,直到另外一個(gè)字節(jié)也被讀取為止。這允許以任何順序讀取連貫的16位寄存器。如下圖:(3)定時(shí)器x模數(shù)寄存器(TPMxMODH:TPMxMODL)??勺x/寫的TPM模數(shù)寄存器中包含TPM計(jì)數(shù)器的模數(shù)值。當(dāng)TPM計(jì)數(shù)器到達(dá)這個(gè)模數(shù)值后,TPM計(jì)數(shù)器在下一個(gè)時(shí)鐘要么重新從0x0000開(kāi)始計(jì)數(shù)(CPWMS=0),要么從這個(gè)模數(shù)值往下減1計(jì)數(shù)(CPWMS=1),同時(shí)溢出標(biāo)志TOF(TimerOverflowFlag)變?yōu)?。只寫TPMxMODH或者TPMxMODL其中的一個(gè)會(huì)抑制住TOF和溢出中斷直到些另外一個(gè)字節(jié)也被寫為止,因此兩個(gè)寄存器一定都要寫,不能只寫一個(gè)而不管另一個(gè)。復(fù)位會(huì)使TPM模數(shù)寄存器為0x0000,相當(dāng)處于自由運(yùn)行定時(shí)器計(jì)數(shù)模式(模數(shù)禁止)。如下圖:【實(shí)驗(yàn)裝置】FreescaleHC08單片機(jī),CodeWarrior開(kāi)發(fā)環(huán)境【實(shí)驗(yàn)內(nèi)容】=1\*GB2⑴利用TPM,編程實(shí)現(xiàn)下列功能:利用兩個(gè)七段數(shù)碼管,實(shí)現(xiàn)00-59秒顯示:自動(dòng)從00開(kāi)始,每一秒鐘,數(shù)字加1;加到59之后,自動(dòng)回到00,重復(fù)開(kāi)始;=2\*GB2⑵外接IRQ按鍵,平時(shí)00-59自動(dòng)加數(shù)顯示,按IRQ按鍵一次后,加數(shù)顯示停止,再按一次IRQ按鍵,繼續(xù)加數(shù)顯示。【結(jié)果分析】實(shí)驗(yàn)(1)最終實(shí)現(xiàn)了用TPM2模塊精確定時(shí)半秒,再利用半秒產(chǎn)生秒的各位和十位,并把秒的各位和十位送到兩位數(shù)碼管上顯示。數(shù)碼管采用動(dòng)態(tài)掃描的方式顯示。TPM2_ISR每隔500ms清零一次,對(duì)秒鐘的高地位進(jìn)行加處理。對(duì)TPM2溢出標(biāo)志清零首先讀標(biāo)志位,然后寫0到標(biāo)志位。實(shí)驗(yàn)結(jié)果顯示正確。實(shí)驗(yàn)(2)在(1)的基礎(chǔ)上,增加了IRQ中斷模塊。每按一次IRQ按鍵FLAG計(jì)數(shù)加1,然后取FLAG的最低位。若最低位為0,則停止秒計(jì)時(shí),數(shù)碼管顯示時(shí)間保持不變;若最低位為1,則正常計(jì)時(shí)、顯示。這樣就實(shí)現(xiàn)了按IRQ按鍵一次后,加數(shù)顯示停止,再按一次IRQ按鍵,繼續(xù)加數(shù)顯示?!緦?shí)驗(yàn)代碼】(1)INCLUDEMC9S08AW60.INC;包含頭文件ORG$0070Half_SecDS1;半秒時(shí)間變量SEG_SelectDS1;數(shù)碼管位選變量Second_LDS1;秒鐘低位Second_HDS1;秒鐘高位NUMDS1COUNTDS1ORG$1860LED_Table: DC.B $c0,$f9,$a4,$b0,$99,$92,$82,$f8;LED字形碼表 DC.B $80,$90recycle:MOV#70t,NUM;軟件延時(shí)5msDBNZNUM,*RTSDelay_5ms:MOV#38t,COUNTrecall:BSRrecycleDBNZCOUNT,recallMOV#07t,COUNTDBNZCOUNT,*RTSIO_Init: ;IO初始化模塊MOV #$FF,PTGD ;初始化輸出端口的數(shù)據(jù)寄存器MOV #$FF,PTDD;初始化輸出端口的數(shù)據(jù)寄存器 MOV #$FF,PTAD ;初始化輸出端口的數(shù)據(jù)寄存器 LDA #%11111111 STA PTADD ;初始化PTA口的八個(gè)管腳作為輸出 STA PTDDD ;初始化PTD口的八個(gè)管腳作為輸出 STA PTGDD ;初始化PTG口的八個(gè)管腳作為輸出 RTS ;子程序返回TPM2_Init:;TPM2模塊中斷方式初始化子程序MOV#$4E,TPM2SC;BUSCLK為TPM2時(shí)鐘源,64分頻,允許TPM2中斷MOV#$7A,TPM2MODHMOV#$12,TPM2MODL;500ms對(duì)應(yīng)模數(shù)值CLI;開(kāi)總中斷RTSTPM2_ISR:;TPM2溢出中斷服務(wù)子程序LDATPM2SC;先讀標(biāo)志位TEFBCLR7,TPM2SC;寫0到TEF清TEF標(biāo)志位INCHalf_SecLDAHalf_SecCMP#2T;是否到了1SBNETPM2_ENDMOV#$00,Half_Sec;到則秒鐘加一,半秒清零INCSecond_LLDASecond_LCMP#10T;秒鐘是否加到10BNETPM2_ENDMOV#$00,Second_L:到則秒鐘各位清零,十位加1INCSecond_HLDASecond_HCMP#6T;秒鐘十位是否到6BNETPM2_ENDMOV#$00,Second_H;到則秒鐘10位清零TPM2_END:RTIMain: CLRX CLRA CLRH STA $1802;禁止COPMOV#$00,Half_SecMOV#$00,Second_H;秒高位初始化MOV#$00,Second_L;秒低位初始化JSR IO_Init;對(duì)PTD,PTG,PTA端口初始化JSR TPM2_Init;TPM2初始化AGAIN:CLRH MOV #%11111110,PTAD ;位選低位 LDA Second_L ;讀秒低位 CLRH TAX LDA LED_Table,X;查字形碼表 STA PTGD ;輸出秒低位 NSA STAPTDD JSR Delay_5ms ;延時(shí)5ms MOV #$FF,PTDD ;熄滅數(shù)碼管,避免宇輝 MOV #%11111101,PTAD ;位選數(shù)碼管高位 LDA Second_H ;讀秒高位 CLRH TAX LDA LED_Table,X STA PTGD NSA STA PTDD ;顯示秒高位 JSR Delay_5ms MOV #$FF,PTGD JMP AGAIN ORG$FFE2DC.WTPM2_ISRORG$FFFEDC.WMainINCLUDE MC9S08AW60.inc ;包含頭文件(2)INCLUDEMC9S08AW60.INC;包含頭文件ORG$0070Half_SecDS1;半秒時(shí)間變量SEG_SelectDS1;數(shù)碼管位選變量Second_LDS1;秒鐘低位Second_HDS1;秒鐘高位FLAGDS1;IRQ中斷計(jì)數(shù)標(biāo)志NUMDS1COUNTDS1ORG$1860LED_Table: DC.B $c0,$f9,$a4,$b0,$99,$92,$82,$f8;LED字形碼表 DC.B $80,$90recycle:MOV#70t,NUM;軟件延時(shí)5msDBNZNUM,*RTSDelay_5ms:MOV#38t,COUNTrecall:BSRrecycleDBNZCOUNT,recallMOV#07t,COUNTDBNZCOUNT,*RTSIO_Init: ;IO初始化模塊MOV #$FF,PTGD ;初始化輸出端口的數(shù)據(jù)寄存器MOV #$FF,PTDD;初始化輸出端口的數(shù)據(jù)寄存器 MOV #$FF,PTAD ;初始化輸出端口的數(shù)據(jù)寄存器 LDA #%11111111 STA PTADD ;初始化PTA口的八個(gè)管腳作為輸出 STA PTDDD ;初始化PTD口的八個(gè)管腳作為輸出 STA PTGDD ;初始化PTG口的八個(gè)管腳作為輸出 RTS ;子程序返回IRQ_Init: ;IRQ中斷初始化模塊 MOV #$00,FLAG;FLAG清零 LDA #%00010010 STA IRQSC ;IRQ功能允許,僅下降沿觸發(fā),允許中斷 RTSIRQ_ISR: INC FLAGI;計(jì)數(shù)加一 LDAFLAG AND#%00000001;取最低位 STAFLAG BSET 2,IRQSC ;向IRQACK位寫1以清零IRQF RTI TPM2_Init:;TPM2模塊中斷方式初始化子程序MOV#$4E,TPM2SC;BUSCLK為TPM2時(shí)鐘源,64分頻,允許TPM2中斷MOV#$7A,TPM2MODHMOV#$12,TPM2MODL;500ms對(duì)應(yīng)模數(shù)值CLI;開(kāi)總中斷RTSTPM2_ISR:;TPM2溢出中斷服務(wù)子程序LDATPM2SC;先讀標(biāo)志位TEFBCLR7,TPM2SC;寫0到TEF清TEF標(biāo)志位INCHalf_SecLDAHalf_SecCMP#2T;是否到了1SBNETPM2_ENDMOV#$00,Half_Sec;到則秒鐘加一,半秒清零LDAFLAGLDAFLAGCMP#0T;FLAG不為0,則停止計(jì)數(shù)BNETPM2_ENDINCSecond_LLDASecond_LCMP#10T;秒鐘是否加到10BNETPM2_ENDMOV#$00,Second_L:到則秒鐘各位清零,十位加1INCSecond_HLDASecond_HCMP#6T;秒鐘十位是否到6BNETPM2_ENDMOV#$00,Second_H;到則秒鐘10位清零TPM2_END:RTIMain: CLRX CLRA CLRH STA $1802;禁止COPMOV#$00,Half_SecMOV#$00,Second_H;秒高位初始化MOV#$00,Second_L;秒低位初始化JS
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生產(chǎn)作業(yè)傳票制度
- 飼料廠生產(chǎn)部管理制度
- 生產(chǎn)防護(hù)過(guò)程管理制度
- 街安全生產(chǎn)責(zé)任制度
- 無(wú)菌生產(chǎn)車間制度
- 生產(chǎn)食品安全自查制度
- 電力生產(chǎn)監(jiān)盤管理制度
- 米粉廠安全生產(chǎn)制度
- 配送物流生產(chǎn)管理制度
- 安全生產(chǎn)協(xié)管員制度
- 復(fù)方蒲公英注射液在銀屑病中的應(yīng)用研究
- 住培中醫(yī)病例討論-面癱
- 設(shè)備安裝施工方案范本
- 衛(wèi)生院副院長(zhǎng)先進(jìn)事跡材料
- 復(fù)發(fā)性抑郁癥個(gè)案查房課件
- 網(wǎng)絡(luò)直播創(chuàng)業(yè)計(jì)劃書(shū)
- 人類學(xué)概論(第四版)課件 第1、2章 人類學(xué)要義第一節(jié)何為人類學(xué)、人類學(xué)的理論發(fā)展過(guò)程
- 《功能性食品學(xué)》第七章-輔助改善記憶的功能性食品
- 幕墻工程竣工驗(yàn)收?qǐng)?bào)告2-2
- 1、工程竣工決算財(cái)務(wù)審計(jì)服務(wù)項(xiàng)目投標(biāo)技術(shù)方案
- 改進(jìn)維持性血液透析患者貧血狀況PDCA
評(píng)論
0/150
提交評(píng)論