📄 pwzhe.asm
字号:
// 该程序利用EVB模块的PWM7——PWM12引脚产生不同占空比的方波
#include "register.h"
// 屏蔽中断程序
void inline disable()
{
asm(" setc INTM ");
}
// 系统初始化子程序
int initial()
{
asm(" setc SXM"); // 符号位扩展有效
asm(" clrc OVM"); // 累加器中结果正常溢出
asm(" clrc CNF"); // B0被配置为数据存储空间
*SCSR1=0x81FE; // CLKIN=6M,CLKOUT=4*CLKIN=24M
*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;
*T3PER=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 + -