由TIMER1地比較模塊輸出一個PWM波形,.doc

由TIMER1地比較模塊輸出一個PWM波形,.doc

ID:52546039

大?。?2.00 KB

頁數(shù):5頁

時間:2020-03-28

由TIMER1地比較模塊輸出一個PWM波形,.doc_第1頁
由TIMER1地比較模塊輸出一個PWM波形,.doc_第2頁
由TIMER1地比較模塊輸出一個PWM波形,.doc_第3頁
由TIMER1地比較模塊輸出一個PWM波形,.doc_第4頁
由TIMER1地比較模塊輸出一個PWM波形,.doc_第5頁
資源描述:

《由TIMER1地比較模塊輸出一個PWM波形,.doc》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。

1、//該程序用于測試DSP的CAPTURE模塊,由TIMER1的比較模塊輸出一個PWM波形,//此波形輸入CAP4引腳,待CAP4捕捉該PWM的10次上升沿后,停止捕捉,并把10//次捕捉值存于數(shù)組result[10]中#include"register.h"http://初始化子程序intresult[10];//定義一個存儲結果的數(shù)組intk=0;//定義的中斷次數(shù)值//系統(tǒng)初始化子程序intinitial(){asm("setcINTM");//禁止所有中斷asm("setcSXM");//抑制符號位擴展asm("clrcOVM");//累加器中結

2、果正常溢出asm("clrcCNF");//B0被配置為數(shù)據(jù)存儲空間*SCSR1=0x81FE;//CLKIN=6M,CLKOUT=4*CLKIN=24M*WDCR=0x0E8;//不使能看門狗,因為SCSR2中的WDOVERRIDE//即WD保護位復位后的缺省值為1,故可以用//軟件禁止看門狗*IMR=0x0000;//禁止所有中斷*IFR=0x0FFFF;//清除全部中斷標志,"寫1清0"}//捕獲單元4初始化子程序intCAP4INT(){*T3PER=0X0FFFF;//通用定時器3的周期寄存器為0XFFFF*T3CON=0X1400

3、;//通用定時器3為連續(xù)增計數(shù)模式*T3CNT=0X00;//計數(shù)器清0WSGR=0x0000;//禁止所有等待狀態(tài)*CAPCONB=0X0A440;//設置捕獲單元4為檢測上升沿,且選擇TIMER3為時鐘asm("clrcINTM");//開總中斷*IMR=0X08;//允許中斷優(yōu)先級4的中斷*EVBIMRC=*EVBIMRC

4、0X0001;//允許CAPTURE4中斷*EVBIFRC=*EVBIFRC

5、0X0FFFF;}//定時器1初始化子程序,使其比較單元輸出一個PWM波形inttimer1int(){*MCRA=*MCRA

6、0X100

7、0;//配置IOPB4口為定時器1的比較輸出*MCRC=*MCRC

8、0X0080;//配置IOPE7口為捕捉功能*GPTCONA=*GPTCONA

9、0X0042;*T1PER=0X1FE;//給定時器1的周期寄存器賦值*T1CON=0X1442;//允許TIMER1比較輸出,并且TIMER1為連續(xù)增計數(shù)//模式,立即啟動*T1CNT=0X00;//定時器1的計數(shù)器清0*T1CMP=0X0FF;//給定時器1的比較寄存器賦值}//主程序main(){initial();//系統(tǒng)初始化timer1int();//定時器1初始化,使其輸出一個PWM

10、波形供捕捉CAP4INT();//捕獲單元4初始化*T3CON=*T3CON

11、0X0040;//啟動定時器3while(1){if(k==10)break;//k保存中斷次數(shù)值,是全局變量}asm("setcINTM");//捕捉10次后,禁止再中斷}//若是由于干擾引起其它中斷,則執(zhí)行此子程序voidinterruptnothing(){asm("clrcINTM");//返回前開中斷return;}//捕捉中斷服務程序voidinterruptcapint(){intflag;flag=*EVBIFRC&0X01;//判斷是否是CAP4中

12、斷if(flag!=0x01){asm("clrcINTM");//返回前開中斷return;//如果不是CAP4中斷,則直接返回}load();//如果是CAP4中斷,則裝載捕捉值*EVBIFRC=*EVBIFRC

13、0x01;//寫"1"清除CAP4中斷標志asm("clrcINTM");//返回前開中斷return;//中斷返回}//裝載捕捉值子程序intload(){result[k]=*CAP4FIFO;//讀取捕捉值,存于相應的數(shù)組k++;}問題補充:請問CAP4FIFO里面裝的是什么東西呢?是捕獲脈沖的時間嗎?那要是我要計算兩個脈

14、沖之間的時間改如何修改呢?#includeintresult[10];//存儲結果的數(shù)組intk=0;//中斷次數(shù)voidinlinedisable(){?asm("setcINTM");//屏蔽中斷程序}intinitial(){?asm("setcINTM");//禁止所有中斷?asm("setcSXM");//符號位擴展有效?asm("clrcOVM");//累加器中結果正常溢出?asm("clrcCNF");//B0被配置為數(shù)據(jù)存儲空間??*SCSR1=0x81FE;//CLKIN=6M,CLKOUT=4*CL

15、KIN=24M系統(tǒng)控制和狀態(tài)寄存器SCSR1???*WDCR=0x0E8;//禁止看門狗??*IMR=0x0000;//禁止所有中斷????????IMR中斷屏蔽寄

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。