//##############################################################
//
// 实 验 名 称: 两路PWM发生器
//
// 实 验 功 能: 本单片机PWM信号主要用于舵机控制
// PWM信号周期为20ms,正脉冲在0.5ms到2.5ms之间可调
//
// 实验硬件环境: 所有程序均在"亿唯电子"公司Mini-EV51单片机开发板(二代)上测试成功,
// 主控芯片: STC公司的 STC12C5A16S2
// 晶振频率: 11.0592MHz
//
// 更多程序下载>>亿唯电子:www.evmcu.net
//
//##############################################################
#include<STC12C5A16S2.H>
#include<intrins.h>
sbit p13=P1^3;
sbit p14=P1^4;
unsigned char PWM_wide[2]={0,0}; // 数值从0到180
void delay_ms(unsigned int x) // 延时毫秒级
{
unsigned int a=0,b=0,c=0;
for(a=x;a>0;a--)
for(b=5;b>0;b--)
for(c=128;c>0;c--);
}
void PWM_initial()//PWM输出初始化(默认输出全为高电平)
{
CMOD=0x05; //允许PCA溢出中断
CCAPM0=0x4c; //用于设定工作方式
CCAPM1=0x4c;
CH=0xf8; //PCA计时器高八位
CL=0xf8; //PCA计时器低八位
CCAP0H=0xf9;
CCAP0L=0x25;
CCAP1H=0xf9;
CCAP1L=0x25;
EA=1;
CLK_DIV=0x00; //系统工作时钟分频设定
AUXR=0x80; //将定时器T0、T1速度配置(定时器T0速度都为原来的12倍)
TMOD=0x22; //将T0定时器作为PCA的时钟源
TH0=0x85;
TL0=0x85;
TR0=1;
CR=1; //启动PCA计数器
}
void main()
{
PWM_initial();
while(1)
{
PWM_wide[0]=30;// PWM输出引脚为P1.3
PWM_wide[1]=60;// PWM输出引脚为P1.4
delay_ms(2000);
PWM_wide[0]=90;
PWM_wide[1]=120;
delay_ms(2000);
}
}
void PWM_OUT()interrupt 7
{
if(CF==1)
{
p13=1;
p14=1;
CL=0xfa; //PCA计时器低八位
CH=0xf8; //PCA计时器低八位
CCAP0L=39+PWM_wide[0];
CCAP0H=0xf9;
CCAP1L=39+PWM_wide[1];
CCAP1H=0xf9;
}
CF=0;
}
pwm.zip_pwm_stc89 pwm_stc89c51 pwm
版权申诉
34 浏览量
2022-09-24
19:10:15
上传
评论
收藏 9KB ZIP 举报
weixin_42651887
- 粉丝: 79
- 资源: 1万+
最新资源
- 以简单、易用、高性能为目标、开源的时序数据库,支持Linux及Windows, Time Series Database.zip
- python-leetcode面试题解之第198题打家劫舍-题解.zip
- python-leetcode面试题解之第191题位1的个数-题解.zip
- python-leetcode面试题解之第186题反转字符串中的单词II-题解.zip
- 一个基于python的web后端高性能开发框架,下载可用
- python-leetcode面试题解之第179题最大数-题解.zip
- python-leetcode面试题解之第170题两数之和III数据结构设计-题解.zip
- python-leetcode面试题解之第168题Excel表列名称-题解.zip
- python-leetcode面试题解之第167题两数之和II输入有序数组-题解.zip
- python-leetcode面试题解之第166题分数到小数-题解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈