📄 pwm.asm
字号:
//======================================================
// 文件名称: PWM.asm
// 功能描述: PWM设置服务
// 完成日期: 2003-8-13
//======================================================
.DEFINE timefosc_2 0x0230; //clkA选择fosc/2Hz
.DEFINE timefosc_256 0x0231; //clkA选择fosc/256Hz
.DEFINE timeclk_32768 0x0232; //clkA选择32768Hz
.DEFINE timeclk_8192 0x0233; //clkA选择8192Hz
.DEFINE timeclk_4096 0x0234; //clkA选择4096Hz
.DEFINE timeclk_2048 0x0205; //clkB选择2048Hz
.DEFINE timeclk_1024 0x020d; //clkB选择1024Hz
.DEFINE timeclk_256 0x0215; //clkB选择256Hz
.DEFINE timeclk_4 0x0225; //clkB选择4Hz
.DEFINE timeclk_2 0x0065; //clkB选择2HzHz
//频率选择fosc/2Hz;
//使用者也可以自己设置不同频率下的占空比;
.DEFINE timepwm_1 0x0070; //脉宽选择1/6
.DEFINE timepwm_2 0x00b0; //脉宽选择2/6
.DEFINE timepwm_3 0x00f0; //脉宽选择3/6
.DEFINE timepwm_4 0x0130; //脉宽选择4/6
.DEFINE timepwm_5 0x0170; //脉宽选择5/6
.DEFINE timepwm_6 0x01b0; //脉宽选择6/6
.DEFINE timepwm_7 0x01f0; //脉宽选择7/6
.DEFINE timepwm_8 0x0230; //脉宽选择8/6
.DEFINE timepwm_9 0x0270; //脉宽选择9/6
.DEFINE timepwm_10 0x02b0; //脉宽选择10/6
.DEFINE timepwm_11 0x02f0; //脉宽选择11/6
.DEFINE timepwm_12 0x0330; //脉宽选择12/6
.DEFINE timepwm_13 0x0370; //脉宽选择13/6
.DEFINE timepwm_14 0x03b0; //脉宽选择14/6
.DEFINE time_clk timefosc_256; //频率选择
.DEFINE time_pwm timepwm_4; //脉宽选择
.DEFINE P_TimerA_Data 0x700A;
.DEFINE P_TimerA_Ctrl 0x700B;
.DEFINE P_IOB_DATA 0x7005;
.DEFINE P_IOB_DIR 0x7007;
.DEFINE P_IOB_ATTRI 0x7008;
.DEFINE P_Feedback 0x7009;
.define p_watchdog_clear 0x7012;
.DEFINE P_INT_CTRL 0x7010;
.DEFINE P_INT_CLEAR 0x7011;
.code
//======================================================
// 函数名称: F_Pwm
// 实现功能: PWM设置
// 入口参数: 频率设置值,占空比设置值
// 出口参数: 无
// 破坏寄存器: r1,r2
//======================================================
.public _F_Pwm;
_F_Pwm:
push bp to [sp];
bp=sp+3
r1=[bp+1];
[P_TimerA_Data]=r1;
r2=[bp+2];
[P_TimerA_Ctrl]=r2;
r1=0x0100; //IOB8设置为同相低电平输出口
[P_IOB_DIR]=r1;
[P_IOB_ATTRI]=r1;
r1=0x0000;
[P_IOB_DATA ]=r1;
r1=0x0000;
[P_Feedback]=r1; //设置IOB8口为APWMO端口
pop bp from [sp];
retf
//======================================================
// 函数名称: F_IRQ3_Init
// 实现功能: 外部中断初始化
// 入口参数: 无
// 出口参数: 无
// 破坏寄存器: r1
//======================================================
.public _F_IRQ3_Init
_F_IRQ3_Init:
int off
//设置IOB2、IOB3设成带上拉电阻的输入端口
r1=0x0100;
[P_IOB_DIR]=r1;
[P_IOB_ATTRI]=r1;
r1=0x0000 ;
[P_IOB_DATA]=r1;
r1=0x0300; //开中断IRQ3_EXT1、IRQ3_EXT2
[P_INT_CTRL]=r1;
int irq;
retf
//======================================================
// 函数名称: F_PwmIRQ3
// 实现功能: PWM设置
// 入口参数: r1频率设置值,r2占空比设置值
// 出口参数: 无
// 破坏寄存器: r1,r2
//======================================================
.public _F_PwmIRQ3;
_F_PwmIRQ3:
[P_TimerA_Data]=r1;
[P_TimerA_Ctrl]=r2;
r1=0x0100; //IOB8设置为同相低电平输出口
[P_IOB_DIR]=r1;
[P_IOB_ATTRI]=r1;
r1=0x0000;
[P_IOB_DATA ]=r1;
r1=0x0000;
[P_Feedback]=r1; //设置IOB8口为APWMO端口
retf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -