535 lines
15 KiB
C
535 lines
15 KiB
C
/*---------------------------------------------------------------------*/
|
||
/* --- STC MCU Limited ------------------------------------------------*/
|
||
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
|
||
/* --- Mobile: (86)13922805190 ----------------------------------------*/
|
||
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
|
||
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
|
||
/* --- Web: www.STCMCU.com --------------------------------------------*/
|
||
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
|
||
/* --- QQ: 800003751 -------------------------------------------------*/
|
||
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
|
||
/*---------------------------------------------------------------------*/
|
||
|
||
#include "PWM15bit.h"
|
||
|
||
u16 code PWMxCR[48] = {
|
||
0xff14, /* PWM00CR */
|
||
0xff1c, /* PWM01CR */
|
||
0xff24, /* PWM02CR */
|
||
0xff2c, /* PWM03CR */
|
||
0xff34, /* PWM04CR */
|
||
0xff3c, /* PWM05CR */
|
||
0xff44, /* PWM06CR */
|
||
0xff4c, /* PWM07CR */
|
||
0xff64, /* PWM10CR */
|
||
0xff6c, /* PWM11CR */
|
||
0xff74, /* PWM12CR */
|
||
0xff7c, /* PWM13CR */
|
||
0xff84, /* PWM14CR */
|
||
0xff8c, /* PWM15CR */
|
||
0xff94, /* PWM16CR */
|
||
0xff9c, /* PWM17CR */
|
||
0xffb4, /* PWM20CR */
|
||
0xffbc, /* PWM21CR */
|
||
0xffc4, /* PWM22CR */
|
||
0xffcc, /* PWM23CR */
|
||
0xffd4, /* PWM24CR */
|
||
0xffdc, /* PWM25CR */
|
||
0xffe4, /* PWM26CR */
|
||
0xffec, /* PWM27CR */
|
||
0xfc14, /* PWM30CR */
|
||
0xfc1c, /* PWM31CR */
|
||
0xfc24, /* PWM32CR */
|
||
0xfc2c, /* PWM33CR */
|
||
0xfc34, /* PWM34CR */
|
||
0xfc3c, /* PWM35CR */
|
||
0xfc44, /* PWM36CR */
|
||
0xfc4c, /* PWM37CR */
|
||
0xfc64, /* PWM40CR */
|
||
0xfc6c, /* PWM41CR */
|
||
0xfc74, /* PWM42CR */
|
||
0xfc7c, /* PWM43CR */
|
||
0xfc84, /* PWM44CR */
|
||
0xfc8c, /* PWM45CR */
|
||
0xfc94, /* PWM46CR */
|
||
0xfc9c, /* PWM47CR */
|
||
0xfcb4, /* PWM50CR */
|
||
0xfcbc, /* PWM51CR */
|
||
0xfcc4, /* PWM52CR */
|
||
0xfccc, /* PWM53CR */
|
||
0xfcd4, /* PWM54CR */
|
||
0xfcdc, /* PWM55CR */
|
||
0xfce4, /* PWM56CR */
|
||
0xfcec, /* PWM57CR */
|
||
};
|
||
|
||
u16 code PWMxT1[48] = {
|
||
0xff10, /* PWM00T1 */
|
||
0xff18, /* PWM01T1 */
|
||
0xff20, /* PWM02T1 */
|
||
0xff28, /* PWM03T1 */
|
||
0xff30, /* PWM04T1 */
|
||
0xff38, /* PWM05T1 */
|
||
0xff40, /* PWM06T1 */
|
||
0xff48, /* PWM07T1 */
|
||
0xff60, /* PWM10T1 */
|
||
0xff68, /* PWM11T1 */
|
||
0xff70, /* PWM12T1 */
|
||
0xff78, /* PWM13T1 */
|
||
0xff80, /* PWM14T1 */
|
||
0xff88, /* PWM15T1 */
|
||
0xff90, /* PWM16T1 */
|
||
0xff98, /* PWM17T1 */
|
||
0xffb0, /* PWM20T1 */
|
||
0xffb8, /* PWM21T1 */
|
||
0xffc0, /* PWM22T1 */
|
||
0xffc8, /* PWM23T1 */
|
||
0xffd0, /* PWM24T1 */
|
||
0xffd8, /* PWM25T1 */
|
||
0xffe0, /* PWM26T1 */
|
||
0xffe8, /* PWM27T1 */
|
||
0xfc10, /* PWM30T1 */
|
||
0xfc18, /* PWM31T1 */
|
||
0xfc20, /* PWM32T1 */
|
||
0xfc28, /* PWM33T1 */
|
||
0xfc30, /* PWM34T1 */
|
||
0xfc38, /* PWM35T1 */
|
||
0xfc40, /* PWM36T1 */
|
||
0xfc48, /* PWM37T1 */
|
||
0xfc60, /* PWM40T1 */
|
||
0xfc68, /* PWM41T1 */
|
||
0xfc70, /* PWM42T1 */
|
||
0xfc78, /* PWM43T1 */
|
||
0xfc80, /* PWM44T1 */
|
||
0xfc88, /* PWM45T1 */
|
||
0xfc90, /* PWM46T1 */
|
||
0xfc98, /* PWM47T1 */
|
||
0xfcb0, /* PWM50T1 */
|
||
0xfcb8, /* PWM51T1 */
|
||
0xfcc0, /* PWM52T1 */
|
||
0xfcc8, /* PWM53T1 */
|
||
0xfcd0, /* PWM54T1 */
|
||
0xfcd8, /* PWM55T1 */
|
||
0xfce0, /* PWM56T1 */
|
||
0xfce8, /* PWM57T1 */
|
||
};
|
||
|
||
u16 code PWMxT2[48] = {
|
||
0xff12, /* PWM00T2 */
|
||
0xff1a, /* PWM01T2 */
|
||
0xff22, /* PWM02T2 */
|
||
0xff2a, /* PWM03T2 */
|
||
0xff32, /* PWM04T2 */
|
||
0xff3a, /* PWM05T2 */
|
||
0xff42, /* PWM06T2 */
|
||
0xff4a, /* PWM07T2 */
|
||
0xff62, /* PWM10T2 */
|
||
0xff6a, /* PWM11T2 */
|
||
0xff72, /* PWM12T2 */
|
||
0xff7a, /* PWM13T2 */
|
||
0xff82, /* PWM14T2 */
|
||
0xff8a, /* PWM15T2 */
|
||
0xff92, /* PWM16T2 */
|
||
0xff9a, /* PWM17T2 */
|
||
0xffb2, /* PWM20T2 */
|
||
0xffba, /* PWM21T2 */
|
||
0xffc2, /* PWM22T2 */
|
||
0xffca, /* PWM23T2 */
|
||
0xffd2, /* PWM24T2 */
|
||
0xffda, /* PWM25T2 */
|
||
0xffe2, /* PWM26T2 */
|
||
0xffea, /* PWM27T2 */
|
||
0xfc12, /* PWM30T2 */
|
||
0xfc1a, /* PWM31T2 */
|
||
0xfc22, /* PWM32T2 */
|
||
0xfc2a, /* PWM33T2 */
|
||
0xfc32, /* PWM34T2 */
|
||
0xfc3a, /* PWM35T2 */
|
||
0xfc42, /* PWM36T2 */
|
||
0xfc4a, /* PWM37T2 */
|
||
0xfc62, /* PWM40T2 */
|
||
0xfc6a, /* PWM41T2 */
|
||
0xfc72, /* PWM42T2 */
|
||
0xfc7a, /* PWM43T2 */
|
||
0xfc82, /* PWM44T2 */
|
||
0xfc8a, /* PWM45T2 */
|
||
0xfc92, /* PWM46T2 */
|
||
0xfc9a, /* PWM47T2 */
|
||
0xfcb2, /* PWM50T2 */
|
||
0xfcba, /* PWM51T2 */
|
||
0xfcc2, /* PWM52T2 */
|
||
0xfcca, /* PWM53T2 */
|
||
0xfcd2, /* PWM54T2 */
|
||
0xfcda, /* PWM55T2 */
|
||
0xfce2, /* PWM56T2 */
|
||
0xfcea, /* PWM57T2 */
|
||
};
|
||
|
||
u16 code PWMxHLD[48] = {
|
||
0xff15, /* PWM00HLD */
|
||
0xff1d, /* PWM01HLD */
|
||
0xff25, /* PWM02HLD */
|
||
0xff2d, /* PWM03HLD */
|
||
0xff35, /* PWM04HLD */
|
||
0xff3d, /* PWM05HLD */
|
||
0xff45, /* PWM06HLD */
|
||
0xff4d, /* PWM07HLD */
|
||
0xff65, /* PWM10HLD */
|
||
0xff6d, /* PWM11HLD */
|
||
0xff75, /* PWM12HLD */
|
||
0xff7d, /* PWM13HLD */
|
||
0xff85, /* PWM14HLD */
|
||
0xff8d, /* PWM15HLD */
|
||
0xff95, /* PWM16HLD */
|
||
0xff9d, /* PWM17HLD */
|
||
0xffb5, /* PWM20HLD */
|
||
0xffbd, /* PWM21HLD */
|
||
0xffc5, /* PWM22HLD */
|
||
0xffcd, /* PWM23HLD */
|
||
0xffd5, /* PWM24HLD */
|
||
0xffdd, /* PWM25HLD */
|
||
0xffe5, /* PWM26HLD */
|
||
0xffed, /* PWM27HLD */
|
||
0xfc15, /* PWM30HLD */
|
||
0xfc1d, /* PWM31HLD */
|
||
0xfc25, /* PWM32HLD */
|
||
0xfc2d, /* PWM33HLD */
|
||
0xfc35, /* PWM34HLD */
|
||
0xfc3d, /* PWM35HLD */
|
||
0xfc45, /* PWM36HLD */
|
||
0xfc4d, /* PWM37HLD */
|
||
0xfc65, /* PWM40HLD */
|
||
0xfc6d, /* PWM41HLD */
|
||
0xfc75, /* PWM42HLD */
|
||
0xfc7d, /* PWM43HLD */
|
||
0xfc85, /* PWM44HLD */
|
||
0xfc8d, /* PWM45HLD */
|
||
0xfc95, /* PWM46HLD */
|
||
0xfc9d, /* PWM47HLD */
|
||
0xfcb5, /* PWM50HLD */
|
||
0xfcbd, /* PWM51HLD */
|
||
0xfcc5, /* PWM52HLD */
|
||
0xfccd, /* PWM53HLD */
|
||
0xfcd5, /* PWM54HLD */
|
||
0xfcdd, /* PWM55HLD */
|
||
0xfce5, /* PWM56HLD */
|
||
0xfced, /* PWM57HLD */
|
||
};
|
||
|
||
//========================================================================
|
||
// 函数: u8 PWMChannelCtrl(u8 PWM_id, u8 pwm_eno, u8 pwm_ini, u8 pwm_eni, u8 pwm_ent2i, u8 pwm_ent1i)
|
||
// 描述: PWM通道控制寄存器设置.
|
||
// 参数: PWM_id: PWM通道序号. 取值 0~57
|
||
// pwm_eno: pwm输出使能, 0设为GPIO, 1设为PWM输出.
|
||
// pwm_ini: pwm输出端的初始电平, 0为低电平, 1为高电平.
|
||
// pwm_eni: pwm通道中断使能控制, 0为关闭PWM中断, 1为使能PWM中断.
|
||
// pwm_ent2i: pwm通道第二个触发点中断使能控制, 0为关闭PWM第二个触发点中断, 1为使能PWM第二个触发点中断.
|
||
// pwm_ent1i: pwm通道第一个触发点中断使能控制, 0为关闭PWM第一个触发点中断, 1为使能PWM第一个触发点中断.
|
||
// 返回: 0:正确, 2:错误.
|
||
// 版本: V1.0, 2020-09-22
|
||
//========================================================================
|
||
u8 PWMChannelCtrl(u8 PWM_id, u8 pwm_eno, u8 pwm_ini, u8 pwm_eni, u8 pwm_ent2i, u8 pwm_ent1i)
|
||
{
|
||
u8 xdata *pPWMxCR;
|
||
|
||
if(PWM_id > PWM57) return 2; //id错误
|
||
if(pwm_eno > 1) return 2; //输出使能错误
|
||
if(pwm_ini > 1) return 2; //输出端的初始电平错误
|
||
if(pwm_eni > 1) return 2; //中断使能控制错误
|
||
if(pwm_ent2i > 1) return 2; //第二个触发点中断使能控制错误
|
||
if(pwm_ent1i > 1) return 2; //第一个触发点中断使能控制错误
|
||
|
||
EAXSFR(); /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展SFR(XSFR) */
|
||
pPWMxCR = (u8 *)PWMxCR[PWM_id];
|
||
*pPWMxCR = (pwm_eno << 7) | (pwm_ini << 6) | (pwm_eni << 2)| (pwm_ent2i << 1)| pwm_ent1i;
|
||
EAXRAM(); /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展RAM(XRAM) */
|
||
return 0;
|
||
}
|
||
|
||
//========================================================================
|
||
// 函数: u8 PWMPeriodDuty(u8 PWM_id, u16 Period, u16 dutyL, u16 dutyH)
|
||
// 描述: PWM周期, 占空比设置.
|
||
// 参数: PWM_id: PWM通道序号. 取值 0~57
|
||
// dutyL: pwm输出低电平位置, 取值 0~0x7fff.
|
||
// dutyH: pwm输出高电平位置, 取值 0~0x7fff.
|
||
// 返回: 0:正确, 2:错误.
|
||
// 版本: V1.0, 2020-09-22
|
||
//========================================================================
|
||
u8 PWM15Duty(u8 PWM_id,u16 dutyL)
|
||
{
|
||
u16 xdata *pPWMxT1;
|
||
u16 xdata *pPWMxT2;
|
||
|
||
if(PWM_id > PWM57) return 2; //id错误
|
||
if(dutyL > 0x7fff) return 2; //低电平时间设置错误
|
||
//if(dutyH > 0x7fff) return 2; //高电平时间设置错误
|
||
|
||
EAXSFR(); /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展SFR(XSFR) */
|
||
pPWMxT1 = (u16 *)PWMxT1[PWM_id];
|
||
*pPWMxT1 = dutyL & 0x7fff;
|
||
|
||
pPWMxT2 = (u16 *)PWMxT2[PWM_id];
|
||
*pPWMxT2 = 0x0000 & 0x7fff;
|
||
EAXRAM(); /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展RAM(XRAM) */
|
||
return 0;
|
||
}
|
||
|
||
u8 qPWM15Duty(u8 PWM_id,u16 dutyL, u16 dutyH)
|
||
{
|
||
u16 xdata *pPWMxT1;
|
||
u16 xdata *pPWMxT2;
|
||
|
||
if(PWM_id > PWM57) return 2; //id错误
|
||
if(dutyL > 0x7fff) return 2; //低电平时间设置错误
|
||
if(dutyH > 0x7fff) return 2; //高电平时间设置错误
|
||
|
||
EAXSFR(); /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展SFR(XSFR) */
|
||
pPWMxT1 = (u16 *)PWMxT1[PWM_id];
|
||
*pPWMxT1 = dutyL & 0x7fff;
|
||
|
||
pPWMxT2 = (u16 *)PWMxT2[PWM_id];
|
||
*pPWMxT2 = dutyH & 0x7fff;
|
||
EAXRAM(); /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展RAM(XRAM) */
|
||
return 0;
|
||
}
|
||
//========================================================================
|
||
// 函数: u8 PWMOutputSet(u8 PWM_id, u8 pwm_hldl, u8 pwm_hldh)
|
||
// 描述: PWM通道控制寄存器设置.
|
||
// 参数: PWM_id: PWM通道序号. 取值 0~57
|
||
// pwm_hldl: pwm强制输出低电平控制位, 0正常输出, 1强制输出低电平.
|
||
// pwm_hldh: pwm强制输出高电平控制位, 0正常输出, 1强制输出高电平.
|
||
// 返回: 0:正确, 2:错误.
|
||
// 版本: V1.0, 2020-09-22
|
||
//========================================================================
|
||
u8 PWMLevelSet(u8 PWM_id, u8 pwm_hldl, u8 pwm_hldh)
|
||
{
|
||
u8 xdata *pPWMxHLD;
|
||
|
||
if(PWM_id > PWM57) return 2; //id错误
|
||
if(pwm_hldh > 1) return 2; //输出使能错误
|
||
if(pwm_hldl > 1) return 2; //输出端的初始电平错误
|
||
|
||
EAXSFR(); /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展SFR(XSFR) */
|
||
pPWMxHLD = (u8 *)PWMxHLD[PWM_id];
|
||
*pPWMxHLD = (pwm_hldh << 1) | pwm_hldl;
|
||
EAXRAM(); /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展RAM(XRAM) */
|
||
return 0;
|
||
}
|
||
|
||
//========================================================================
|
||
// 函数: void PWM15_Init(u8 PWM_id, PWM15_InitTypeDef *PWMx)
|
||
// 描述: 15位增强型PWM初始化程序.
|
||
// 参数: PWM_id: PWM组号. 取值 PWM0,PWM1,PWM2,PWM3,PWM4,PWM5
|
||
// PWMx: 结构参数,请参考头文件里的定义.
|
||
// 返回: none.
|
||
// 版本: V1.0, 2020-09-22
|
||
//========================================================================
|
||
void PWM15_Init(u8 PWM_id, PWM15_InitTypeDef *PWMx)
|
||
{
|
||
if(PWM_id > PWM5) return; //id错误
|
||
|
||
EAXSFR(); /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展SFR(XSFR) */
|
||
if(PWM_id == PWM0)
|
||
{
|
||
if(PWMx->PWM_Enable == ENABLE) PWM15_PWM0_Enable(); //使能PWM0
|
||
else PWM15_PWM0_Disable(); //关闭PWM0
|
||
PWM0_PS_Set(PWMx->PWM_Clock_PS); //系统时钟分频参数, 0~15
|
||
PWM0C = PWMx->PWM_Period & 0x7fff;
|
||
if(PWMx->PWM_Counter == ENABLE) PWM15_Counter0_Enable(); //使能计数器
|
||
else PWM15_Counter0_Disable(); //关闭计数器
|
||
}
|
||
|
||
if(PWM_id == PWM1)
|
||
{
|
||
if(PWMx->PWM_Enable == ENABLE) PWM15_PWM1_Enable(); //使能PWM1
|
||
else PWM15_PWM1_Disable(); //关闭PWM1
|
||
PWM1_PS_Set(PWMx->PWM_Clock_PS); //系统时钟分频参数, 0~15
|
||
PWM1C = PWMx->PWM_Period & 0x7fff;
|
||
if(PWMx->PWM_Counter == ENABLE) PWM15_Counter1_Enable(); //使能计数器
|
||
else PWM15_Counter1_Disable(); //关闭计数器
|
||
}
|
||
|
||
if(PWM_id == PWM2)
|
||
{
|
||
if(PWMx->PWM_Enable == ENABLE) PWM15_PWM2_Enable(); //使能PWM2
|
||
else PWM15_PWM2_Disable(); //关闭PWM2
|
||
PWM2_PS_Set(PWMx->PWM_Clock_PS); //系统时钟分频参数, 0~15
|
||
PWM2C = PWMx->PWM_Period & 0x7fff;
|
||
if(PWMx->PWM_Counter == ENABLE) PWM15_Counter2_Enable(); //使能计数器
|
||
else PWM15_Counter2_Disable(); //关闭计数器
|
||
}
|
||
|
||
if(PWM_id == PWM3)
|
||
{
|
||
if(PWMx->PWM_Enable == ENABLE) PWM15_PWM3_Enable(); //使能PWM3
|
||
else PWM15_PWM3_Disable(); //关闭PWM3
|
||
PWM3_PS_Set(PWMx->PWM_Clock_PS); //系统时钟分频参数, 0~15
|
||
PWM3C = PWMx->PWM_Period & 0x7fff;
|
||
if(PWMx->PWM_Counter == ENABLE) PWM15_Counter3_Enable(); //使能计数器
|
||
else PWM15_Counter3_Disable(); //关闭计数器
|
||
}
|
||
|
||
if(PWM_id == PWM4)
|
||
{
|
||
if(PWMx->PWM_Enable == ENABLE) PWM15_PWM4_Enable(); //使能PWM4
|
||
else PWM15_PWM4_Disable(); //关闭PWM4
|
||
PWM4_PS_Set(PWMx->PWM_Clock_PS); //系统时钟分频参数, 0~15
|
||
PWM4C = PWMx->PWM_Period & 0x7fff;
|
||
if(PWMx->PWM_Counter == ENABLE) PWM15_Counter4_Enable(); //使能计数器
|
||
else PWM15_Counter4_Disable(); //关闭计数器
|
||
}
|
||
|
||
if(PWM_id == PWM5)
|
||
{
|
||
if(PWMx->PWM_Enable == ENABLE) PWM15_PWM5_Enable(); //使能PWM5
|
||
else PWM15_PWM5_Disable(); //关闭PWM5
|
||
PWM5_PS_Set(PWMx->PWM_Clock_PS); //系统时钟分频参数, 0~15
|
||
PWM5C = PWMx->PWM_Period & 0x7fff;
|
||
if(PWMx->PWM_Counter == ENABLE) PWM15_Counter5_Enable(); //使能计数器
|
||
else PWM15_Counter5_Disable(); //关闭计数器
|
||
}
|
||
EAXRAM(); /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展RAM(XRAM) */
|
||
}
|
||
|
||
|
||
//========================================================================
|
||
// 函数: void PWM0_Handler (void) interrupt PWM0_VECTOR
|
||
// 描述: PWM0中断处理程序.
|
||
// 参数: None
|
||
// 返回: none.
|
||
// 版本: V1.0, 2020-10-13
|
||
//========================================================================
|
||
void PWM0_Handler (void) interrupt PWM0_VECTOR
|
||
{
|
||
char store;
|
||
store = P_SW2;
|
||
P_SW2 |= 0x80;
|
||
|
||
if(PWMCFG01 & 0x08) //PWM0中断
|
||
{
|
||
PWMCFG01 &= ~0x08; //清PWM0中断标志
|
||
// TODO: 在此处添加用户代码
|
||
}
|
||
if(PWM0IF)
|
||
{
|
||
PWM0IF = 0;
|
||
P27 = ~P27;
|
||
}
|
||
P_SW2 = store;
|
||
}
|
||
//========================================================================
|
||
// 函数: void PWM1_Handler (void) interrupt PWM1_VECTOR
|
||
// 描述: PWM1中断处理程序.
|
||
// 参数: None
|
||
// 返回: none.
|
||
// 版本: V1.0, 2020-10-13
|
||
//========================================================================
|
||
void PWM1_Handler (void) interrupt PWM1_VECTOR
|
||
{
|
||
char store;
|
||
store = P_SW2;
|
||
P_SW2 |= 0x80;
|
||
|
||
if(PWMCFG01 & 0x80) //PWM1中断
|
||
{
|
||
PWMCFG01 &= ~0x80; //清PWM1中断标志
|
||
// TODO: 在此处添加用户代码
|
||
}
|
||
if(PWM1IF)
|
||
{
|
||
PWM1IF = 0;
|
||
P26 = ~P26;
|
||
}
|
||
P_SW2 = store;
|
||
}
|
||
//========================================================================
|
||
// 函数: void PWM2_Handler (void) interrupt PWM2_VECTOR
|
||
// 描述: PWM2中断处理程序.
|
||
// 参数: None
|
||
// 返回: none.
|
||
// 版本: V1.0, 2020-10-13
|
||
//========================================================================
|
||
void PWM2_Handler (void) interrupt PWM2_VECTOR
|
||
{
|
||
char store;
|
||
store = P_SW2;
|
||
P_SW2 |= 0x80;
|
||
|
||
if(PWMCFG23 & 0x08) //PWM2中断
|
||
{
|
||
PWMCFG23 &= ~0x08; //清PWM2中断标志
|
||
// TODO: 在此处添加用户代码
|
||
}
|
||
if(PWM2IF)
|
||
{
|
||
PWM2IF = 0;
|
||
P25 = ~P25;
|
||
}
|
||
P_SW2 = store;
|
||
}
|
||
//========================================================================
|
||
// 函数: void PWM3_Handler (void) interrupt PWM3_VECTOR
|
||
// 描述: PWM3中断处理程序.
|
||
// 参数: None
|
||
// 返回: none.
|
||
// 版本: V1.0, 2020-10-13
|
||
//========================================================================
|
||
void PWM3_Handler (void) interrupt PWM3_VECTOR
|
||
{
|
||
char store;
|
||
store = P_SW2;
|
||
P_SW2 |= 0x80;
|
||
|
||
if(PWMCFG23 & 0x80) //PWM3中断
|
||
{
|
||
PWMCFG23 &= ~0x80; //清PWM3中断标志
|
||
// TODO: 在此处添加用户代码
|
||
}
|
||
if(PWM3IF)
|
||
{
|
||
PWM3IF = 0;
|
||
P24 = ~P24;
|
||
}
|
||
P_SW2 = store;
|
||
}
|
||
//========================================================================
|
||
// 函数: void PWM4_Handler (void) interrupt PWM4_VECTOR
|
||
// 描述: PWM4中断处理程序.
|
||
// 参数: None
|
||
// 返回: none.
|
||
// 版本: V1.0, 2020-10-13
|
||
//========================================================================
|
||
void PWM4_Handler (void) interrupt PWM4_VECTOR
|
||
{
|
||
char store;
|
||
store = P_SW2;
|
||
P_SW2 |= 0x80;
|
||
|
||
if(PWMCFG45 & 0x08) //PWM4中断
|
||
{
|
||
PWMCFG45 &= ~0x08; //清PWM4中断标志
|
||
// TODO: 在此处添加用户代码
|
||
}
|
||
if(PWM4IF)
|
||
{
|
||
PWM4IF = 0;
|
||
P23 = ~P23;
|
||
}
|
||
P_SW2 = store;
|
||
}
|
||
//========================================================================
|
||
// 函数: void PWM5_Handler (void) interrupt PWM5_VECTOR
|
||
// 描述: PWM5中断处理程序.
|
||
// 参数: None
|
||
// 返回: none.
|
||
// 版本: V1.0, 2020-10-13
|
||
//========================================================================
|
||
//void PWM5_Handler (void) interrupt PWM5_VECTOR //中断向量号超过31,可借助其它中断号跳转,方法详见规格书介绍
|
||
//{
|
||
// if(PWMCFG45 & 0x80) //PWM5中断
|
||
// {
|
||
// PWMCFG45 &= ~0x80; //清PWM5中断标志
|
||
// // TODO: 在此处添加用户代码
|
||
// }
|
||
//}
|