在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Freescale 9S12 系列單片機(jī)應(yīng)用筆記(ECT 模塊) 6

            Freescale 9S12 系列單片機(jī)應(yīng)用筆記(ECT 模塊) 6

            作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò) 收藏

            實(shí)驗(yàn)6:模數(shù)遞減計(jì)數(shù)器MCCNT和定時(shí)中斷

            ECT模塊包含一個(gè)16位的模數(shù)遞減計(jì)數(shù)器計(jì)數(shù)寄存器MCCNT。MCCNT的輸入時(shí)鐘信號(hào)由BUSCLOCK分頻得到,分頻系數(shù)有四種選擇。每次時(shí)鐘到來(lái)后MCCNT自動(dòng)減1。當(dāng)MDC計(jì)數(shù)值減到0后,立即置位模數(shù)遞減計(jì)數(shù)器標(biāo)志寄存器MCFLG中的中斷標(biāo)志MCZF,若MCCTL中的中斷允許位MCZI=1,則向CPU發(fā)出中斷請(qǐng)求,向MCFLG的MCZF位寫(xiě)1將清除該標(biāo)志。

            本文引用地址:http://www.biyoush.com/article/201611/318820.htm

            MCCNT有兩種工作方式:?jiǎn)未斡?jì)數(shù)方式和循環(huán)(連續(xù))工作方式。由模數(shù)遞減計(jì)數(shù)器控制寄存器MCCTL中的模數(shù)模式允許位MODMC決定當(dāng)前工作方式。

            l當(dāng)MODMC=0時(shí)為單次計(jì)數(shù)方式,計(jì)數(shù)值減到$0000后便停止計(jì)數(shù)。如果再次將定時(shí)常數(shù)直接寫(xiě)入計(jì)數(shù)寄存器MCCNT,MDC便又開(kāi)始一次遞減計(jì)數(shù),減到0后停止。

            l當(dāng)MODMC=1時(shí)為循環(huán)(連續(xù))工作方式,計(jì)數(shù)值減到$0000后,自動(dòng)從加載寄存器加載定時(shí)常數(shù),并開(kāi)始新一輪遞減計(jì)數(shù)。

            MCCNT寄存器(ModulusDown-CounterCountRegister)

            如前所述,MCCNT為一個(gè)可置初值的遞減計(jì)數(shù)器。當(dāng)遞減到0后可以產(chǎn)生中斷信號(hào)。

            圖1MCCNT寄存器

            MCCTL寄存器(ModulusDown-CounterControlRegister)

            MCZI位是ModulusCounterUnderflowInterruptEnable的縮寫(xiě)。MCZI=1時(shí)使能中斷。

            MODMC位是ModulusModeEnable的縮寫(xiě)。MODMC=0表示單次計(jì)數(shù)模式。MODMC=1表示循環(huán)計(jì)數(shù)模式。

            RDMCL位是ReadModulusDown-CounterLoad的縮寫(xiě)。RDMCL=0時(shí)讀MCCNT讀出的是MCCNT的當(dāng)前值。RDMCL=1時(shí)讀MCCNT讀的是加載寄存器的值。所謂加載寄存器存放的是當(dāng)MCCNT遞減到0后重新加載的那個(gè)值。加載寄存器和MCCNT公用一個(gè)地址,通過(guò)RDMCL來(lái)確定當(dāng)前讀的是哪個(gè)值。

            FLMC位是ForceLoadRegisterintotheModulusCounterCountRegister的縮寫(xiě)。向ELMC寫(xiě)1強(qiáng)制將加載寄存器的值加載到MCCNT。

            MCEN位是ModulusDown-CounterEnable的縮寫(xiě)。MCEN=1表示使能MCCNT。

            MCPR1,MCPR0位是ModulusCounterPrescalerselect的縮寫(xiě)。確定分頻系數(shù)。當(dāng)MCPR1、MCPR0組成的兩位2進(jìn)制數(shù)為N時(shí),表示分頻系數(shù)為2^N。

            圖2MCCTL寄存器

            MCFLG寄存器(ModulusDown-CounterFLAGRegister)

            MCZF—ModulusCounterUnderflowFlag

            圖3MCFLG寄存器

            下面的例子產(chǎn)生500Hz的方波。


            1. #include/*commondefinesandmacros*/
            2. #include"derivative.h"/*derivative-specificdefinitions*/
            3. #include"sci.h"
            4. voidECTInit(void)
            5. {
            6. MCCTL_MODMC=1;//循環(huán)計(jì)數(shù)模式
            7. MCCTL_MCEN=1;
            8. MCCTL_MCPR=0;
            9. MCCNT=8192;
            10. MCCTL_MCZI=1;//ModulusCounterUnderflowInterruptEnable
            11. TSCR1_TEN=1;//timerenable
            12. }
            13. voidmain(void)
            14. {
            15. ECTInit();
            16. DDRM_DDRM0=1;
            17. EnableInterrupts;
            18. for(;;)
            19. {
            20. _FEED_COP();/*feedsthedog*/
            21. }/*loopforever*/
            22. }
            23. interruptVectorNumber_VtimmdcuvoidECT_ModulusDown_ISR(void)
            24. {
            25. MCFLG_MCZF=1;
            26. PTM_PTM0=~PTM_PTM0;
            27. }




            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉