8ch_pwm.c
来自「在普通单片现机上用软件模拟实现高速8路8位PWM输出」· C语言 代码 · 共 96 行
C
96 行
///////////////////////////////////////////////////////////////////////////////
//C的8路PWM变量定义和中断处理程序,初始化和如何改变PWM的值自行处理.
//
//
//
//
//
//
//
//
//
//timer0中断在12T的为40us,1T~6T的可以跑20us
//
//
//
//
//
//
//
//
//
//在普通单片现机上用软件模拟实现高速8路8位PWM输出,实现软件扩展技术
//
//
//
//
//
//
//
//
//
//
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
sbit P_PWM0 = P1^0; //定义PWM1输出的脚位,这里使用MCS-51单片机的P1口
sbit P_PWM1 = P1^1;//定义PWM1输出的脚位,这里使用MCS-51单片机的P1口
sbit P_PWM2 = P1^2;//定义PWM1输出的脚位,这里使用MCS-51单片机的P1口
sbit P_PWM3 = P1^3;//定义PWM1输出的脚位,这里使用MCS-51单片机的P1口
sbit P_PWM4 = P1^4;//定义PWM1输出的脚位,这里使用MCS-51单片机的P1口
sbit P_PWM5 = P1^5;//定义PWM1输出的脚位,这里使用MCS-51单片机的P1口
sbit P_PWM6 = P1^6;//定义PWM1输出的脚位,这里使用MCS-51单片机的P1口
sbit P_PWM7 = P1^7;//定义PWM1输出的脚位,这里使用MCS-51单片机的P1口
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
uchar PWM_DUTY,PWM0,PWM1,PWM2,PWM3,PWM4,PWM5,PWM6,PWM7; //PWM0~PWM7 为0至7路PWM的宽度值
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/**********************************************/
void timer0 (void) interrupt 1
{
if(++PWM_DUTY == 0) P1 = 0xff;
if(PWM_DUTY == PWM0) P_PWM0 = 0;
if(PWM_DUTY == PWM1) P_PWM1 = 0;
if(PWM_DUTY == PWM2) P_PWM2 = 0;
if(PWM_DUTY == PWM3) P_PWM3 = 0;
if(PWM_DUTY == PWM4) P_PWM4 = 0;
if(PWM_DUTY == PWM5) P_PWM5 = 0;
if(PWM_DUTY == PWM6) P_PWM6 = 0;
if(PWM_DUTY == PWM7) P_PWM7 = 0;
}
///////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?