xs128帶說明例程tim輸出比較我寫的定時器_第1頁
xs128帶說明例程tim輸出比較我寫的定時器_第2頁
xs128帶說明例程tim輸出比較我寫的定時器_第3頁
xs128帶說明例程tim輸出比較我寫的定時器_第4頁
xs128帶說明例程tim輸出比較我寫的定時器_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

定時器模 第一節定時器模塊說明 XS128定時器模塊內部結構 第二節輸入捕捉和輸出比較相關寄存 IC/OC選擇寄存器 輸出比較通道7寄存器 輸出比較通道7數據寄存器 定時器寄存器 計時器系統控制寄存器 計時器溢出綁定寄存器 計時器系統控制寄存器 1、 IC/OC寄存器(TC0- 第三節脈沖累加相關寄存 脈沖累加器A控制寄存器 脈沖累加器A標志寄存器 第四節定時器模塊實 TIM輸入捕 TIM輸出比 TIM定時器溢出中 TIM脈沖累 (TCNTTIM816位的捕捉/比較(IC/OC)通道。模塊運行時,16位的自由定時器按照設定的時鐘頻率在$0000~$FFFF之間循環計時。(IC(TCNT)16IC/OC寄存器中,幵設置中斷請求標志,隨后軟件可以響(OC(AITIOSICOC方式。當IOSn=0時,對應的通道n為輸入捕捉(1C)通道,IOSn=1n為輸出比較(OC)OCTIOS1OC腳具有降功率驅動功能,設置成IC的通有內部上拉功能,但上電后均處于關閉狀態,可以根據需要啟用。TIOS寄存器用于指定各個通道的功能,即工作于ICOC輸出比較通道7寄存器OC77個輸出引腳的狀態,并覆蓋各個引OC7M決定哪些通道將處于OC7的管理之下。OC7M中的各位與PORTTTIOS將某個通道設定為輸出比較時,OC7M1,對應的引腳就是輸出狀態,與DDR中的對應位的狀態無關。但OC7MnDDROC7MTCTL1和TCTL2寄存器中的OMn和OLn設定的引腳動作,若OC7M中某個位置1,就會阻止相應引腳上由OM和OL設定的動作。7數據寄存器OC7MOCOC7DPORTT7中1OC7DPORTTOC7M176-0的動作發生在同一個周期,前者將覆蓋后者。因此各個通道的動作將依賴于OC7D中各個位的設置。定時器寄存器止寫入。TCNT應按字,分別高、低字節可能得到錯誤的結果。在特殊模式下,TCNT可寫,但因為寫操作與預分頻器時鐘不同步,TCNT寄存器寫入后,TSCR1寄存器是定時器模塊的總開關,它決定模塊是否啟動以及在中斷等待、BDM方式要使用定時器模塊的IC/OC功能,必須將TEN置位。如果因為某種原因定時器沒有使能,脈沖累加器也將得不到ECLK/64時鐘,因為ECLK/64是由定時器的分頻器產生0:主計時器、包括計數器均被,有利于降低功耗MCU0MCU1:當MCU進入中斷等待模式時,計時器1:在凍結模式下計時器和計數器,用于仿真調試。注意:TSFRZ不能停止脈沖累加。1:對于T 標志位CnF。對于 2($0F)中的各位,任何對TCNT寄存器($04、$05)的均會除TOF標志;任何 3 2寄存器($22,$23)的都會清楚清 寄存器($21)中的PAOVF和PAIF位。任何 1 0寄存($24,$25)的都會清除PB寄存器($21)中的PBOVF位。這種方式的好0:TSCR2PR2,PR1,PR01:PTPSR寄存器決定。TOVx在輸出比較時,如果發現溢出,則綁定該管腳。這能僅在輸出比較模式下有效,它的優先級高出強制輸出比較,而低于通道7的輸出比較。TCTLl-TCTL4ICOC16個二進制位,每兩個二進制位管理一個通道。其中TCTLl、TCTL2設定各個OC通道匹配時的動作,包括切斷OC與輸出引腳的聯系,而TCTL3、TCTL4設定IC響應引腳的何種動作,包括ICOMnOLn8對控制位(OM7OL7-OMO、OL0)編DDRT0時,OC與輸出引腳斷 輸入捕捉邊沿控制位,這8對控制位(EDG7B、EDG7A—EDGOBEDGOA)對輸入捕捉的邊沿檢測電路進行設置。當二者同時為0時,ICOMn、OLn指定的引腳動作有效,OC7M016ABIC/OC7IC/OC0,必須設置對應的IOSn:1、OMn=0、OLn=0,同時寄存器OC7MC7M7、OC7M0位必須清0。TIE寄存器中的位與狀態寄存器T 1中的標志位相對應。如果將TIE中的某位清0,相應的標志位就不能引起硬件中斷。如果被置1,相應的標志位就可以引起中斷。0:中斷被。1TOF70:計數器復位,計數器自由計數17如果TC7=$0000并 T將繼續保持$0000如果TC7=#FFFF并且TCRE=1,當TCNT從$FFFF到$0000之間被復位后TOF將不 所示的T 2為中斷標志寄存器,其中T 1對應8個IC/OC通道,當某CnF=1時說明對應的IC/OC通道有動作。T2只有一個標志位TOF,作為計數1,向某位寫0不影響該位的狀態。當TSCR中的TFFCA位置位時,讀IC通道或寫OC通道($10-$1F)將自動清除該通道標志CnF,對TCNT的任何將自動清除T2。CnF:IC/OC通道中斷請求標志。0:上次清除標志以來,IC/OC1:IC/OC通道已經出現動作。將寄存器ICSYS($2B)TFMODTOF16位自由定時器從$FFFF回滾到$0000時,該位置位。將$80入到 2將自動清除該位。詳見前面關于TSCR2中TCRE控制位的解釋每個IC或OC通道都設置有一個16位的寄存器,對于IC(輸入捕捉)通道,當通道的邊EDGnAEDGnBTCn,隨后程序可以和處理;對于OC(輸出比較)通道,程序將預定的時刻寫入到TCn,當自OMn、OLn所指定的輸出動作。定時器模塊共有816IC/OCIC的通道,相應通道寫操作無意義。上述所PACTLPAIPAI的啟動、確定定時器系統的PAEN:TEN相互獨立。PAEN=1時,PAl的輸入部分才進行引腳信號檢測,同時8位脈沖累加器PAC3、PAC2被。0:PAI系統1:PAI它只能工作在計數方式。0:計數模式1TEN1PEDGEPAMOD (計數模式)時)) 0:當脈沖輸入引腳(PT7/PAIECLK/64時鐘脈沖計入脈沖累加器,并在隨后的輸入引腳下降沿置位PAIF標志。1:當脈沖輸入引腳(PT7/PAIECLK/64時鐘脈沖計入脈沖累加器,并在隨后的輸入引腳上升沿置位PAIF標志。CLKI、CLK0:定時器模塊時鐘選擇位,如果脈沖累加器被(PAEN:0),1PAOVF PAI子系統可能產生兩種中斷累加器溢出和中斷當 T溢出時先置位PAOVF,當PAOVI=1時將發出中斷請求。而PAIF則在PAI檢測到有效時置位,當PAI=1時還將發出中斷請求。當TSCR寄存器中的TFFCA=1時, T將清除PA中的所有標志位。PAOVF、PAIF位于寄存器 中,其意義如下 T沒有回滾到$0000。 T從$FFFF回滾到$0000。將$02寫入到 將自動清除該位0:上次清除以來,PAI1:在輸入引腳檢測到有效邊沿。在計數模式下,選定的有效邊沿在數的同時觸發該位置1;在門控時間累加模式下,輸入引腳門控信號的后沿觸發該位置1,將$01寫入到PA 88位,則讀操作不受限制,但PRNT1:預分頻比TIMTIOS---TCTLx---設置對應位輸入捕捉的方式(x=3、4,是3,低位是4TSCRx---控制寄存器設置,包括工作使能、確定工作方式(x=1TIE---中斷函數1,清除標志位---T1;2,處理函#include<hidef.h> #include"derivative.h" //單片機硬件型#defineLED //LED,寫'0'亮,寫'1' PLL初始化函 void{//clksel.7(PLLSEL選擇位) //SYNRREFDV寄存器//計算: 048CSYNR=0xc0|//計算 0 4 8 CREFDV=0x80|//后分配寄存器PLLCLK=FVCO/(2*POSTDIV) while(CRG_LOCK==0); 根據CRG寄存器的LOCK位,確定PLL是否穩//LOCK==1穩定,==0 //PLL} void{TSCR1_TFFCA //TSCR1_TEN //定時器使能位1=正常工作0= IC/OC選擇寄存器,810//0TCTL4 EDG0B、//0 = //0TSCR2 PR2,PR1,PR0=111 1 //IC/OC1 2 //清除定時器中斷標志位1} //中斷函數,PT0口高低電平會觸發PB0口LED狀態改變,用戶可以自己定義LED#pragmaCODE_SEGNEAR_SEGNON_BANKED //中斷函數置于頁區內voidinterrupt8inputcapture_ISR(void){LED= //led 1_C0F //1}#pragmaCODE_SEG // 主函 void{//PLL//DDRB= //LED=0; for(;;){}}TIMTIOS---TCx---x的OCNTCTLx---設置對應位輸入捕捉的方式(x=12,高四位是12TSCRx---控制寄存器設置,包括工作使能、確定工作方式(x=1)TIE---中斷函數1清除標志位--- 12重新賦初值#include<hidef.h> #include"derivative.h" //單片機硬件型#defineLED //LED,寫'0'亮,寫'1'#defineLED_dir //為LED_dir,寫'0'做輸,寫'1'做輸出 voidINIT_PLL(void){//clksel.7(PLLSEL選擇位)決定內部總線時鐘來源 //SYNRREFDV寄存器//計算: 048CSYNR=0xc0|//計算 0 4 8 CREFDV=0x80|//后分配寄存器PLLCLK=FVCO/(2*POSTDIV) while(CRG_LOCK==0); 根據CRG寄存器的LOCK位,確定PLL是否穩//LOCK==1穩定,==0 //PLL} 初始化ECT模 voidinitialize_ect(void){TSCR1_TFFCA //TSCR1_TEN //定時器使能位1=允許定時器正常工作0= IC/OC選擇寄存器,810TCTL1=0x00; //后四個通道設置為定時器與輸出引腳斷開TCTL20x00;//前四個通道設置為定時器與輸出引腳斷開TIE=0x00;//所有通道定時中斷TSCR2=0x07; //預分頻系數pr2-pr0:111,分頻因子128,時鐘周期為4us, 1=0xff; //清除各IC/OC中斷標志位T20xff;//} 初始化 voidINIT_LED(void){LED_dir= //PB0LED= //LED} 主函 voidmain(void){ //PLL //初始化LED // //{T1_C0F= //清除標志TC0=TCNT+31250; //設置輸出比較時間為0.125s 1_C0F==0); //等待,直到發生輸出比較 1_C0F //TC0=TCNT+31250; //設置輸出比較時間為0.125s 1_C0F==0); //等待,直到發生輸出比較 1_C0F=1; TC0=TCNT+31250; //設置輸出比較時間為0.125s 1_C0F==0); //等待,直到發生輸出比較 1_C0F=1; TC0=TCNT+31250; //設置輸出比較時間為0.125s 1_C0F==0); //等待,直到發生輸出比較LED=~LED; }}TIM#include<hidef.h> #include"derivative.h" //單片機硬件型#defineLED //PORTK_PB0//LED,寫'0'亮,寫'1'#defineLED_dir //PORTK_PB0//為LED_dir,寫'0'做輸,寫'1'做輸出unsignedint // voidINIT_PLL(void){//clksel.7(PLLSEL選擇位)決定內部總線時鐘來 //SYNRREFDV寄存器//計算: SYNR=0xc0|0x09;//計算 REFDV=0x80|0x01;//后分配寄存器PLLCLK=FVCO/(2*POSTDIV) _LOCK==0); 寄存器的LOCK位,確定PLL是否穩LOCK==1穩定,==0 //PLL} 初始化ECT模 voidinitialize_ect(void){TSCR1_TFFCA //TSCR1_TEN //定時器使能位1=允許定時器正常工作0= IC/OC選擇寄存器,810TCTL1=0x00; //后四個通道設置為定時器與輸出引腳斷開TCTL20x00;//前四個通道設置為定時器與輸出引腳斷開TIE=0x00;//所有通道定時中斷TSCR2 //pr2-pr0:111,128,4us,//T1= //清除各IC/OC中斷標志T2= //清除自由定時器中斷標志} #pragmaCODE_SEGNEAR_SEG //中斷函數置于頁區interruptvoid{if(T2_TOF{ T寄存器,清除TOF標LED //LED}}#pragmaCODE_SEG // 主函 voidmain(void){ //所有中斷打 //初始化PLL模塊,設置busclock=32MHz LED_dir //LEDLED=0; //初始化LED為亮 for(;;){}}TIM#include<hidef.h> #include"derivative.h" //單片機硬件型#defineLED //PORTK_PB0//LED,寫'0'亮,寫'1'#defineLED_dir //PORTK_PB0//為LED_dir,寫'0'做輸,寫'1'做輸出unsignedintdata1,data2; //定義中間變量data1和data2用于計算1秒鐘的上升沿的unsignedint //定義1秒鐘的上升沿的數量變unsignedint // voidINIT_PLL(void){//clksel.7(PLLSEL選擇位)決定內部總線時鐘來源 //SYNRREFDV寄存器//計算: 048CSYNR=0xc0|//計算 0 4 8 CREFDV=0x80|//后分配寄存器PLLCLK=FVCO/(2*POSTDIV) while(CRG_LOCK==0); 根據CRG寄存器的LOCK位,確定PLL是否穩L

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論