pwm调制程序.c

来自「AT89S52单片机程序50例(00-50)」· C语言 代码 · 共 60 行

C
60
字号
//实验名称  PWM调制程序
//实验说明  key(接于P0.0)用来控制脉宽的高电平时间,可以在P2.0引脚接一个LED做测试。控制灯的亮度。

#include <reg52.h>  //相应单片机头文件
 
#define CIRCLE 10   //CIRCLE=10

void pwmkey(void);  //声明函数pwmkey

unsigned char count=1,last;

sbit LED=P1^0;
sbit KEY=P3^0;

//主程序
void main(void)  
{
	EA=1;   //CPU开中断
    ET0=1;  //开T0溢出中断
    TH0=(65536-1000)/256;  //TH0=252
    TL0=(65536-1000)%256;  //TL0=24
    TR0=1;    //启动T0工作
    count=1;  //初始化count
    last=1;   //初始化last
    while(1)
    {
    	pwmkey();
    }
}

//pwmkey函数定义
void pwmkey(void)
{
	char old=0 ,new=0;
	while(1)
	{
		new=KEY;
		if(new&&!old)  //new=1且old=0时,last加1
		last++;
		if(last>CIRCLE)  //new=0且old=0(或者new=1),last>CIRCLE时,last=1
		last=1;
		old=new;  //否则,old=new
	}
}

//T0中断服务子程序
void into(void) interrupt 1
{
	count++;
    if(count>CIRCLE) 
    {
    	count=1;
    }
    if(count<=last)
    LED=0;
    else
    LED=1;
    TH0=(65536-1000)/256;
    TL0=(65536-1000)%256;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?