【STC8】PMW波输出

目录

前言

PMW波

使用步骤

1.引入库

2.PWM输出函数

3.主函数

4.效果

总结

前言

学习时发现,STC8A8K64S4A12与STC8A8K64D4,关于PWM波的寄存器有一定差异。差异,就一两个寄存器,源码里注释有了删改一些注释也能用于STC8A8K64S4A12。而且在,keil5里的的文件里,不知道为什么没有STC8A8K64D4里一个关于PWM的寄存器,所以说需要从STC-ISP里下载,当然,我在下面也会打包好。本文讲的时STC8A8K64D4。

PMW波

PMW波输出常用于舵机转动,小车电机调速。本文的目的,快速配置STC8A8K64D4的PWMPMW波输出的寄存器,来输出PWM波。

使用步骤

1.引入库

#include 这个用于输出PWM的库,为了准确性更高,周期暂时有20ms的,占空比,和输出的PIN脚可调,PWM通道一共有8个。关于周期想要其它的话,函数库中也预留有一定空间方便扩展。

#include 这个库主要是用来引脚模式切换,详细的可以看我其它的文章。

#include 
#include 
#include 

2.PWM输出函数

有注释,可以看看。

//PWM输出
//参数cycle:		范围:1~3(周期模式)	作用:周期	1(20ms)  2(暂无)   3(暂无)
//参数pwma:		范围:0~100(%)		作用:占空比
//参数groupn:	范围:				作用:PWM组号
void PMW_Use(unsigned int cyclemod,pwma,unsigned char groupn)
{
	
	unsigned char group,groupnum;
	unsigned int cycle;	//周期
	group=groupn/10;
	groupnum=groupn%10;
	PWMSET = 0x01;		//使能PWM模块	STC8A8K64D4(STC8A8K64S4A12没有使能PWM模块)
	P_SW2 = 0x80;		//特殊寄存器写入打开
	PWMCKS = 0x0f; 		//PWM时钟为系统时钟 
	switch(cyclemod)
	{
		case 1:			
			cycle=13793;//20ms
		break;
		case 2:
		break;
		case 3:
		break;
	}
	PWMC =cycle; 		//设置PWM周期为1000H个PWM时钟
	pwma=(cycle*0.01)*pwma;
	switch(group)
	{
		case 1:
			PWM0T1=pwma; 			//在计数值为100H地方输出低电平 
			PWM0T2=0x00; 			//在计数值为500H地方输出高电平	
			PWM0CR=0x80|(0x18&(0x04<

3.主函数

例如:我们想P20输出一个占空比为50%方波。我们可以这样写。

void main()
{
	GPIO_Mod(20,0);
	PMW_Use(1,50,10);
	while(1);
}

4.效果

【STC8】PMW波输出_第1张图片

【STC8】PMW波输出_第2张图片

 不是很正。能用,赢一半,不要慌。

总结

用到的文件:

链接:https://pan.baidu.com/s/1BKvvtYPxtMRppWdwfujnXg 
提取码:1234 
复制这段内容后打开百度网盘手机App,操作更方便哦

你可能感兴趣的:(STC8模块,c语言,单片机,51单片机)