/*------------------------------------------------------------------*/
/* --- STC MCU International Limited -------------------------------*/
/* --- STC 1T Series MCU Programme Demo ----------------------------*/
/* --- Fax: 86-755-82944243 ----------------------------------------*/
/* --- Tel: 86-755-82948412 ----------------------------------------*/
/* --- Web: www.STCMCU.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the */
/* article, please specify in which data and procedures from STC */
/*------------------------------------------------------------------*/
/* 本程序经过测试完全正常, 不提供电话技术支持, 如不能理解, 请自行补充相关基础. */
/************* 本程序功能说明 **************
两路PWM测试.
*********************************************/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define PCA_IDLE_DISABLE 0 //1: MCU在IDLE模式时禁止PCA工作。 0: MCU在IDLE模式时允许PCA工作。
#define PCA_SOURCE_SELECT 4 //选择PCA的基准时钟源。
//0:系统时钟Fosc/12。
//1:系统时钟Fosc/2。
//2:定时器0的溢出。
//3:ECI/P3.4脚的外部时钟输入(最大=Fosc/2)。
//4:系统时钟Fosc。
//5:系统时钟Fosc/4。
//6:系统时钟Fosc/6。
//7:系统时钟Fosc/8。
sfr AUXR1 = 0xA2;
sfr AUXR = 0x8E;
sfr CCON = 0xD8;
sfr CMOD = 0xD9;
sfr CCAPM0 = 0xDA; //PCA module 0 work mode
sfr CCAPM1 = 0xDB; //PCA module 1 work mode
sfr CL = 0xE9; //PCA counter
sfr CCAP0L = 0xEA; //PCA模块0的捕捉/比较寄存器低8位。
sfr CCAP1L = 0xEB; //PCA模块1的捕捉/比较寄存器低8位。
sfr PCA_PWM0 = 0xF2; //PCA模块0 PWM寄存器。
sfr PCA_PWM1 = 0xF3; //PCA模块1 PWM寄存器。
sfr CH = 0xF9;
sfr CCAP0H = 0xFA; //PCA模块0的捕捉/比较寄存器高8位。
sfr CCAP1H = 0xFB; //PCA模块1的捕捉/比较寄存器高8位。
sbit CCF0 = CCON^0; //PCA 模块0中断标志,由硬件置位,必须由软件清0。
sbit CCF1 = CCON^1; //PCA 模块1中断标志,由硬件置位,必须由软件清0。
sbit CR = CCON^6; //1: 允许PCA计数器计数,必须由软件清0。
sbit CF = CCON^7; //PCA计数器溢出(CH,CL由FFFFH变为0000H)标志。PCA计数器溢出后由硬件置位,必须由软件清0。
#define PWM0_NORMAL() PCA_PWM0 = 0 //PWM0正常输出(默认)
#define PWM0_OUT_0() PCA_PWM0 = 3 //PWM0一直输出0
#define PWM1_NORMAL() PCA_PWM1 = 0 //PWM1正常输出(默认)
#define PWM1_OUT_0() PCA_PWM1 = 3 //PWM1一直输出0
/************* 本地函数声明 **************/
uchar pwm0,pwm1;
void main(void)
{
uint i;
AUXR1 |= (1<<6); //PCA 从P1口切换到P4.2 P4.3
pwm0 = 128; // PWM0 初始值
pwm1 = 64; // PWM1 初始值
CCAP0H = pwm0; //set PWM wide
CCAPM0 = 0x42; //0x42 Setup PCA module 0 in PWM mode
CCAP1H = pwm1; //set PWM wide
CCAPM1 = 0x42; //0x42 Setup PCA module 1 in PWM mode
CMOD = (PCA_IDLE_DISABLE << 7) | (PCA_SOURCE_SELECT << 1); //初始化PCA模式寄存器。
CL = 0x00; //clear PCA counter
CH = 0x00;
CR = 1; //Start PCA counter
while (1)
{
for(i=0; i<30000; i++) ; //延时一下
pwm0++;
pwm1++;
CCAP0H = pwm0; //set PWM wide
CCAP1H = pwm1; //set PWM wide
}
}
STC12C5A60S2-两路PWM测试.zip_STC12单片机_clc_stc12c5a60s2 PWM_两路 PWM_两
版权申诉
71 浏览量
2022-09-21
22:07:50
上传
评论
收藏 4KB ZIP 举报
刘良运
- 粉丝: 66
- 资源: 1万+
最新资源
- MyBatis进阶技巧:探索动态SQL的无限可能.md
- HM2300C-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HM2300B-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 员工解除劳动合同申请表.pdf
- 物模块模型代码,前往设计物模块所属
- mybatis动态sql(使用<where>标签来处理多个查询条件)
- Java面试手册,助力大家面试过五关斩六将,面试成功
- HITK0303MP-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- mybatis动态sql之xml增删改查批量操作示例EmpMapper.xml
- C/C++内存检测工具Sanitizers
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈