<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

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

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

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

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

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

          MCCNT寄存器(ModulusDown-CounterCountRegister)

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

          圖1MCCNT寄存器

          MCCTL寄存器(ModulusDown-CounterControlRegister)

          MCZI位是ModulusCounterUnderflowInterruptEnable的縮寫。MCZI=1時使能中斷。

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

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

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

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

          MCPR1,MCPR0位是ModulusCounterPrescalerselect的縮寫。確定分頻系數(shù)。當(dāng)MCPR1、MCPR0組成的兩位2進(jìn)制數(shù)為N時,表示分頻系數(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)計數(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. }




          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();