?? pwm.c
字號:
// 該程序利用EVB模塊的PWM7--PWM12引腳產生不同占空比的方波
#include "f2407_c.h"
// 屏蔽中斷程序
void inline disable()
{
asm(" setc INTM");
}
// 系統初始化子程序
int initial()
{
asm(" setc SXM"); // 符號位擴展有效
asm(" clrc OVM"); // 累加器中結果正常溢出
asm(" clrc CNF"); // B0被配置為數據存儲空間
SCSR1=0x81FE; // CLKIN=10M,CLKOUT=4CLKIN=40M
WDCR=0x0E8; // 不使能看門狗,因為SCSR2中的WDOVERRIDE
// 即WD復位后的缺省值為1,故可以用
// 軟件禁止看門狗
IMR=0x0000; // 禁止所有中斷
IFR=0x0FFFF; // 清除全部中斷標志,"寫1清0"
WSGR=0x00; // 禁止所有的等待狀態
}
// EVB模塊的PWM初始化程序
int pwminitial()
{
MCRC=MCRC|0x007E; // IOPE1-6被配置為基本功能方式,PWM7-12
ACTRB=0x0666; // PWM12,10,8 低有效,PWM11,9,7 高有效
DBTCONB=0x00; // 不使能死區控制
CMPR4=0x1000;
CMPR5=0x3000;
CMPR6=0x5000;
T3PR=0x6000; // 設置定時器3的周期寄存器,并設置CMPR4-6,以確定不
// 同的輸出占空比
COMCONB=0x8200; // 使能比較操作
T3CON=0x1000; // 定時器3為連續增計數模式
}
// 該中斷服務程序主要是為了防止干擾,不做任何其它操作
void interrupt nothing()
{
return; // 中斷直接返回
}
// 主程序
main( )
{
disable(); // 總中斷禁止
initial(); // 系統初始化
pwminitial(); // PWM輸出初始化
T3CON=T3CON|0x0040; // 啟動定時器3
while(1)
{
; //等待中斷發生
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -