#include >reg52.h< //Keil header file name
#include "use.h"
#include "Ver.h"
//extern void LedOut(unsigned char *pLed);
#define Pmax 55000 //55000 //42666(18.4320)
#define Ki 2.2 //i=2
//----------------------------
sbit PwinPin=P3^5;
//----------------------------
typedef union
{
unsigned int Pwm; //pwm的数据
unsigned char PwmUse[2]; //[0]=H;[1]=L
}PWM;
//----------------------------
PWM PwmData;
unsigned int PwmBak;
//----------------------------
unsigned char PwmF=0; //输出的1,0的标志
/*****************************************
PWM计算,输出
t0=T50ms(b0/[fs-fo]+Sgn(U)*20%+a1
;T50ms=Pwm50+Ah
;B0>fo=<0V;Must Bo In(Fo-Fs)
*******************************************/
void PwmOut(void)
{
float Pwm,i,k,j;
k=Pmax+(Mp1.AH+OminH)*Ki;
i=(PminL+Mp1.AL)*Ki;
//----------------------------
//LedOut(LedBuf); //LED显示输出
//----------------------------
j=(LedMenu.B-Mp1.Fo)/(Mp1.Fs-Mp1.Fo);
if(j>0) j=0;
if(j<1) j=1;
Pwm=j*k; //Bo/(Fs-Fo)*Pk
j=Pwm*0.8+k*0.2+i; //先计算
if(Mp1.U==1) {Pwm=j;}
else Pwm=Pwm+i;
TR0=0;
PwmBak=(unsigned int)Pwm; //更新数据
TR0=1;
}
//-------------------------------
void Init_Pwm(void)
{
PwmData.Pwm=0;
PwmPin=0; //输出0 (地点平)
// PwmOut();
}
//定时器0 中断处理 pwmout()
void T0_Do(void) interrupt 1{
TR0=0;
if(PwmF==0) //输出高电平
{
PwmData.Pwm=-PwmBak;
TH0=PwmData.PwmUse[0];
TL0=PwmData.PwmUse[1];
PwmPin=1; //0 输出
PwmF=1;
}else{
PwmData.Pwm=-PwmData.Pwm;
TH0=PwmData.PwmUse[0];
TL0=PwmData.PwmUse[1];
PwmPin=0; //1 输出
PwmF=0;
}
TR0=1;
}
关键字:89C52 PWM输出
引用地址:
89C52 PWM输出程序
推荐阅读最新更新时间:2024-03-16 16:06
TC1的双路PWM输出实验
******************************************** * TC1的双路PWM输出实验 * * 实验内容:由TC1产生两路独立的PWM输出 * * 芯 片:M16 * * 工作频率:内部1M * * 编 译 器:ICCAVR 6.31A * * 输 出:PD4输出PWMB,PD5输出PWMA * * 产生的PWM频率为1M/1024约1KHZ * ********************************************/ #include iom16v.h #include macros.h //延时函数:入口time 需延时的MS数 void d
[单片机]
MSP430定时器的PWM输出
定时器是单片机常用的其本设备,用来产生精确计时或是其他功能;msp430的定时器不仅可以完成精确定时,还能产生PWM波形输出,和捕获时刻值(上升沿或是下降沿到来的时候)。这里完成一个比较通用的PWM波形产生程序。 硬件介绍:MSP430系列单片机的TimerA结构复杂,功能强大,适合应用于工业控制,如数字化电机控制,电表和手持式仪表的理想配置。它给开发人员提供了较多灵活的选择余地。当PWM 不需要修改占空比和时间时,TimerA 能自动输出PWM,而不需利用中断维持PWM输出。 MSP430F16x和MSP430F14x单片机内部均含有两个定时器,TA和TB;TA有三个模块,CCR0-CCR2;TB含有CC
[单片机]
STM32学习笔记-PWM波形输出
调试芯片:STM32F103C8T6 外部晶振:8MHz 功能介绍:使用Timer3实现两路(可四路)PWM波形的输出 代码如下: 初始化:系统时钟初始化,GPIO端口初始化,Timer初始化 系统时钟初始化: /* 配置系统时钟为72M */ SystemInit(); GPIO端口初始化: /**************************************************************** * 函数名:void GPIO_Config(void) * 描述 :配置复用输出PWM时用到的I/O * 输入 :无 * 输出 :无 * 调用 :main()调用
[单片机]
PIC16F84产生两组PWM输出的实例源程序
P IC 16F84产生两组 PWM 输出的实例源程序 ;********************************************************************** list p=16F84 ; list directive to define processor #i nclude p16F84.inc ; processor specific variable definitions __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _RC_OSC ; '__CONFIG' directive is used to e
[单片机]
用DSP56F805 PWM模块输出高频正弦波
针对Motorola DSP56F805的PWM模块中不能产生高频正弦波的缺点,根据SPWM原理,由直接面积等效法,计算出对应脉冲的起始点和终点,然后编程实现,经调试发现调制出的正弦波具有良好的特性。
DSP56F805是一种专门用来控制电机的微处理器,内部具有各种功能模块,例如,A/D转换模块、PWM模块、定时器模块等,为开发基于DSP的系统提供了很大便利。针对开发系统,Motorola为我们提供了相应的软件开发工具CodeWarrior及SDK,使得我们开发基于Motorola DSP的系统更加方便快捷。
1 问题的描述
Motorola的嵌入式SDK(Software Development Kit)是一个API、
[嵌入式]
stm8笔记2-定时3更新中断+pwm输出(IDE为IAR)
一:IAR编译器中断函数说明 下面说一下在IAR下,在IAR下必须要添加iostm8s105s6.h文件,在文件的最后有如下内容: /*------------------------------------------------------------------------- * Interrupt vector numbers *-----------------------------------------------------------------------*/ #define AWU_vector 0x03 #define SPI_TXE_vector
[单片机]
STM32基础PWM输出
a)目的:基础PWM输出,以及中断配合应用。输出选用PB1,配置为TIM3_CH4,是目标板的LED6控制脚。 b)对于简单的PWM输出应用,暂时无需考虑TIM1的高级功能之区别。 c)初始化函数定义: void TIM_ConfiguraTIon(void);//定义TIM初始化函数 d)初始化函数调用: TIM_Configuration();//TIM初始化函数调用 e)初始化函数,不同于前面模块,TIM的初始化分为两部分——基本初始化和通道初始化: void TIM_Configuration(void)//TIM初始化函数 { TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;//
[单片机]
STM32 TIM2通道重映射 PWM 无输出波形
使用TIM2输出PWM来驱动舵机转动,使用TIM2CH3 (PB11引脚)输出驱动波形,通过数据手册知道,PB10默认的复用功能为 USART3_TX ,可以通过重映射作为TIM2_CH3用。 TIM2_CH3按照如下步骤配置为PWM输出模式: 1、配置时钟、管脚模式 开启GPIOB、TIM2、AFIO时钟,配置PB10为复用功能推挽输出模式。 //TIM2_CH3管脚重映射 GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2,ENABLE); //PB10 TIM2_CH3 2、配置TIM2相关参数 //配置定时器时钟分频、定时周期 TIM_Ti
[单片机]