头像-237859

WHTwht1998

个人成就

获得 4 次赞

帮助过2人

如何用单片机产生一个100KHZ的方波,占空比50%。

100KHz还是100Hz100KHz的话要10us就要进入一次中断,我给你一个51单片机的程序,占空比是50%的#include <reg52.h>unsigned char PWM_COUNT;    //计数unsigned char PWM_VLAUE;    //占空比比对值sbit LED = P1^0;void Timer0_init(){    TMOD=0x02;          //模式设置,00010000,定时器0,工作于模式2(M1=1,M0=0)    TH0=0xf6;               //定时器溢出值设置,每隔10us发起一次中断。    TL0=0Xf6;    TR0=1;                  //定时器0开始计时    ET0=1;                  //开定时器0中断    EA=1;                       //开总中断}void Time0Inretrupt() interrupt 1{       PWM_COUNT++;    if(PWM_COUNT == PWM_VLAUE)      //判断是否到了点亮LED的时候        LED = 0;                    //点亮LED    if(PWM_COUNT == 10)             //当前周期结束    {        LED = 1;                    //熄灭LED        PWM_COUNT = 1;              //重新计时    }   }void main(){    PWM_COUNT = 1;    PWM_VLAUE = 5;      //总量为10,占空比为50%的话,令PWM_VLAUE等于5    LED = 1;                  //默认LED熄灭       Timer0_init()            //定时器0初始化    while(1);}​