栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【STC8学习笔记】STC8A8K64S4A12配置PCA

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【STC8学习笔记】STC8A8K64S4A12配置PCA

管脚图
我使用的是LQFP48封装的为例子

相关功能引脚说明见芯片手册P35页

例程代码

#include 

//测试工作频率为11.0592MHz

//数据类型宏定义
#define uchar unsigned char
#define uint unsigned int

//PCA输入时钟频率宏定义
#define PCA_Clock12 	0x00	//PCA输入时钟源为系统时钟/12
#define PCA_Clock2		0x02	//PCA输入时钟源为系统时钟/2
#define PCA_ClockTimer	0x04	//PCA输入时钟源为定时器溢出脉冲
#define PCA_ClockECL	0x06	//PCA输入时钟源为ECL脚输入时钟
#define PCA_Clock		0x08	//PCA输入时钟源为系统时钟
#define PCA_Clock4		0x0a	//PCA输入时钟源为系统时钟/4
#define PCA_Clock6		0x0c	//PCA输入时钟源为系统时钟/6
#define PCA_Clock8		0x0e	//PCA输入时钟源为系统时钟/8

//PCA启动、停止计数命令宏定义
#define PCA_START		1		//PCA启动计数
#define PCA_STOP		0		//PCA停止计数

//PCA模块PWM位数控制宏定义
#define PCA_PWM6_EBSn	0x80	//PCA模块输出6位PWM控制位
#define PCA_PWM7_EBSn	0x40	//PCA模块输出7位PWM控制位
#define PCA_PWM8_EBSn	0x00	//PCA模块输出8位PWM控制位


//PCA时钟初始化
void PCA_ClockInit(void)
{
	CCON = 0x00;
    CMOD = PCA_Clock;	//设置PCA时钟
    CL = 0x00;
    CH = 0x00;
}

//PCA模块0PWM初始化
void PCA0_PWM_Init(void)
{
	PCA_ClockInit();
	CCAPM0 = 0x42;				//PCA模块0为PWM工作模式
    PCA_PWM0 = PCA_PWM6_EBSn;
    CCAP0L = 0x00;
    CCAP0H = 0x00;
}

//PCA模块1PWM初始化
void PCA1_PAM_Init(void)
{
	PCA_ClockInit();
	CCAPM1 = 0x42;				//PCA模块1为PWM工作模式
    PCA_PWM1 = PCA_PWM7_EBSn;	//PCA模块1输出7位PWM
    CCAP1L = 0x00;
    CCAP1H = 0x00;
}

//PCA模块2PWM初始化
void PCA2_PAM_Init(void)
{
	PCA_ClockInit();
	CCAPM2 = 0x42;				//PCA模块2为PWM工作模式
    PCA_PWM2 = PCA_PWM8_EBSn;	//PCA模块2输出8位PWM
    CCAP2L = 0x00;
    CCAP2H = 0x00;
}


void PCA0_PWM_Set(uint pwm)
{
	CCAP0L = pwm;
	CCAP0H = pwm;
}


void PCA1_PWM_Set(uint pwm)
{
	CCAP1L = pwm;
    CCAP1H = pwm;
}


void PCA2_PWM_Set(uint pwm)
{
	CCAP2L = pwm;
    CCAP2H = pwm;
}


//启动或停止PCA计数器
//输入PCA_START启动PCA计数器,输入PCA_STOP停止PCA计数器
void PCA_Control(bit i)
{
	CR = i;
}

void main()
{
	PCA0_PWM_Init();		//PCA模块0 PWM工作模式初始化
	PCA0_PWM_Set(0x20);		//设置占空比50%
	
	PCA1_PAM_Init();		//PCA模块1 PWM工作模式初始化
	PCA1_PWM_Set(0x40);		//设置占空比50%
	
	PCA2_PAM_Init();		//PCA模块2 PWM工作模式初始化
	PCA2_PWM_Set(0x80);		//设置占空比50%

	PCA_Control(PCA_START);		//启动PCA计数器
    while (1);
}

端口PWM示波器扫描结果
P1.7

P1.6
P1.5

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780084.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号