您的位置 首页 电源

STC单片机怎么完成输出固定的脉冲个数

STC单片机如何实现输出固定的脉冲个数-实现方法:运用PWM输出功能输出一定频率(F)的脉冲,在一定的时间、以一定的频率输出的脉冲个数是确定的。所以根据所要输出的脉冲个数(PlusCount)可以确定输出脉冲的时间(TimePlus)。

完成办法:运用PWM输出功用输出必定频率(F)的脉冲,在必定的时刻、以必定的频率输出的脉冲个数是确认的。所以依据所要输出的脉冲个数(PlusCount)能够确认输出脉冲的时刻(TImePlus)。

TImePlus=PlusCount/F;

守时咱们选用T0的工作方法3,即主动重装形式。

STC单片机怎么完成输出固定的脉冲个数

EA=1

TMOD=0x02;//主动重装形式

AUXR = 0x80;//T0 为12T形式

TH0=TL0=256;

void TImer0() interrupt 1

{

TImeCount++;

if(TimeCount==InitCount)

{

CR = TR0=0;//中止T00; // PLUS STOP

TimeCount=0;

}

}

因而,中止一次的时刻(T)为:256us

脉冲输出方法为:SYSclk/2

因而,F=12M/2/256

所需求中止的次数(InitCount)为,

InitCount=TimeCount/T

=PlusCount/F/T = PlusCount/12M/2/256/256us = PlusCount/6

源代码如下:

#include“stc12cxx.h”

#include “intrins.h”

#define uchar unsigned char

#define uint unsigned int

unsigned long TimeCount=0,InitCount;

void Init()//初始化子程序

{EA=1;

ET0=1;

P1M0 = 0xff;

P1M1 = 0xff; //Set all P1 as Open-Drain mode

TMOD=0x02;//主动重装形式

AUXR = 0x00;//T0 为12T形式

TH0=TL0=256;

}

void PWM_heat(uchar pwm_num)

{

CCON = 0;

CL = 0;

CH = 0;

//CMOD = 0x00; //SYSclk/12

CMOD = 0x02; //SYSclk/2

//CMOD = 0x04; //T0发生

CCAP0H = CCAP0L = pwm_num; //占空比

CCAPM0 = 0x42; //脉宽调理形式

}

void PulsOut(unsigned long PulsCount)

{

InitCount =PulsCount/6;//(PulsCount/23435)*4000;

PWM_heat(0x7f);

TR0=CR = 1; //发动1;//发动T0

}

void main()

{

Init();

PulsOut(234500);

while (1);

{

}

}

void Timer0() interrupt 1

{

TimeCount++;

if(TimeCount==InitCount)

{

CR = TR0=0;//中止T00; // PLUS STOP

TimeCount=0;

}

}
来历;21ic

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/343887.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部